package com.l7tech.gateway.common.security.rbac;

import com.l7tech.objectmodel.EntityHeader;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.annotations.Proxy;

@Entity
@Proxy(lazy = false)
@Table(name = "rbac_predicate_oid")
public class ObjectIdentityPredicate extends ScopePredicate implements ScopeEvaluator {
   private String targetEntityId;
   private EntityHeader header;
   static final long serialVersionUID = 4648256893524855751L;
   private static final String[] b;

   public ObjectIdentityPredicate(Permission var1, String var2) {
      super(var1);
      this.targetEntityId = var2;
   }

   protected ObjectIdentityPredicate() {
   }

   @Override
   public ScopePredicate createAnonymousClone() {
      ObjectIdentityPredicate var1 = new ObjectIdentityPredicate(null, this.targetEntityId);
      var1.setGoid(this.getGoid());
      var1.header = this.header;
      return var1;
   }

   @NotNull
   @Size(min = 1, max = 255)
   @Column(name = "entity_id", nullable = false, length = 255)
   public String getTargetEntityId() {
      return this.targetEntityId;
   }

   public void setTargetEntityId(String var1) {
      this.targetEntityId = var1;
   }

   @Override
   public boolean matches(com.l7tech.objectmodel.Entity 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: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.permission Lcom/l7tech/gateway/common/security/rbac/Permission;
      // 04: invokevirtual com/l7tech/gateway/common/security/rbac/Permission.getEntityType ()Lcom/l7tech/objectmodel/EntityType;
      // 07: astore 2
      // 08: aload 2
      // 09: ifnull 1a
      // 0c: aload 2
      // 0d: getstatic com/l7tech/objectmodel/EntityType.ANY Lcom/l7tech/objectmodel/EntityType;
      // 10: if_acmpne 2b
      // 13: goto 1a
      // 16: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 19: athrow
      // 1a: new java/lang/IllegalStateException
      // 1d: dup
      // 1e: getstatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.b [Ljava/lang/String;
      // 21: bipush 0
      // 22: aaload
      // 23: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // 26: athrow
      // 27: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 2a: athrow
      // 2b: aload 0
      // 2c: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.targetEntityId Ljava/lang/String;
      // 2f: aload 1
      // 30: invokeinterface com/l7tech/objectmodel/Entity.getId ()Ljava/lang/String; 1
      // 35: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 38: ireturn
      // try (4 -> 9): 10 java/lang/IllegalStateException
      // try (6 -> 19): 19 java/lang/IllegalStateException
   }

   @Transient
   public EntityHeader getHeader() {
      return this.header;
   }

   public void setHeader(EntityHeader var1) {
      this.header = var1;
   }

   @Override
   public String toString() {
      try {
         if (this.header != null) {
            return getName(this.header) + " " + this.header.getType().getName();
         }
      } catch (IllegalStateException var2) {
         throw a(var2);
      }

      StringBuilder var10000;
      StringBuilder var10001;
      String var10002;
      label22: {
         try {
            var10000 = new StringBuilder;
            var10001 = var10000;
            if (this.permission == null) {
               var10002 = "";
               break label22;
            }
         } catch (IllegalStateException var3) {
            throw a(var3);
         }

         var10002 = this.permission.getEntityType().getName();
      }

      var10001./* $VF: Unable to resugar constructor */<init>(var10002);
      StringBuilder var1 = var10000;
      var1.append(b[1]).append(this.targetEntityId);
      return var1.toString();
   }

   private static String getName(EntityHeader var0) {
      try {
         if (var0.getName() != null) {
            return var0.getName();
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return var0.getStrId();
   }

   @Override
   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/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 0a: athrow
      // 0b: aload 1
      // 0c: ifnull 21
      // 0f: aload 0
      // 10: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 13: aload 1
      // 14: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 17: if_acmpeq 27
      // 1a: goto 21
      // 1d: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 20: athrow
      // 21: bipush 0
      // 22: ireturn
      // 23: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 26: athrow
      // 27: aload 0
      // 28: aload 1
      // 29: invokespecial com/l7tech/gateway/common/security/rbac/ScopePredicate.equals (Ljava/lang/Object;)Z
      // 2c: ifne 35
      // 2f: bipush 0
      // 30: ireturn
      // 31: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 34: athrow
      // 35: aload 1
      // 36: checkcast com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate
      // 39: astore 2
      // 3a: aload 0
      // 3b: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.targetEntityId Ljava/lang/String;
      // 3e: ifnull 5d
      // 41: aload 0
      // 42: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.targetEntityId Ljava/lang/String;
      // 45: aload 2
      // 46: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.targetEntityId Ljava/lang/String;
      // 49: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 4c: ifne 6a
      // 4f: goto 56
      // 52: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 55: athrow
      // 56: goto 64
      // 59: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 5c: athrow
      // 5d: aload 2
      // 5e: getfield com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.targetEntityId Ljava/lang/String;
      // 61: ifnull 6a
      // 64: bipush 0
      // 65: ireturn
      // 66: invokestatic com/l7tech/gateway/common/security/rbac/ObjectIdentityPredicate.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 69: athrow
      // 6a: bipush 1
      // 6b: ireturn
      // try (0 -> 5): 5 java/lang/IllegalStateException
      // try (7 -> 14): 15 java/lang/IllegalStateException
      // try (9 -> 19): 19 java/lang/IllegalStateException
      // try (21 -> 27): 27 java/lang/IllegalStateException
      // try (32 -> 41): 42 java/lang/IllegalStateException
      // try (35 -> 45): 45 java/lang/IllegalStateException
      // try (47 -> 52): 52 java/lang/IllegalStateException
   }

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

      int var10000;
      try {
         var10000 = 31 * var1;
         if (this.targetEntityId != null) {
            return var10000 + this.targetEntityId.hashCode();
         }
      } catch (IllegalStateException var2) {
         throw a(var2);
      }

      return var10000 + 0;
   }

   private static IllegalStateException a(IllegalStateException var0) {
      return var0;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "?\u0011V\u0015 [&\n\u0011TG5\u000f&\\\u0011V\u0012\u001b\u0019)\u0019\u0013L{0\u001e-\b\u0019LK\u0004\t&\u0018\u0019[S \u001ec\u000b\u0019LZ;\u000e7\\\u0011\u0018A$\u001e \u0015\u0016QQt>-\b\u0019LK\u0000\u00023\u0019\u0002\\S";
      int var4 = "?\u0011V\u0015 [&\n\u0011TG5\u000f&\\\u0011V\u0012\u001b\u0019)\u0019\u0013L{0\u001e-\b\u0019LK\u0004\t&\u0018\u0019[S \u001ec\u000b\u0019LZ;\u000e7\\\u0011\u0018A$\u001e \u0015\u0016QQt>-\b\u0019LK\u0000\u00023\u0019\u0002\\S"
         .length();
      char var1 = 'G';
      int var0 = -1;

      while (true) {
         String var10002 = b(21, b(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            b = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      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 -> 105;
            case 1 -> 101;
            case 2 -> 45;
            case 3 -> 39;
            case 4 -> 65;
            case 5 -> 110;
            default -> 86;
         });
      }

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