package com.l7tech.server.uddi;

import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.imp.PersistentEntityImp;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

@Entity
@Proxy(lazy = false)
@Table(name = "uddi_business_service_status")
public class UDDIBusinessServiceStatus extends PersistentEntityImp {
   private Goid publishedServiceGoid;
   private Goid uddiRegistryGoid;
   private String uddiServiceKey;
   private String uddiServiceName;
   private String uddiPolicyPublishUrl;
   private String uddiPolicyUrl;
   private String uddiPolicyTModelKey;
   private UDDIBusinessServiceStatus.Status uddiPolicyStatus;
   private String uddiMetricsTModelKey;
   private UDDIBusinessServiceStatus.Status uddiMetricsReferenceStatus;
   static final long serialVersionUID = -1622659373249697517L;

   @Column(name = "published_service_goid", updatable = false)
   @Type(type = "com.l7tech.server.util.GoidType")
   public Goid getPublishedServiceGoid() {
      return this.publishedServiceGoid;
   }

   public void setPublishedServiceGoid(Goid var1) {
      this.publishedServiceGoid = var1;
   }

   @Column(name = "uddi_registry_goid", updatable = false)
   @Type(type = "com.l7tech.server.util.GoidType")
   public Goid getUddiRegistryGoid() {
      return this.uddiRegistryGoid;
   }

   public void setUddiRegistryGoid(Goid var1) {
      this.uddiRegistryGoid = var1;
   }

   @Column(name = "uddi_service_key")
   public String getUddiServiceKey() {
      return this.uddiServiceKey;
   }

   public void setUddiServiceKey(String var1) {
      this.uddiServiceKey = var1;
   }

   @Column(name = "uddi_service_name")
   public String getUddiServiceName() {
      return this.uddiServiceName;
   }

   public void setUddiServiceName(String var1) {
      this.uddiServiceName = var1;
   }

   @Column(name = "uddi_policy_publish_url")
   public String getUddiPolicyPublishUrl() {
      return this.uddiPolicyPublishUrl;
   }

   public void setUddiPolicyPublishUrl(String var1) {
      this.uddiPolicyPublishUrl = var1;
   }

   @Column(name = "uddi_policy_url")
   public String getUddiPolicyUrl() {
      return this.uddiPolicyUrl;
   }

   public void setUddiPolicyUrl(String var1) {
      this.uddiPolicyUrl = var1;
   }

   @Column(name = "uddi_policy_tmodel_key")
   public String getUddiPolicyTModelKey() {
      return this.uddiPolicyTModelKey;
   }

   public void setUddiPolicyTModelKey(String var1) {
      this.uddiPolicyTModelKey = var1;
   }

   @Column(name = "policy_status")
   @Enumerated(EnumType.STRING)
   public UDDIBusinessServiceStatus.Status getUddiPolicyStatus() {
      return this.uddiPolicyStatus;
   }

   public void setUddiPolicyStatus(UDDIBusinessServiceStatus.Status var1) {
      this.uddiPolicyStatus = var1;
   }

   @Column(name = "uddi_metrics_tmodel_key")
   public String getUddiMetricsTModelKey() {
      return this.uddiMetricsTModelKey;
   }

   public void setUddiMetricsTModelKey(String var1) {
      this.uddiMetricsTModelKey = var1;
   }

   @Column(name = "metrics_reference_status")
   @Enumerated(EnumType.STRING)
   public UDDIBusinessServiceStatus.Status getUddiMetricsReferenceStatus() {
      return this.uddiMetricsReferenceStatus;
   }

   public void setUddiMetricsReferenceStatus(UDDIBusinessServiceStatus.Status var1) {
      this.uddiMetricsReferenceStatus = var1;
   }

   @Version
   @Column(name = "version")
   public int getVersion() {
      return super.getVersion();
   }

   public enum Status {
      NONE,
      PUBLISH,
      PUBLISHED,
      DELETE;

      // $VF: Failed to inline enum fields
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      static {
         String[] var0 = new String[4];
         int var4 = 0;
         String var3 = "#[DT\u0007=AH]I\b\u001f";
         int var5 = "#[DT\u0007=AH]I\b\u001f".length();
         char var2 = 4;
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 30;
            String var10001 = var3.substring(++var7, var7 + var2);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var0[var4++] = var8;
                     if ((var7 += var2) >= var5) {
                        NONE = new UDDIBusinessServiceStatus.Status();
                        PUBLISH = new UDDIBusinessServiceStatus.Status();
                        PUBLISHED = new UDDIBusinessServiceStatus.Status();
                        DELETE = new UDDIBusinessServiceStatus.Status();
                        return;
                     }

                     var2 = var3.charAt(var7);
                     break;
                  default:
                     var0[var4++] = var8;
                     if ((var7 += var2) < var5) {
                        var2 = var3.charAt(var7);
                        continue label25;
                     }

                     var3 = "\u001ebk~j+<\u000bs\u0006\nreww=";
                     var5 = "\u001ebk~j+<\u000bs\u0006\nreww=".length();
                     var2 = '\t';
                     var7 = -1;
               }

               var10000 = 61;
               var10001 = var3.substring(++var7, var7 + var2);
               var10002 = 0;
            }
         }
      }

      private static char[] a(String var0) {
         char[] var10000 = var0.toCharArray();
         if (var10000.length < 2) {
            var10000[0] = (char)(var10000[0] ^ 73);
         }

         return var10000;
      }

      private static String a(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 115;
               case 1 -> 10;
               case 2 -> 20;
               case 3 -> 15;
               case 4 -> 30;
               case 5 -> 69;
               default -> 73;
            });
         }

         return new String(var10001).intern();
      }
   }
}
