package com.l7tech.server.cluster;

import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.EntityTypeRegistry;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.ServerConfig;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class ClusterPropertyManagerImpl extends HibernateEntityManager<ClusterProperty, EntityHeader> implements ClusterPropertyManager {
   private final Logger m = Logger.getLogger(ClusterPropertyManagerImpl.class.getName());
   private final String n;
   private static final String[] o;

   public ClusterPropertyManagerImpl() {
      String var10001 = this.getTableName();
      String var10002 = ClusterProperty.class.getName();
      String var1 = this.getTableName();
      String var2 = var10002;
      String var3 = var10001;
      String[] var4 = o;
      this.n = var4[0] + var3 + var4[2] + var2 + var4[5] + var1 + var4[8];
   }

   @Transactional(readOnly = true)
   @Override
   public String getProperty(String var1) throws FindException {
      ClusterProperty var2 = this.a(var1, false);

      try {
         return var2 != null ? var2.getValue() : null;
      } catch (FindException var3) {
         throw a(var3);
      }
   }

   private void a(ClusterProperty 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 1
      // 01: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.getName ()Ljava/lang/String;
      // 04: getstatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.o [Ljava/lang/String;
      // 07: bipush 3
      // 08: aaload
      // 09: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0c: ifeq 5a
      // 0f: aload 1
      // 10: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.getValue ()Ljava/lang/String;
      // 13: getstatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.o [Ljava/lang/String;
      // 16: bipush 6
      // 18: aaload
      // 19: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 1c: ifeq 43
      // 1f: goto 26
      // 22: invokestatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 25: athrow
      // 26: aload 0
      // 27: getfield com/l7tech/server/cluster/ClusterPropertyManagerImpl.applicationContext Lorg/springframework/context/ApplicationContext;
      // 2a: new com/l7tech/server/event/admin/AuditSigningStatusChange
      // 2d: dup
      // 2e: aload 0
      // 2f: getstatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.o [Ljava/lang/String;
      // 32: bipush 1
      // 33: aaload
      // 34: invokespecial com/l7tech/server/event/admin/AuditSigningStatusChange.<init> (Ljava/lang/Object;Ljava/lang/String;)V
      // 37: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 3c: goto 5a
      // 3f: invokestatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: aload 0
      // 44: getfield com/l7tech/server/cluster/ClusterPropertyManagerImpl.applicationContext Lorg/springframework/context/ApplicationContext;
      // 47: new com/l7tech/server/event/admin/AuditSigningStatusChange
      // 4a: dup
      // 4b: aload 0
      // 4c: getstatic com/l7tech/server/cluster/ClusterPropertyManagerImpl.o [Ljava/lang/String;
      // 4f: bipush 9
      // 51: aaload
      // 52: invokespecial com/l7tech/server/event/admin/AuditSigningStatusChange.<init> (Ljava/lang/Object;Ljava/lang/String;)V
      // 55: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 5a: return
      // try (0 -> 14): 15 org/hibernate/HibernateException
      // try (7 -> 28): 28 org/hibernate/HibernateException
   }

   @Override
   public ClusterProperty putProperty(String var1, String var2) throws FindException, SaveException, UpdateException {
      ClusterProperty var3 = this.a(var1, true);
      if (var3 == null) {
         var3 = new ClusterProperty(var1, var2);
         Goid var4 = this.save(var3);

         try {
            if (!var4.equals(var3.getGoid())) {
               var3.setGoid(var4);
            }

            return var3;
         } catch (FindException var5) {
            throw a(var5);
         }
      } else {
         var3.setValue(var2);
         this.update(var3);
         return var3;
      }
   }

   public Goid save(ClusterProperty var1) throws SaveException {
      this.a(var1);
      return super.save(var1);
   }

   public void update(ClusterProperty var1) throws UpdateException {
      this.a(var1);
      super.update(var1);
   }

   private ClusterProperty b(ClusterProperty var1) {
      try {
         if (var1 == null) {
            return null;
         }
      } catch (HibernateException var5) {
         throw a(var5);
      }

      ServerConfig var2 = ServerConfig.getInstance();
      String var3 = var2.getNameFromClusterName(var1.getName());

      try {
         if (var3 != null) {
            var1.setProperty(ClusterProperty.DESCRIPTION_PROPERTY_KEY, var2.getPropertyDescription(var3));
         }

         return var1;
      } catch (HibernateException var4) {
         throw a(var4);
      }
   }

   @Override
   public ClusterProperty getCachedEntityByName(String var1, int var2) throws FindException {
      ClusterProperty var3 = (ClusterProperty)super.getCachedEntityByName(var1, var2);

      try {
         if (var3 == null) {
            return null;
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      return this.b(var3);
   }

   @Transactional(readOnly = true)
   @Override
   public Collection<ClusterProperty> findAll() throws FindException {
      Collection var1 = super.findAll();

      for (ClusterProperty var3 : var1) {
         this.b(var3);
      }

      return var1;
   }

   @Transactional(readOnly = true)
   private ClusterProperty a(String var1, boolean var2) throws FindException {
      try {
         return (ClusterProperty)this.getHibernateTemplate().execute(new w(this, var1, var2));
      } catch (HibernateException var5) {
         String var4 = o[7];
         this.m.log(Level.WARNING, var4, var5);
         throw new FindException(var4, var5);
      }
   }

   public ClusterProperty findByHeader(EntityHeader var1) throws FindException {
      try {
         if (EntityType.CLUSTER_PROPERTY != var1.getType()) {
            throw new IllegalArgumentException(o[4] + var1);
         }
      } catch (IllegalArgumentException var7) {
         throw a(var7);
      }

      ClusterProperty var2 = null;
      Goid var3 = null;

      try {
         var3 = Goid.parseGoid(var1.getStrId());
      } catch (IllegalArgumentException var5) {
      }

      if (var3 != null) {
         var2 = (ClusterProperty)super.findByPrimaryKey(EntityTypeRegistry.getEntityClass(EntityType.CLUSTER_PROPERTY), var3);
      }

      try {
         if (var2 != null) {
            return var2;
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      return (ClusterProperty)super.findByUniqueName(var1.getName());
   }

   public Class<? extends Entity> getImpClass() {
      return ClusterProperty.class;
   }

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

   static {
      String[] var5 = new String[10];
      int var3 = 0;
      String var2 = "8,i\u0010D\u000210\n~7h]\u0007\u0010:--&\r?+b\u0014\u0010R(79h\u0014\n\u001b\u0015\u00170p\u001c\b\u0015?~6c\u001c\u0000\u0019)~*\u007f\r\u0001F{\u0007~)n\u0018\u0016\u0019{\u0004*,s\u0018\u0019;,t\u0012\u0016\\);*t\u0014\u0001\n209&\r\u0016\u0013+;,r\u0004";
      int var4 = "8,i\u0010D\u000210\n~7h]\u0007\u0010:--&\r?+b\u0014\u0010R(79h\u0014\n\u001b\u0015\u00170p\u001c\b\u0015?~6c\u001c\u0000\u0019)~*\u007f\r\u0001F{\u0007~)n\u0018\u0016\u0019{\u0004*,s\u0018\u0019;,t\u0012\u0016\\);*t\u0014\u0001\n209&\r\u0016\u0013+;,r\u0004"
         .length();
      char var1 = 5;
      int var7 = -1;

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

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

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

                  var2 = "U\u0015B5$yC[AM9,<\u0003\u0014\u001dE";
                  var4 = "U\u0015B5$yC[AM9,<\u0003\u0014\u001dE".length();
                  var1 = '\r';
                  var7 = -1;
            }

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

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

      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 -> 125;
            case 1 -> 125;
            case 2 -> 37;
            case 3 -> 94;
            case 4 -> 71;
            case 5 -> 95;
            default -> 120;
         });
      }

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