package com.airlock.iam.admin.infrastructure.transfer.response;

import com.airlock.iam.admin.application.service.settings.AdminappPageSettings;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.List;
import lombok.NonNull;

public class AdminappSystem {
   @NonNull
   private String instance;
   @NonNull
   private String startPage;
   private boolean recoveryMode;
   private boolean oldConfigEditorEnabled;
   @NonNull
   private String version;
   private String instanceTag;
   @NonNull
   private String defaultLanguage;
   @NonNull
   private List<String> supportedLanguages;
   @NonNull
   private String timeZoneId;
   @NonNull
   private AdminappLicenseOverview license;
   @NonNull
   private AdminappPageSettings settings;
   @NonNull
   private String skin;
   @NonNull
   private String afterLogoutUrl;
   private int maxPageSize;

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

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getInstance() {
      return this.instance;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getStartPage() {
      return this.startPage;
   }

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

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

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getVersion() {
      return this.version;
   }

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

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getDefaultLanguage() {
      return this.defaultLanguage;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public List<String> getSupportedLanguages() {
      return this.supportedLanguages;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getTimeZoneId() {
      return this.timeZoneId;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public AdminappLicenseOverview getLicense() {
      return this.license;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public AdminappPageSettings getSettings() {
      return this.settings;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getSkin() {
      return this.skin;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getAfterLogoutUrl() {
      return this.afterLogoutUrl;
   }

   @SuppressFBWarnings(justification = "generated code")
   public int getMaxPageSize() {
      return this.maxPageSize;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setInstance(@NonNull String instance) {
      if (instance == null) {
         throw new NullPointerException("instance is marked non-null but is null");
      }

      this.instance = instance;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setStartPage(@NonNull String startPage) {
      if (startPage == null) {
         throw new NullPointerException("startPage is marked non-null but is null");
      }

      this.startPage = startPage;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setRecoveryMode(boolean recoveryMode) {
      this.recoveryMode = recoveryMode;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setOldConfigEditorEnabled(boolean oldConfigEditorEnabled) {
      this.oldConfigEditorEnabled = oldConfigEditorEnabled;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setVersion(@NonNull String version) {
      if (version == null) {
         throw new NullPointerException("version is marked non-null but is null");
      }

      this.version = version;
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public void setDefaultLanguage(@NonNull String defaultLanguage) {
      if (defaultLanguage == null) {
         throw new NullPointerException("defaultLanguage is marked non-null but is null");
      }

      this.defaultLanguage = defaultLanguage;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setSupportedLanguages(@NonNull List<String> supportedLanguages) {
      if (supportedLanguages == null) {
         throw new NullPointerException("supportedLanguages is marked non-null but is null");
      }

      this.supportedLanguages = supportedLanguages;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setTimeZoneId(@NonNull String timeZoneId) {
      if (timeZoneId == null) {
         throw new NullPointerException("timeZoneId is marked non-null but is null");
      }

      this.timeZoneId = timeZoneId;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setLicense(@NonNull AdminappLicenseOverview license) {
      if (license == null) {
         throw new NullPointerException("license is marked non-null but is null");
      }

      this.license = license;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setSettings(@NonNull AdminappPageSettings settings) {
      if (settings == null) {
         throw new NullPointerException("settings is marked non-null but is null");
      }

      this.settings = settings;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setSkin(@NonNull String skin) {
      if (skin == null) {
         throw new NullPointerException("skin is marked non-null but is null");
      }

      this.skin = skin;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setAfterLogoutUrl(@NonNull String afterLogoutUrl) {
      if (afterLogoutUrl == null) {
         throw new NullPointerException("afterLogoutUrl is marked non-null but is null");
      }

      this.afterLogoutUrl = afterLogoutUrl;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setMaxPageSize(int maxPageSize) {
      this.maxPageSize = maxPageSize;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof AdminappSystem other)) {
         return false;
      } else {
         if (!other.canEqual(this)) {
            return false;
         }

         if (this.recoveryMode != other.recoveryMode) {
            return false;
         }

         if (this.oldConfigEditorEnabled != other.oldConfigEditorEnabled) {
            return false;
         }

         if (this.maxPageSize != other.maxPageSize) {
            return false;
         }

         Object this$instance = this.instance;
         Object other$instance = other.instance;
         if (this$instance == null ? other$instance == null : this$instance.equals(other$instance)) {
            Object this$startPage = this.startPage;
            Object other$startPage = other.startPage;
            if (this$startPage == null ? other$startPage == null : this$startPage.equals(other$startPage)) {
               Object this$version = this.version;
               Object other$version = other.version;
               if (this$version == null ? other$version == null : this$version.equals(other$version)) {
                  Object this$instanceTag = this.instanceTag;
                  Object other$instanceTag = other.instanceTag;
                  if (this$instanceTag == null ? other$instanceTag == null : this$instanceTag.equals(other$instanceTag)) {
                     Object this$defaultLanguage = this.defaultLanguage;
                     Object other$defaultLanguage = other.defaultLanguage;
                     if (this$defaultLanguage == null ? other$defaultLanguage == null : this$defaultLanguage.equals(other$defaultLanguage)) {
                        Object this$supportedLanguages = this.supportedLanguages;
                        Object other$supportedLanguages = other.supportedLanguages;
                        if (this$supportedLanguages == null ? other$supportedLanguages == null : this$supportedLanguages.equals(other$supportedLanguages)) {
                           Object this$timeZoneId = this.timeZoneId;
                           Object other$timeZoneId = other.timeZoneId;
                           if (this$timeZoneId == null ? other$timeZoneId == null : this$timeZoneId.equals(other$timeZoneId)) {
                              Object this$license = this.license;
                              Object other$license = other.license;
                              if (this$license == null ? other$license == null : this$license.equals(other$license)) {
                                 Object this$settings = this.settings;
                                 Object other$settings = other.settings;
                                 if (this$settings == null ? other$settings == null : this$settings.equals(other$settings)) {
                                    Object this$skin = this.skin;
                                    Object other$skin = other.skin;
                                    if (this$skin == null ? other$skin == null : this$skin.equals(other$skin)) {
                                       Object this$afterLogoutUrl = this.afterLogoutUrl;
                                       Object other$afterLogoutUrl = other.afterLogoutUrl;
                                       return this$afterLogoutUrl == null ? other$afterLogoutUrl == null : this$afterLogoutUrl.equals(other$afterLogoutUrl);
                                    } else {
                                       return false;
                                    }
                                 } else {
                                    return false;
                                 }
                              } else {
                                 return false;
                              }
                           } else {
                              return false;
                           }
                        } else {
                           return false;
                        }
                     } else {
                        return false;
                     }
                  } else {
                     return false;
                  }
               } else {
                  return false;
               }
            } else {
               return false;
            }
         } else {
            return false;
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   protected boolean canEqual(Object other) {
      return other instanceof AdminappSystem;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      result = result * 59 + (this.recoveryMode ? 79 : 97);
      result = result * 59 + (this.oldConfigEditorEnabled ? 79 : 97);
      result = result * 59 + this.maxPageSize;
      Object $instance = this.instance;
      result = result * 59 + ($instance == null ? 43 : $instance.hashCode());
      Object $startPage = this.startPage;
      result = result * 59 + ($startPage == null ? 43 : $startPage.hashCode());
      Object $version = this.version;
      result = result * 59 + ($version == null ? 43 : $version.hashCode());
      Object $instanceTag = this.instanceTag;
      result = result * 59 + ($instanceTag == null ? 43 : $instanceTag.hashCode());
      Object $defaultLanguage = this.defaultLanguage;
      result = result * 59 + ($defaultLanguage == null ? 43 : $defaultLanguage.hashCode());
      Object $supportedLanguages = this.supportedLanguages;
      result = result * 59 + ($supportedLanguages == null ? 43 : $supportedLanguages.hashCode());
      Object $timeZoneId = this.timeZoneId;
      result = result * 59 + ($timeZoneId == null ? 43 : $timeZoneId.hashCode());
      Object $license = this.license;
      result = result * 59 + ($license == null ? 43 : $license.hashCode());
      Object $settings = this.settings;
      result = result * 59 + ($settings == null ? 43 : $settings.hashCode());
      Object $skin = this.skin;
      result = result * 59 + ($skin == null ? 43 : $skin.hashCode());
      Object $afterLogoutUrl = this.afterLogoutUrl;
      return result * 59 + ($afterLogoutUrl == null ? 43 : $afterLogoutUrl.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "AdminappSystem(instance="
         + this.getInstance()
         + ", startPage="
         + this.getStartPage()
         + ", recoveryMode="
         + this.isRecoveryMode()
         + ", oldConfigEditorEnabled="
         + this.isOldConfigEditorEnabled()
         + ", version="
         + this.getVersion()
         + ", instanceTag="
         + this.getInstanceTag()
         + ", defaultLanguage="
         + this.getDefaultLanguage()
         + ", supportedLanguages="
         + this.getSupportedLanguages()
         + ", timeZoneId="
         + this.getTimeZoneId()
         + ", license="
         + this.getLicense()
         + ", settings="
         + this.getSettings()
         + ", skin="
         + this.getSkin()
         + ", afterLogoutUrl="
         + this.getAfterLogoutUrl()
         + ", maxPageSize="
         + this.getMaxPageSize()
         + ")";
   }

   @SuppressFBWarnings(justification = "generated code")
   public AdminappSystem(
      @NonNull String instance,
      @NonNull String startPage,
      boolean recoveryMode,
      boolean oldConfigEditorEnabled,
      @NonNull String version,
      String instanceTag,
      @NonNull String defaultLanguage,
      @NonNull List<String> supportedLanguages,
      @NonNull String timeZoneId,
      @NonNull AdminappLicenseOverview license,
      @NonNull AdminappPageSettings settings,
      @NonNull String skin,
      @NonNull String afterLogoutUrl,
      int maxPageSize
   ) {
      if (instance == null) {
         throw new NullPointerException("instance is marked non-null but is null");
      }

      if (startPage == null) {
         throw new NullPointerException("startPage is marked non-null but is null");
      }

      if (version == null) {
         throw new NullPointerException("version is marked non-null but is null");
      }

      if (defaultLanguage == null) {
         throw new NullPointerException("defaultLanguage is marked non-null but is null");
      }

      if (supportedLanguages == null) {
         throw new NullPointerException("supportedLanguages is marked non-null but is null");
      }

      if (timeZoneId == null) {
         throw new NullPointerException("timeZoneId is marked non-null but is null");
      }

      if (license == null) {
         throw new NullPointerException("license is marked non-null but is null");
      }

      if (settings == null) {
         throw new NullPointerException("settings is marked non-null but is null");
      }

      if (skin == null) {
         throw new NullPointerException("skin is marked non-null but is null");
      }

      if (afterLogoutUrl == null) {
         throw new NullPointerException("afterLogoutUrl is marked non-null but is null");
      }

      this.instance = instance;
      this.startPage = startPage;
      this.recoveryMode = recoveryMode;
      this.oldConfigEditorEnabled = oldConfigEditorEnabled;
      this.version = version;
      this.instanceTag = instanceTag;
      this.defaultLanguage = defaultLanguage;
      this.supportedLanguages = supportedLanguages;
      this.timeZoneId = timeZoneId;
      this.license = license;
      this.settings = settings;
      this.skin = skin;
      this.afterLogoutUrl = afterLogoutUrl;
      this.maxPageSize = maxPageSize;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class AdminappSystemBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private String instance;
      @SuppressFBWarnings(justification = "generated code")
      private String startPage;
      @SuppressFBWarnings(justification = "generated code")
      private boolean recoveryMode;
      @SuppressFBWarnings(justification = "generated code")
      private boolean oldConfigEditorEnabled;
      @SuppressFBWarnings(justification = "generated code")
      private String version;
      @SuppressFBWarnings(justification = "generated code")
      private String instanceTag;
      @SuppressFBWarnings(justification = "generated code")
      private String defaultLanguage;
      @SuppressFBWarnings(justification = "generated code")
      private List<String> supportedLanguages;
      @SuppressFBWarnings(justification = "generated code")
      private String timeZoneId;
      @SuppressFBWarnings(justification = "generated code")
      private AdminappLicenseOverview license;
      @SuppressFBWarnings(justification = "generated code")
      private AdminappPageSettings settings;
      @SuppressFBWarnings(justification = "generated code")
      private String skin;
      @SuppressFBWarnings(justification = "generated code")
      private String afterLogoutUrl;
      @SuppressFBWarnings(justification = "generated code")
      private int maxPageSize;

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

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder instance(@NonNull String instance) {
         if (instance == null) {
            throw new NullPointerException("instance is marked non-null but is null");
         }

         this.instance = instance;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder startPage(@NonNull String startPage) {
         if (startPage == null) {
            throw new NullPointerException("startPage is marked non-null but is null");
         }

         this.startPage = startPage;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder recoveryMode(boolean recoveryMode) {
         this.recoveryMode = recoveryMode;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder oldConfigEditorEnabled(boolean oldConfigEditorEnabled) {
         this.oldConfigEditorEnabled = oldConfigEditorEnabled;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder version(@NonNull String version) {
         if (version == null) {
            throw new NullPointerException("version is marked non-null but is null");
         }

         this.version = version;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder instanceTag(String instanceTag) {
         this.instanceTag = instanceTag;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder defaultLanguage(@NonNull String defaultLanguage) {
         if (defaultLanguage == null) {
            throw new NullPointerException("defaultLanguage is marked non-null but is null");
         }

         this.defaultLanguage = defaultLanguage;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder supportedLanguages(@NonNull List<String> supportedLanguages) {
         if (supportedLanguages == null) {
            throw new NullPointerException("supportedLanguages is marked non-null but is null");
         }

         this.supportedLanguages = supportedLanguages;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder timeZoneId(@NonNull String timeZoneId) {
         if (timeZoneId == null) {
            throw new NullPointerException("timeZoneId is marked non-null but is null");
         }

         this.timeZoneId = timeZoneId;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder license(@NonNull AdminappLicenseOverview license) {
         if (license == null) {
            throw new NullPointerException("license is marked non-null but is null");
         }

         this.license = license;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder settings(@NonNull AdminappPageSettings settings) {
         if (settings == null) {
            throw new NullPointerException("settings is marked non-null but is null");
         }

         this.settings = settings;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder skin(@NonNull String skin) {
         if (skin == null) {
            throw new NullPointerException("skin is marked non-null but is null");
         }

         this.skin = skin;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder afterLogoutUrl(@NonNull String afterLogoutUrl) {
         if (afterLogoutUrl == null) {
            throw new NullPointerException("afterLogoutUrl is marked non-null but is null");
         }

         this.afterLogoutUrl = afterLogoutUrl;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem.AdminappSystemBuilder maxPageSize(int maxPageSize) {
         this.maxPageSize = maxPageSize;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AdminappSystem build() {
         return new AdminappSystem(
            this.instance,
            this.startPage,
            this.recoveryMode,
            this.oldConfigEditorEnabled,
            this.version,
            this.instanceTag,
            this.defaultLanguage,
            this.supportedLanguages,
            this.timeZoneId,
            this.license,
            this.settings,
            this.skin,
            this.afterLogoutUrl,
            this.maxPageSize
         );
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "AdminappSystem.AdminappSystemBuilder(instance="
            + this.instance
            + ", startPage="
            + this.startPage
            + ", recoveryMode="
            + this.recoveryMode
            + ", oldConfigEditorEnabled="
            + this.oldConfigEditorEnabled
            + ", version="
            + this.version
            + ", instanceTag="
            + this.instanceTag
            + ", defaultLanguage="
            + this.defaultLanguage
            + ", supportedLanguages="
            + this.supportedLanguages
            + ", timeZoneId="
            + this.timeZoneId
            + ", license="
            + this.license
            + ", settings="
            + this.settings
            + ", skin="
            + this.skin
            + ", afterLogoutUrl="
            + this.afterLogoutUrl
            + ", maxPageSize="
            + this.maxPageSize
            + ")";
      }
   }
}
