package com.airlock.iam.flow.application.configuration.selection.condition;

import com.airlock.iam.flow.api.application.configuration.selection.FlowConditionConfig;
import com.airlock.iam.flow.api.application.configuration.step.StepIdConfig;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.property.PluginProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "Flow condition which evaluates to true if the step identified by the configured step ID has been activated.",
   displayName = "Step Activated"
)
public class StepActivationConditionConfig implements FlowConditionConfig {
   @PluginProperty(description = "ID of this step whose activated state is checked.", optional = false, displayName = "Step ID")
   private StepIdConfig stepId;

   public StepIdConfig getStepId() {
      return this.stepId;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static StepActivationConditionConfig.StepActivationConditionConfigBuilder builder() {
      return new StepActivationConditionConfig.StepActivationConditionConfigBuilder();
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public StepActivationConditionConfig(StepIdConfig stepId) {
      this.stepId = stepId;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class StepActivationConditionConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private StepIdConfig stepId;

      @SuppressFBWarnings(justification = "generated code")
      StepActivationConditionConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public StepActivationConditionConfig.StepActivationConditionConfigBuilder stepId(StepIdConfig stepId) {
         this.stepId = stepId;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StepActivationConditionConfig build() {
         return new StepActivationConditionConfig(this.stepId);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "StepActivationConditionConfig.StepActivationConditionConfigBuilder(stepId=" + this.stepId + ")";
      }
   }
}
