package com.airlock.iam.common.application.configuration;

import com.airlock.iam.common.api.application.configuration.user.UserGroupConditionConfig;
import com.airlock.iam.core.application.configuration.contextdata.ContextDataItemNameConfig;
import com.airlock.iam.plugin.api.annotation.property.PluginProperty;
import com.airlock.iam.plugin.api.annotation.property.StringProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public abstract class AbstractContextDataUserGroupConditionConfig implements UserGroupConditionConfig {
   @StringProperty(
      description = "The name of the user group. May be used in log files and may be displayed in the admin tool.",
      optional = false,
      exampleValues = {"Administrator", "Employee", "Customer", "CertificateUser", "MtanUser"}
   )
   private String groupName;
   @PluginProperty(description = "Name of the context data item to be examined. Make sure the user persister provides the item.", optional = false)
   private ContextDataItemNameConfig contextDataItemName;

   @Override
   public String getName() {
      return this.groupName;
   }

   public ContextDataItemNameConfig getContextDataItemName() {
      return this.contextDataItemName;
   }

   @SuppressFBWarnings(justification = "generated code")
   public AbstractContextDataUserGroupConditionConfig(String groupName, ContextDataItemNameConfig contextDataItemName) {
      this.groupName = groupName;
      this.contextDataItemName = contextDataItemName;
   }

   @SuppressFBWarnings(justification = "generated code")
   public AbstractContextDataUserGroupConditionConfig() {
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setGroupName(String groupName) {
      this.groupName = groupName;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setContextDataItemName(ContextDataItemNameConfig contextDataItemName) {
      this.contextDataItemName = contextDataItemName;
   }
}
