package com.l7tech.gateway.common.solutionkit;

import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.PersistentEntity;
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.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import org.hibernate.annotations.Proxy;
import org.jetbrains.annotations.NotNull;

@DeserializeSafe
@Entity
@Proxy(lazy = false)
@Table(name = "solution_kit_meta")
public class EntityOwnershipDescriptor extends PersistentEntityImp {
   private static final long serialVersionUID = -9208416680418516749L;
   public static final long OWNED_STAMP = Long.MAX_VALUE;
   private SolutionKit solutionKit;
   private String entityId;
   private EntityType entityType;
   private boolean readOnly = false;
   private long versionStamp = Long.MAX_VALUE;
   private static final String[] b;

   @Deprecated
   protected EntityOwnershipDescriptor() {
   }

   public EntityOwnershipDescriptor(@NotNull SolutionKit var1, @NotNull String var2, @NotNull EntityType var3, boolean var4) {
      this.solutionKit = var1;
      this.entityId = var2;
      this.entityType = var3;
      this.readOnly = var4;
      this.versionStamp = Long.MAX_VALUE;
   }

   @ManyToOne(optional = false)
   @JoinColumn(name = "solution_kit_goid", nullable = false)
   public SolutionKit getSolutionKit() {
      return this.solutionKit;
   }

   public void setSolutionKit(@NotNull SolutionKit var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(3);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      this.solutionKit = var1;
   }

   @Column(name = "entity_id", nullable = false)
   public String getEntityId() {
      return this.entityId;
   }

   public void setEntityId(@NotNull String var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(4);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      this.checkLocked();
      this.entityId = var1;
   }

   @Enumerated(EnumType.STRING)
   @Column(name = "entity_type", length = 255, nullable = false)
   public EntityType getEntityType() {
      return this.entityType;
   }

   public void setEntityType(@NotNull EntityType var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(5);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      this.checkLocked();
      this.entityType = var1;
   }

   @Column(name = "read_only", nullable = false)
   public boolean isReadOnly() {
      return this.readOnly;
   }

   public void setReadOnly(boolean var1) {
      this.checkLocked();
      this.readOnly = var1;
   }

   @Column(name = "version_stamp", nullable = false)
   public long getVersionStamp() {
      return this.versionStamp;
   }

   public void setVersionStamp(long var1) {
      this.checkLocked();
      this.versionStamp = var1;
   }

   public void markAsOwned() {
      this.checkLocked();
      this.versionStamp = Long.MAX_VALUE;
   }

