package com.airlock.iam.login.application.configuration.targetapp;

import com.airlock.iam.flow.api.domain.model.flow.ApplicationId;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.property.StringProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "<p>Configuration of the Application ID.</p>\n<p>In the SPA, this property defines the access path of the respective application. For example:</p>\n<p><tt>/&lt;loginapp-uri&gt;/ui/app/auth/application/access/&lt;APP_ID&gt;</tt></p>",
   displayName = "Application ID"
)
public final class ApplicationIdConfig {
   @StringProperty(description = "The ID of the application.", optional = false, displayName = "ID", maxLength = 30, validationRegex = "[a-z0-9_-]+")
   private String applicationId;
   public static final String APPLICATION_ID_PROPERTY = "applicationId";

   public ApplicationId getId() {
      return ApplicationId.applicationId(this.applicationId);
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public ApplicationIdConfig(String applicationId) {
      this.applicationId = applicationId;
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public static class ApplicationIdConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private String applicationId;

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

      @SuppressFBWarnings(justification = "generated code")
      public ApplicationIdConfig.ApplicationIdConfigBuilder applicationId(String applicationId) {
         this.applicationId = applicationId;
         return this;
      }

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

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "ApplicationIdConfig.ApplicationIdConfigBuilder(applicationId=" + this.applicationId + ")";
      }
   }
}
