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

import com.fasterxml.jackson.annotation.JsonTypeName;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@JsonTypeName("api-policy-service.tech-client")
public class ApiPolicyServiceTechClientData {
   public static final String JSON_API_ID_DESCRIPTION = "ID of the resolved technical client";
   static final String API_POLICY_SERVICE_TECH_CLIENT_INFORMATION_TYPE = "api-policy-service.tech-client";
   private String displayName;
   private String label;
   private ApiPolicyServiceSubscriptionData subscription;

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

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

   @SuppressFBWarnings(justification = "generated code")
   public ApiPolicyServiceSubscriptionData getSubscription() {
      return this.subscription;
   }

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

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

   @SuppressFBWarnings(justification = "generated code")
   public void setSubscription(ApiPolicyServiceSubscriptionData subscription) {
      this.subscription = subscription;
   }

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

         Object this$displayName = this.displayName;
         Object other$displayName = other.displayName;
         if (this$displayName == null ? other$displayName == null : this$displayName.equals(other$displayName)) {
            Object this$label = this.label;
            Object other$label = other.label;
            if (this$label == null ? other$label == null : this$label.equals(other$label)) {
               Object this$subscription = this.subscription;
               Object other$subscription = other.subscription;
               return this$subscription == null ? other$subscription == null : this$subscription.equals(other$subscription);
            } else {
               return false;
            }
         } else {
            return false;
         }
      }
   }

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

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $displayName = this.displayName;
      result = result * 59 + ($displayName == null ? 43 : $displayName.hashCode());
      Object $label = this.label;
      result = result * 59 + ($label == null ? 43 : $label.hashCode());
      Object $subscription = this.subscription;
      return result * 59 + ($subscription == null ? 43 : $subscription.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "ApiPolicyServiceTechClientData(displayName="
         + this.getDisplayName()
         + ", label="
         + this.getLabel()
         + ", subscription="
         + this.getSubscription()
         + ")";
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public ApiPolicyServiceTechClientData(String displayName, String label, ApiPolicyServiceSubscriptionData subscription) {
      this.displayName = displayName;
      this.label = label;
      this.subscription = subscription;
   }
}
