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

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public final class WafSettings {
   private final boolean mustAddCredentialsToSession;
   private final String controlCookieName;
   private final String environmentCookiePrefix;

   private WafSettings(String controlCookieName, String environmentCookiePrefix) {
      this.controlCookieName = controlCookieName;
      this.environmentCookiePrefix = environmentCookiePrefix;
      this.mustAddCredentialsToSession = true;
   }

   public static WafSettings.WafSettingsBuilder builder(String controlCookieName, String environmentCookiePrefix) {
      return new WafSettings(controlCookieName, environmentCookiePrefix).toBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public WafSettings.WafSettingsBuilder toBuilder() {
      return new WafSettings.WafSettingsBuilder()
         .mustAddCredentialsToSession(this.mustAddCredentialsToSession)
         .controlCookieName(this.controlCookieName)
         .environmentCookiePrefix(this.environmentCookiePrefix);
   }

   @SuppressFBWarnings(justification = "generated code")
   public boolean isMustAddCredentialsToSession() {
      return this.mustAddCredentialsToSession;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getControlCookieName() {
      return this.controlCookieName;
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getEnvironmentCookiePrefix() {
      return this.environmentCookiePrefix;
   }

   @SuppressFBWarnings(justification = "generated code")
   public WafSettings(boolean mustAddCredentialsToSession, String controlCookieName, String environmentCookiePrefix) {
      this.mustAddCredentialsToSession = mustAddCredentialsToSession;
      this.controlCookieName = controlCookieName;
      this.environmentCookiePrefix = environmentCookiePrefix;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class WafSettingsBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private boolean mustAddCredentialsToSession;
      @SuppressFBWarnings(justification = "generated code")
      private String controlCookieName;
      @SuppressFBWarnings(justification = "generated code")
      private String environmentCookiePrefix;

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

      @SuppressFBWarnings(justification = "generated code")
      public WafSettings.WafSettingsBuilder mustAddCredentialsToSession(boolean mustAddCredentialsToSession) {
         this.mustAddCredentialsToSession = mustAddCredentialsToSession;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public WafSettings.WafSettingsBuilder controlCookieName(String controlCookieName) {
         this.controlCookieName = controlCookieName;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public WafSettings.WafSettingsBuilder environmentCookiePrefix(String environmentCookiePrefix) {
         this.environmentCookiePrefix = environmentCookiePrefix;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public WafSettings build() {
         return new WafSettings(this.mustAddCredentialsToSession, this.controlCookieName, this.environmentCookiePrefix);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "WafSettings.WafSettingsBuilder(mustAddCredentialsToSession="
            + this.mustAddCredentialsToSession
            + ", controlCookieName="
            + this.controlCookieName
            + ", environmentCookiePrefix="
            + this.environmentCookiePrefix
            + ")";
      }
   }
}
