package com.l7tech.gateway.common.uddi;

import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.imp.PersistentEntityImp;
import com.l7tech.util.DeserializeSafe;
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_publish_status")
@DeserializeSafe
public class UDDIPublishStatus extends PersistentEntityImp {
   private Goid uddiProxiedServiceInfoGoid;
   private UDDIPublishStatus.PublishStatus publishStatus;
   private int failCount;
   static final long serialVersionUID = 8844690621811005735L;

   public UDDIPublishStatus() {
      this.publishStatus = UDDIPublishStatus.PublishStatus.PUBLISH;
   }

   public UDDIPublishStatus(Goid var1, UDDIPublishStatus.PublishStatus var2) {
      this.publishStatus = var2;
      this.uddiProxiedServiceInfoGoid = var1;
   }

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

   @Column(name = "uddi_proxied_service_info_goid", nullable = false)
   @Type(type = "com.l7tech.server.util.GoidType")
   public Goid getUddiProxiedServiceInfoGoid() {
      return this.uddiProxiedServiceInfoGoid;
   }

   public void setUddiProxiedServiceInfoGoid(Goid var1) {
      this.uddiProxiedServiceInfoGoid = var1;
   }

   @Column(name = "publish_status")
   @Enumerated(EnumType.STRING)
   public UDDIPublishStatus.PublishStatus getPublishStatus() {
      return this.publishStatus;
   }

   public void setPublishStatus(UDDIPublishStatus.PublishStatus var1) {
      this.publishStatus = var1;
      if (var1 == UDDIPublishStatus.PublishStatus.PUBLISHED) {
         this.setFailCount(0);
      }
   }

   @Column(name = "fail_count")
   public int getFailCount() {
      return this.failCount;
   }

   public void setFailCount(int var1) {
      this.failCount = var1;
   }

   public enum PublishStatus {
      PUBLISH,
      PUBLISH_FAILED,
      CANNOT_PUBLISH,
      PUBLISHED,
      DELETE,
      DELETE_FAILED,
      CANNOT_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[7];
         int var4 = 0;
         String var3 = "WpSIu0\rPtQBn!IWpSIu0\tC`]@h&^Vq\rWpSIu0IUtV@d1\u000eC`]@h&^Ls^Em0R";
         int var5 = "WpSIu0\rPtQBn!IWpSIu0\tC`]@h&^Vq\rWpSIu0IUtV@d1\u000eC`]@h&^Ls^Em0R".length();
         char var2 = 6;
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 41;
            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) {
                        PUBLISH = new UDDIPublishStatus.PublishStatus();
                        PUBLISH_FAILED = new UDDIPublishStatus.PublishStatus();
                        CANNOT_PUBLISH = new UDDIPublishStatus.PublishStatus();
                        PUBLISHED = new UDDIPublishStatus.PublishStatus();
                        DELETE = new UDDIPublishStatus.PublishStatus();
                        DELETE_FAILED = new UDDIPublishStatus.PublishStatus();
                        CANNOT_DELETE = new UDDIPublishStatus.PublishStatus();
                        return;
                     }

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

                     var3 = "\u0005!\u0004\u0017;t\u001c\u00165\b\u0015=s\u000b\u0007\u00165\b\u0015=s\u000b";
                     var5 = "\u0005!\u0004\u0017;t\u001c\u00165\b\u0015=s\u000b\u0007\u00165\b\u0015=s\u000b".length();
                     var2 = 14;
                     var7 = -1;
               }

               var10000 = 124;
               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] ^ 63);
         }

         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 -> 58;
               case 1 -> 28;
               case 2 -> 54;
               case 3 -> 37;
               case 4 -> 8;
               case 5 -> 92;
               default -> 63;
            });
         }

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