   public void copyFrom(@NotNull EntityOwnershipDescriptor var1, @NotNull SolutionKit var2) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(6);
         }
      } catch (IllegalArgumentException var5) {
         throw b(var5);
      }

      try {
         if (var2 == null) {
            $$$reportNull$$$0(7);
         }
      } catch (IllegalArgumentException var3) {
         throw b(var3);
      }

      try {
         if (!PersistentEntity.DEFAULT_GOID.equals(var1.getGoid())) {
            this.setGoid(var1.getGoid());
         }
      } catch (IllegalArgumentException var4) {
         throw b(var4);
      }

      this.setSolutionKit(var2);
      this.setEntityId(var1.getEntityId());
      this.setEntityType(var1.getEntityType());
      this.setReadOnly(var1.isReadOnly());
      this.setVersionStamp(var1.getVersionStamp());
   }

   public static EntityOwnershipDescriptor createFrom(@NotNull EntityOwnershipDescriptor var0, @NotNull SolutionKit var1) {
      try {
         if (var0 == null) {
            $$$reportNull$$$0(8);
         }
      } catch (IllegalArgumentException var3) {
         throw b(var3);
      }

      try {
         if (var1 == null) {
            $$$reportNull$$$0(9);
         }
      } catch (IllegalArgumentException var4) {
         throw b(var4);
      }

      EntityOwnershipDescriptor var2 = new EntityOwnershipDescriptor();
      var2.copyFrom(var0, var1);
      return var2;
   }

   public boolean equals(Object param1) {
      // $VF: Couldn't be decompiled
      // 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!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: aload 1
      // 02: if_acmpne 0b
      // 05: bipush 1
      // 06: ireturn
      // 07: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0a: athrow
      // 0b: aload 1
      // 0c: instanceof com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor
      // 0f: ifne 18
      // 12: bipush 0
      // 13: ireturn
      // 14: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 17: athrow
      // 18: aload 0
      // 19: aload 1
      // 1a: invokespecial com/l7tech/objectmodel/imp/PersistentEntityImp.equals (Ljava/lang/Object;)Z
      // 1d: ifne 26
      // 20: bipush 0
      // 21: ireturn
      // 22: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 25: athrow
      // 26: aload 1
      // 27: checkcast com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor
      // 2a: astore 2
      // 2b: aload 0
      // 2c: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityId Ljava/lang/String;
      // 2f: ifnull 4e
      // 32: aload 0
      // 33: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityId Ljava/lang/String;
      // 36: aload 2
      // 37: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityId Ljava/lang/String;
      // 3a: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 3d: ifne 55
      // 40: goto 47
      // 43: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 46: athrow
      // 47: goto 94
      // 4a: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 4d: athrow
      // 4e: aload 2
      // 4f: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityId Ljava/lang/String;
      // 52: ifnonnull 94
      // 55: aload 0
      // 56: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityType Lcom/l7tech/objectmodel/EntityType;
      // 59: aload 2
      // 5a: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.entityType Lcom/l7tech/objectmodel/EntityType;
      // 5d: if_acmpne 94
      // 60: goto 67
      // 63: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 66: athrow
      // 67: aload 0
      // 68: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.readOnly Z
      // 6b: aload 2
      // 6c: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.readOnly Z
      // 6f: if_icmpne 94
      // 72: goto 79
      // 75: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 78: athrow
      // 79: aload 0
      // 7a: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.versionStamp J
      // 7d: aload 2
      // 7e: getfield com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.versionStamp J
      // 81: lcmp
      // 82: ifne 94
      // 85: goto 8c
      // 88: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 8b: athrow
      // 8c: bipush 1
      // 8d: goto 95
      // 90: invokestatic com/l7tech/gateway/common/solutionkit/EntityOwnershipDescriptor.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 93: athrow
      // 94: bipush 0
      // 95: ireturn
      // try (0 -> 5): 5 java/lang/IllegalArgumentException
      // try (7 -> 12): 12 java/lang/IllegalArgumentException
      // try (14 -> 20): 20 java/lang/IllegalArgumentException
      // try (25 -> 34): 35 java/lang/IllegalArgumentException
      // try (28 -> 38): 38 java/lang/IllegalArgumentException
      // try (40 -> 48): 49 java/lang/IllegalArgumentException
      // try (43 -> 56): 57 java/lang/IllegalArgumentException
      // try (51 -> 65): 66 java/lang/IllegalArgumentException
      // try (59 -> 70): 70 java/lang/IllegalArgumentException
   }

   public int hashCode() {
      int var1 = super.hashCode();

      int var10000;
      int var10001;
      label31: {
         try {
            var10000 = 31 * var1;
            if (this.entityId != null) {
               var10001 = this.entityId.hashCode();
               break label31;
            }
         } catch (IllegalArgumentException var3) {
            throw b(var3);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label23: {
         try {
            var10000 = 31 * var1;
            if (this.entityType != null) {
               var10001 = this.entityType.hashCode();
               break label23;
            }
         } catch (IllegalArgumentException var2) {
            throw b(var2);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;
      var1 = 31 * var1 + Boolean.hashCode(this.readOnly);
      return 31 * var1 + Long.hashCode(this.versionStamp);
   }

   private static IllegalArgumentException b(IllegalArgumentException var0) {
      return var0;
   }

   static {
      String[] var5 = new String[13];
      int var3 = 0;
      String var2 = "6\b\u0010=\u001ej\u001d'\u0015\u0018\b6\u0015\u0005%,}48\u000f:\u000e\u001d9\u0018K>&\u0019\u00075\u001a{4'\u0010:\r\u001b9\u0018\\49\u000f\u00015\u0005a\u0010<\u000e>\u0014\b\u0012)\u0007j5!Z\u00133\u0018/\u001b\u001b\u0015\u0001\u0012\u001fc7u\n\u0014.\u000bb>!\u001f\u0007|M*(rZ\u001a:J*({_\u0006|\u0007z(!Z\u001b3\u001e/90Z\u001b)\u0006c\u000b&\u0015\u0019)\u001ef4;1\u001c(\u000b&\u001f\u0001\u0019\u0004{2!\u0003<8\b0\u0014\u00015\u001ev\u00121\n0\u0014\u00015\u001ev\u000f,\n\u0010?6\u0015\u0018s\u00068/0\u0019\u001ds\rn/0\r\u0014%El48\u0017\u001a2E|49\u000f\u00015\u0005a0<\u000eZ\u0019\u0004{2!\u0003:+\u0004j)&\u0012\u001c,.j(6\b\u001c,\u001e`)\r&\u001f\u0001\u0019\u0004{2!\u0003!%\u001aj";
      int var4 = "6\b\u0010=\u001ej\u001d'\u0015\u0018\b6\u0015\u0005%,}48\u000f:\u000e\u001d9\u0018K>&\u0019\u00075\u001a{4'\u0010:\r\u001b9\u0018\\49\u000f\u00015\u0005a\u0010<\u000e>\u0014\b\u0012)\u0007j5!Z\u00133\u0018/\u001b\u001b\u0015\u0001\u0012\u001fc7u\n\u0014.\u000bb>!\u001f\u0007|M*(rZ\u001a:J*({_\u0006|\u0007z(!Z\u001b3\u001e/90Z\u001b)\u0006c\u000b&\u0015\u0019)\u001ef4;1\u001c(\u000b&\u001f\u0001\u0019\u0004{2!\u0003<8\b0\u0014\u00015\u001ev\u00121\n0\u0014\u00015\u001ev\u000f,\n\u0010?6\u0015\u0018s\u00068/0\u0019\u001ds\rn/0\r\u0014%El48\u0017\u001a2E|49\u000f\u00015\u0005a0<\u000eZ\u0019\u0004{2!\u0003:+\u0004j)&\u0012\u001c,.j(6\b\u001c,\u001e`)\r&\u001f\u0001\u0019\u0004{2!\u0003!%\u001aj"
         .length();
      char var1 = '\n';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 123;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     return;
                  }

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

                  var2 = "\u000et|RyV\u000eAxfhb\u0004IFt}UF\u0001H";
                  var4 = "\u000et|RyV\u000eAxfhb\u0004IFt}UF\u0001H".length();
                  var1 = 6;
                  var7 = -1;
            }

            var10000 = 28;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

      return var10000;
   }

   private static String b(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 -> 46;
            case 1 -> 1;
            case 2 -> 14;
            case 3 -> 39;
            case 4 -> 17;
            case 5 -> 116;
            default -> 32;
         });
      }

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