package com.l7tech.gateway.common.service;

import com.l7tech.objectmodel.Goid;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.IdClass;
import jakarta.persistence.Table;
import java.io.Serializable;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

@Entity
@Proxy(lazy = false)
@Table(name = "service_metrics_details")
@IdClass(MetricsBinDetail.MetricsBinDetailPK.class)
public class MetricsBinDetail implements Serializable {
   private Goid metricsBinGoid;
   private Goid mappingValuesId;
   private int numAttemptedRequest;
   private int numAuthorizedRequest;
   private int numCompletedRequest;
   private Integer minFrontendResponseTime;
   private Integer maxFrontendResponseTime;
   private long sumFrontendResponseTime;
   private Integer minBackendResponseTime;
   private Integer maxBackendResponseTime;
   private long sumBackendResponseTime;
   static final long serialVersionUID = 3821463427717833602L;

   @Id
   @Column(name = "service_metrics_goid")
   @Type(type = "com.l7tech.server.util.GoidType")
   public Goid getMetricsBinGoid() {
      return this.metricsBinGoid;
   }

   public void setMetricsBinGoid(Goid var1) {
      this.metricsBinGoid = var1;
   }

   @Id
   @Column(name = "mapping_values_goid")
   @Type(type = "com.l7tech.server.util.GoidType")
   public Goid getMappingValuesId() {
      return this.mappingValuesId;
   }

   public void setMappingValuesId(Goid var1) {
      this.mappingValuesId = var1;
   }

   @Column(name = "attempted")
   public int getNumAttemptedRequest() {
      return this.numAttemptedRequest;
   }

   public void setNumAttemptedRequest(int var1) {
      this.numAttemptedRequest = var1;
   }

   @Column(name = "authorized")
   public int getNumAuthorizedRequest() {
      return this.numAuthorizedRequest;
   }

   public void setNumAuthorizedRequest(int var1) {
      this.numAuthorizedRequest = var1;
   }

   @Column(name = "completed")
   public int getNumCompletedRequest() {
      return this.numCompletedRequest;
   }

   public void setNumCompletedRequest(int var1) {
      this.numCompletedRequest = var1;
   }

   @Column(name = "front_min")
   public Integer getMinFrontendResponseTime() {
      return this.minFrontendResponseTime;
   }

   public void setMinFrontendResponseTime(Integer var1) {
      this.minFrontendResponseTime = var1;
   }

   @Column(name = "front_max")
   public Integer getMaxFrontendResponseTime() {
      return this.maxFrontendResponseTime;
   }

   public void setMaxFrontendResponseTime(Integer var1) {
      this.maxFrontendResponseTime = var1;
   }

   @Column(name = "front_sum")
   public long getSumFrontendResponseTime() {
      return this.sumFrontendResponseTime;
   }

   public void setSumFrontendResponseTime(long var1) {
      this.sumFrontendResponseTime = var1;
   }

   @Column(name = "back_min")
   public Integer getMinBackendResponseTime() {
      return this.minBackendResponseTime;
   }

   public void setMinBackendResponseTime(Integer var1) {
      this.minBackendResponseTime = var1;
   }

   @Column(name = "back_max")
   public Integer getMaxBackendResponseTime() {
      return this.maxBackendResponseTime;
   }

   public void setMaxBackendResponseTime(Integer var1) {
      this.maxBackendResponseTime = var1;
   }

   @Column(name = "back_sum")
   public long getSumBackendResponseTime() {
      return this.sumBackendResponseTime;
   }

   public void setSumBackendResponseTime(long var1) {
      this.sumBackendResponseTime = var1;
   }

   @Override
   public boolean equals(Object var1) {
      if (this == var1) {
         return true;
      }

      if (var1 == null || this.getClass() != var1.getClass()) {
         return false;
      }

      if (!super.equals(var1)) {
         return false;
      }

      MetricsBinDetail var2 = (MetricsBinDetail)var1;
      return !Goid.equals(this.mappingValuesId, var2.mappingValuesId) ? false : this.metricsBinGoid == var2.metricsBinGoid;
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();
      var1 = 31 * var1 + this.metricsBinGoid.hashCode();
      return 31 * var1 + (this.mappingValuesId != null ? this.mappingValuesId.hashCode() : 0);
   }

   public static class MetricsBinDetailPK implements Serializable {
      private Goid metricsBinGoid;
      private Goid mappingValuesId;
      static final long serialVersionUID = 6627815577587922272L;

      public MetricsBinDetailPK() {
      }

      public MetricsBinDetailPK(Goid var1, Goid var2) {
         this.metricsBinGoid = var1;
         this.mappingValuesId = var2;
      }

      public Goid getMetricsBinGoid() {
         return this.metricsBinGoid;
      }

      public void setMetricsBinGoid(Goid var1) {
         this.metricsBinGoid = var1;
      }

      public Goid getMappingValuesId() {
         return this.mappingValuesId;
      }

      public void setMappingValuesId(Goid var1) {
         this.mappingValuesId = var1;
      }

      @Override
      public boolean equals(Object var1) {
         if (this == var1) {
            return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            MetricsBinDetail.MetricsBinDetailPK var2 = (MetricsBinDetail.MetricsBinDetailPK)var1;
            if (this.mappingValuesId != null ? this.mappingValuesId.equals(var2.mappingValuesId) : var2.mappingValuesId == null) {
               return this.metricsBinGoid != null ? this.metricsBinGoid.equals(var2.metricsBinGoid) : var2.metricsBinGoid == null;
            } else {
               return false;
            }
         } else {
            return false;
         }
      }

      @Override
      public int hashCode() {
         int var1 = this.metricsBinGoid != null ? this.metricsBinGoid.hashCode() : 0;
         return 31 * var1 + (this.mappingValuesId != null ? this.mappingValuesId.hashCode() : 0);
      }
   }
}
