package com.airlock.iam.admin.infrastructure.mapper.analytics;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.annotation.Nullable;
import java.util.List;

public final class StructuredLicenseDocument {
   @Nullable
   private String owner;
   @Nullable
   private String issuedOn;
   @Nullable
   private String validFrom;
   @Nullable
   private String validUntil;
   @Nullable
   private String environment;
   @Nullable
   private Integer licensedUsers;
   @Nullable
   private Integer licensedInstances;
   private List<String> licensedTags;
   private List<String> bundles;
   private List<String> licensedMac48Addresses;

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

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getOwner() {
      return this.owner;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getIssuedOn() {
      return this.issuedOn;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getValidFrom() {
      return this.validFrom;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getValidUntil() {
      return this.validUntil;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getEnvironment() {
      return this.environment;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public Integer getLicensedUsers() {
      return this.licensedUsers;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public Integer getLicensedInstances() {
      return this.licensedInstances;
   }

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

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

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

   @SuppressFBWarnings(justification = "generated code")
   public void setOwner(@Nullable String owner) {
      this.owner = owner;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setIssuedOn(@Nullable String issuedOn) {
      this.issuedOn = issuedOn;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setValidFrom(@Nullable String validFrom) {
      this.validFrom = validFrom;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setValidUntil(@Nullable String validUntil) {
      this.validUntil = validUntil;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setEnvironment(@Nullable String environment) {
      this.environment = environment;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setLicensedUsers(@Nullable Integer licensedUsers) {
      this.licensedUsers = licensedUsers;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setLicensedInstances(@Nullable Integer licensedInstances) {
      this.licensedInstances = licensedInstances;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setLicensedTags(List<String> licensedTags) {
      this.licensedTags = licensedTags;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setBundles(List<String> bundles) {
      this.bundles = bundles;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setLicensedMac48Addresses(List<String> licensedMac48Addresses) {
      this.licensedMac48Addresses = licensedMac48Addresses;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof StructuredLicenseDocument other)) {
         return false;
      } else {
         Object this$licensedUsers = this.licensedUsers;
         Object other$licensedUsers = other.licensedUsers;
         if (this$licensedUsers == null ? other$licensedUsers == null : this$licensedUsers.equals(other$licensedUsers)) {
            Object this$licensedInstances = this.licensedInstances;
            Object other$licensedInstances = other.licensedInstances;
            if (this$licensedInstances == null ? other$licensedInstances == null : this$licensedInstances.equals(other$licensedInstances)) {
               Object this$owner = this.owner;
               Object other$owner = other.owner;
               if (this$owner == null ? other$owner == null : this$owner.equals(other$owner)) {
                  Object this$issuedOn = this.issuedOn;
                  Object other$issuedOn = other.issuedOn;
                  if (this$issuedOn == null ? other$issuedOn == null : this$issuedOn.equals(other$issuedOn)) {
                     Object this$validFrom = this.validFrom;
                     Object other$validFrom = other.validFrom;
                     if (this$validFrom == null ? other$validFrom == null : this$validFrom.equals(other$validFrom)) {
                        Object this$validUntil = this.validUntil;
                        Object other$validUntil = other.validUntil;
                        if (this$validUntil == null ? other$validUntil == null : this$validUntil.equals(other$validUntil)) {
                           Object this$environment = this.environment;
                           Object other$environment = other.environment;
                           if (this$environment == null ? other$environment == null : this$environment.equals(other$environment)) {
                              Object this$licensedTags = this.licensedTags;
                              Object other$licensedTags = other.licensedTags;
                              if (this$licensedTags == null ? other$licensedTags == null : this$licensedTags.equals(other$licensedTags)) {
                                 Object this$bundles = this.bundles;
                                 Object other$bundles = other.bundles;
                                 if (this$bundles == null ? other$bundles == null : this$bundles.equals(other$bundles)) {
                                    Object this$licensedMac48Addresses = this.licensedMac48Addresses;
                                    Object other$licensedMac48Addresses = other.licensedMac48Addresses;
                                    return this$licensedMac48Addresses == null
                                       ? other$licensedMac48Addresses == null
                                       : this$licensedMac48Addresses.equals(other$licensedMac48Addresses);
                                 } 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")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $licensedUsers = this.licensedUsers;
      result = result * 59 + ($licensedUsers == null ? 43 : $licensedUsers.hashCode());
      Object $licensedInstances = this.licensedInstances;
      result = result * 59 + ($licensedInstances == null ? 43 : $licensedInstances.hashCode());
      Object $owner = this.owner;
      result = result * 59 + ($owner == null ? 43 : $owner.hashCode());
      Object $issuedOn = this.issuedOn;
      result = result * 59 + ($issuedOn == null ? 43 : $issuedOn.hashCode());
      Object $validFrom = this.validFrom;
      result = result * 59 + ($validFrom == null ? 43 : $validFrom.hashCode());
      Object $validUntil = this.validUntil;
      result = result * 59 + ($validUntil == null ? 43 : $validUntil.hashCode());
      Object $environment = this.environment;
      result = result * 59 + ($environment == null ? 43 : $environment.hashCode());
      Object $licensedTags = this.licensedTags;
      result = result * 59 + ($licensedTags == null ? 43 : $licensedTags.hashCode());
      Object $bundles = this.bundles;
      result = result * 59 + ($bundles == null ? 43 : $bundles.hashCode());
      Object $licensedMac48Addresses = this.licensedMac48Addresses;
      return result * 59 + ($licensedMac48Addresses == null ? 43 : $licensedMac48Addresses.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "StructuredLicenseDocument(owner="
         + this.getOwner()
         + ", issuedOn="
         + this.getIssuedOn()
         + ", validFrom="
         + this.getValidFrom()
         + ", validUntil="
         + this.getValidUntil()
         + ", environment="
         + this.getEnvironment()
         + ", licensedUsers="
         + this.getLicensedUsers()
         + ", licensedInstances="
         + this.getLicensedInstances()
         + ", licensedTags="
         + this.getLicensedTags()
         + ", bundles="
         + this.getBundles()
         + ", licensedMac48Addresses="
         + this.getLicensedMac48Addresses()
         + ")";
   }

   @SuppressFBWarnings(justification = "generated code")
   public StructuredLicenseDocument(
      @Nullable String owner,
      @Nullable String issuedOn,
      @Nullable String validFrom,
      @Nullable String validUntil,
      @Nullable String environment,
      @Nullable Integer licensedUsers,
      @Nullable Integer licensedInstances,
      List<String> licensedTags,
      List<String> bundles,
      List<String> licensedMac48Addresses
   ) {
      this.owner = owner;
      this.issuedOn = issuedOn;
      this.validFrom = validFrom;
      this.validUntil = validUntil;
      this.environment = environment;
      this.licensedUsers = licensedUsers;
      this.licensedInstances = licensedInstances;
      this.licensedTags = licensedTags;
      this.bundles = bundles;
      this.licensedMac48Addresses = licensedMac48Addresses;
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public static class StructuredLicenseDocumentBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private String owner;
      @SuppressFBWarnings(justification = "generated code")
      private String issuedOn;
      @SuppressFBWarnings(justification = "generated code")
      private String validFrom;
      @SuppressFBWarnings(justification = "generated code")
      private String validUntil;
      @SuppressFBWarnings(justification = "generated code")
      private String environment;
      @SuppressFBWarnings(justification = "generated code")
      private Integer licensedUsers;
      @SuppressFBWarnings(justification = "generated code")
      private Integer licensedInstances;
      @SuppressFBWarnings(justification = "generated code")
      private List<String> licensedTags;
      @SuppressFBWarnings(justification = "generated code")
      private List<String> bundles;
      @SuppressFBWarnings(justification = "generated code")
      private List<String> licensedMac48Addresses;

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

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder owner(@Nullable String owner) {
         this.owner = owner;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder issuedOn(@Nullable String issuedOn) {
         this.issuedOn = issuedOn;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder validFrom(@Nullable String validFrom) {
         this.validFrom = validFrom;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder validUntil(@Nullable String validUntil) {
         this.validUntil = validUntil;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder environment(@Nullable String environment) {
         this.environment = environment;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder licensedUsers(@Nullable Integer licensedUsers) {
         this.licensedUsers = licensedUsers;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder licensedInstances(@Nullable Integer licensedInstances) {
         this.licensedInstances = licensedInstances;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder licensedTags(List<String> licensedTags) {
         this.licensedTags = licensedTags;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder bundles(List<String> bundles) {
         this.bundles = bundles;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument.StructuredLicenseDocumentBuilder licensedMac48Addresses(List<String> licensedMac48Addresses) {
         this.licensedMac48Addresses = licensedMac48Addresses;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public StructuredLicenseDocument build() {
         return new StructuredLicenseDocument(
            this.owner,
            this.issuedOn,
            this.validFrom,
            this.validUntil,
            this.environment,
            this.licensedUsers,
            this.licensedInstances,
            this.licensedTags,
            this.bundles,
            this.licensedMac48Addresses
         );
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "StructuredLicenseDocument.StructuredLicenseDocumentBuilder(owner="
            + this.owner
            + ", issuedOn="
            + this.issuedOn
            + ", validFrom="
            + this.validFrom
            + ", validUntil="
            + this.validUntil
            + ", environment="
            + this.environment
            + ", licensedUsers="
            + this.licensedUsers
            + ", licensedInstances="
            + this.licensedInstances
            + ", licensedTags="
            + this.licensedTags
            + ", bundles="
            + this.bundles
            + ", licensedMac48Addresses="
            + this.licensedMac48Addresses
            + ")";
      }
   }
}
