package com.l7tech.server.jdbc;

import com.l7tech.gateway.common.jdbc.JdbcConnection;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.NamedEntity;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.EntityManager.UniqueType;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.util.PostStartupTransactionalApplicationListener;
import java.util.List;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.springframework.context.ApplicationListener;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class JdbcConnectionManagerImpl
   extends HibernateEntityManager<JdbcConnection, EntityHeader>
   implements JdbcConnectionManager,
   PostStartupTransactionalApplicationListener {
   private static final Logger m;
   private static final String[] n;

   public Class<? extends PersistentEntity> getImpClass() {
      return JdbcConnection.class;
   }

   @Override
   protected UniqueType getUniqueType() {
      return UniqueType.NAME;
   }

   @Override
   public JdbcConnection getJdbcConnection(String var1) throws FindException {
      return this.findByUniqueName(var1);
   }

   @Transactional(readOnly = true)
   public JdbcConnection findByUniqueName(String var1) throws FindException {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (HibernateException var4) {
         throw a(var4);
      }

      try {
         if (!NamedEntity.class.isAssignableFrom(this.getImpClass())) {
            throw new IllegalArgumentException(n[2]);
         }
      } catch (HibernateException var5) {
         throw a(var5);
      }

      try {
         return (JdbcConnection)this.getHibernateTemplate().execute(new q(this, var1));
      } catch (HibernateException var3) {
         throw new FindException(n[0], var3);
      }
   }

   @Override
   public List<String> getSupportedDriverClass() {
      // $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: new java/util/ArrayList
      // 03: dup
      // 04: invokespecial java/util/ArrayList.<init> ()V
      // 07: astore 1
      // 08: invokestatic com/l7tech/server/ServerConfig.getInstance ()Lcom/l7tech/server/ServerConfig;
      // 0b: getstatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.n [Ljava/lang/String;
      // 0e: bipush 3
      // 0f: aaload
      // 10: invokevirtual com/l7tech/server/ServerConfig.getProperty (Ljava/lang/String;)Ljava/lang/String;
      // 13: astore 2
      // 14: aload 2
      // 15: ifnull 65
      // 18: aload 2
      // 19: invokevirtual java/lang/String.isEmpty ()Z
      // 1c: ifne 65
      // 1f: goto 26
      // 22: invokestatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.a (Ljava/lang/RuntimeException;)Ljava/lang/RuntimeException;
      // 25: athrow
      // 26: new java/util/StringTokenizer
      // 29: dup
      // 2a: aload 2
      // 2b: ldc "\n"
      // 2d: invokespecial java/util/StringTokenizer.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 30: astore 3
      // 31: aload 3
      // 32: invokevirtual java/util/StringTokenizer.hasMoreTokens ()Z
      // 35: ifeq 65
      // 38: aload 3
      // 39: invokevirtual java/util/StringTokenizer.nextToken ()Ljava/lang/String;
      // 3c: astore 4
      // 3e: aload 4
      // 40: ifnull 62
      // 43: aload 4
      // 45: invokevirtual java/lang/String.isEmpty ()Z
      // 48: ifne 62
      // 4b: goto 52
      // 4e: invokestatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.a (Ljava/lang/RuntimeException;)Ljava/lang/RuntimeException;
      // 51: athrow
      // 52: aload 1
      // 53: aload 4
      // 55: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 5a: pop
      // 5b: goto 62
      // 5e: invokestatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.a (Ljava/lang/RuntimeException;)Ljava/lang/RuntimeException;
      // 61: athrow
      // 62: goto 31
      // 65: aload 1
      // 66: areturn
      // try (10 -> 15): 16 java/lang/NullPointerException
      // try (30 -> 35): 36 java/lang/NullPointerException
      // try (32 -> 42): 43 java/lang/NullPointerException
   }

   @Override
   public boolean isDriverClassSupported(String 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: ifnull 24
      // 04: aload 1
      // 05: invokevirtual java/lang/String.isEmpty ()Z
      // 08: ifne 24
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.a (Ljava/lang/RuntimeException;)Ljava/lang/RuntimeException;
      // 11: athrow
      // 12: aload 0
      // 13: invokevirtual com/l7tech/server/jdbc/JdbcConnectionManagerImpl.getSupportedDriverClass ()Ljava/util/List;
      // 16: aload 1
      // 17: invokestatic com/l7tech/server/policy/variable/ExpandVariables.processEnvVar (Ljava/lang/String;)Ljava/lang/String;
      // 1a: invokeinterface java/util/List.contains (Ljava/lang/Object;)Z 2
      // 1f: ireturn
      // 20: invokestatic com/l7tech/server/jdbc/JdbcConnectionManagerImpl.a (Ljava/lang/RuntimeException;)Ljava/lang/RuntimeException;
      // 23: athrow
      // 24: bipush 0
      // 25: ireturn
      // try (0 -> 5): 6 java/lang/NullPointerException
      // try (2 -> 14): 14 java/lang/NullPointerException
   }

   @Override
   public void clearAllFromCache() {
      try {
         if (this.getSessionFactory().getCache() != null) {
            m.warning(n[1]);
            this.getSessionFactory().getCache().evictQueryRegions();
            this.getSessionFactory().getCache().evictEntityRegion(JdbcConnection.class);
         }
      } catch (NullPointerException var1) {
         throw a(var1);
      }
   }

   @Override
   public ApplicationListener getListener() {
      return new i(this);
   }

   static {
      String[] var5 = new String[4];
      int var3 = 0;
      String var2 = "xt`\b\u0007>\bO;s\r\r4\u000fNu|\u0015\u00165\u000f^ua\r\u0017)+xwp\u0005\u00119A\\;t\b\u000fpLZx}\u0001\u0007pe_yv'\f>A^xa\r\f>\u000f^ua\r\u00179JH";
      int var4 = "xt`\b\u0007>\bO;s\r\r4\u000fNu|\u0015\u00165\u000f^ua\r\u0017)+xwp\u0005\u00119A\\;t\b\u000fpLZx}\u0001\u0007pe_yv'\f>A^xa\r\f>\u000f^ua\r\u00179JH"
         .length();
      char var1 = 27;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 2;
         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) {
                     n = var5;
                     m = Logger.getLogger(JdbcConnectionManagerImpl.class.getName());
                     return;
                  }

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

                  var2 = "$87\\\bV\u0005\u001e19JZ<\u0017P50[Ao\r\u0015#~NZ~D\u001e?*\u000ffz\t\u00154\u001bA\\r\u0010\u00195-\u000e$\u001a4<Lkt\n\u001e5=[At\n^4,F^~\u00163<?\\[5\u0013\u00189*Jdr\u0017\u0004";
                  var4 = "$87\\\bV\u0005\u001e19JZ<\u0017P50[Ao\r\u0015#~NZ~D\u001e?*\u000ffz\t\u00154\u001bA\\r\u0010\u00195-\u000e$\u001a4<Lkt\n\u001e5=[At\n^4,F^~\u00163<?\\[5\u0013\u00189*Jdr\u0017\u0004"
                     .length();
                  var1 = '.';
                  var7 = -1;
            }

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

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

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

      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 -> 57;
            case 1 -> 25;
            case 2 -> 23;
            case 3 -> 102;
            case 4 -> 97;
            case 5 -> 82;
            default -> 45;
         });
      }

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