package com.airlock.iam.common.domain.model.event;

import com.airlock.iam.base.api.domain.model.event.EventType;
import com.airlock.iam.base.api.domain.model.user.UserId;
import com.airlock.iam.base.domain.model.event.EventCreationData;
import com.airlock.iam.common.api.domain.model.event.UserRolesChanged;
import com.airlock.iam.common.api.domain.model.role.Role;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Set;

public final class UserRolesChangedImpl extends AbstractUserEvent implements UserRolesChanged {
   private final Set<Role> oldRoles;
   private final Set<Role> newRoles;

   public UserRolesChangedImpl(EventCreationData eventCreationData, UserId userId, Set<Role> oldRoles, Set<Role> newRoles) {
      super(eventCreationData, "User Roles Changed", userId);
      this.oldRoles = oldRoles;
      this.newRoles = newRoles;
   }

   @Override
   public String displayName() {
      return "User Roles Changed";
   }

   @Override
   public EventType type() {
      return CommonEventTypes.USER_ROLES_CHANGED;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public Set<Role> oldRoles() {
      return this.oldRoles;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public Set<Role> newRoles() {
      return this.newRoles;
   }
}
