package com.l7tech.server.util;

import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.ResourceUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ServerGoidUpgradeMapper extends GoidUpgradeMapper implements ApplicationContextAware, InitializingBean {
   private static final Logger a;
   public static final String GOID_UPGRADE_MAP_TABLE;
   public static final String PREFIX_COLUMN;
   public static final String TABLE_NAME_COLUMN;
   public static final String GET_BY_ENTITY_TYPE_STMT;
   private ApplicationContext b;
   private static final String[] d;

   public void afterPropertiesSet() throws Exception {
      SessionFactory var1 = (SessionFactory)this.b.getBean(d[5], SessionFactory.class);
      Session var2 = var1.openSession();

      try {
         var2.doWork(var1x -> {
            Statement var2x = null;
            ResultSet var3 = null;

            try {
               var2x = var1x.createStatement();

               try {
                  String[] var13 = d;
                  var3 = var2x.executeQuery(var13[2]);
                  a.log(Level.FINE, var13[8]);
               } catch (SQLException var11) {
                  String[] var8 = d;
                  a.log(Level.FINE, var8[1]);
                  return;
               }

               HashMap var4 = new HashMap();

               while (var3.next()) {
                  String[] var14 = d;
                  Long var5x = var3.getLong(var14[9]);
                  String var6x = var3.getString(var14[7]);
                  var4.put(var6x, var5x);
               }

               this.setPrefixes(var4);
            } finally {
               ResourceUtils.closeQuietly(var3);
               ResourceUtils.closeQuietly(var2x);
            }
         });
      } catch (Throwable var6) {
         if (var2 != null) {
            try {
               var2.close();
            } catch (Throwable var5) {
               var6.addSuppressed(var5);
            }
         }

         throw var6;
      }

      if (var2 != null) {
         var2.close();
      }
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      this.b = var1;
   }

   static {
      String[] var5 = new String[10];
      int var3 = 0;
      String var2 = "6|r\u0015q\tT\u0015K[6[%XEM_2^8+\u000bXS5\u0012\u001b&*t\u001e7]4\u0010:LN7@<\u0010\u0000fS1B=!PZp\\2\u0000E_W>V}\u0015\u000b@\u001e\u0017]4\u0010EIL5T4\f\u0000J\u001e7W3\u0011\u0017XJ5V}\u0016\u001c\u0019_>\u0012eZU\u0017\u000epG-\u0013\u0017XZ5\u001c/6|r\u0015q\tT\u0015K[6[%XEM_2^8+\u000bXS5\u0012\u001b&*t\u001e7]4\u0010:LN7@<\u0010\u0000fS1B\u0010\u0002VW4m(\u0004\u0002K_4W\u0002\u0019\u0004I\u0006\u0015K[6[%\u000e\u0016\\M#[2\u001a#X]$]/\r\n\u0011X\\<W\u0002\u001a\u0004T[\n\u0011X\\<W\u0002\u001a\u0004T[";
      int var4 = "6|r\u0015q\tT\u0015K[6[%XEM_2^8+\u000bXS5\u0012\u001b&*t\u001e7]4\u0010:LN7@<\u0010\u0000fS1B=!PZp\\2\u0000E_W>V}\u0015\u000b@\u001e\u0017]4\u0010EIL5T4\f\u0000J\u001e7W3\u0011\u0017XJ5V}\u0016\u001c\u0019_>\u0012eZU\u0017\u000epG-\u0013\u0017XZ5\u001c/6|r\u0015q\tT\u0015K[6[%XEM_2^8+\u000bXS5\u0012\u001b&*t\u001e7]4\u0010:LN7@<\u0010\u0000fS1B\u0010\u0002VW4m(\u0004\u0002K_4W\u0002\u0019\u0004I\u0006\u0015K[6[%\u000e\u0016\\M#[2\u001a#X]$]/\r\n\u0011X\\<W\u0002\u001a\u0004T[\n\u0011X\\<W\u0002\u001a\u0004T["
         .length();
      char var1 = '/';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 124;
         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) {
                     d = var5;
                     String[] var9 = d;
                     GET_BY_ENTITY_TYPE_STMT = d[0];
                     TABLE_NAME_COLUMN = var9[6];
                     PREFIX_COLUMN = var9[4];
                     GOID_UPGRADE_MAP_TABLE = var9[3];
                     a = Logger.getLogger(GoidUpgradeMapper.class.getName());
                     return;
                  }

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

                  var2 = "h\u001d\u0000u\u001d6xA\u001b\u0011;\tdZH\u001b\r~\n6XK\u001c\u0010i\u0018bZJR\u0017bYwQ\u000eJ[+W&\u001f[\u0002\u0012i\u0018rZ\u0002R\u0005t\tcSO\u0006\u001cu\u001e6KF\u0017U\\\u0016\u007f[{\u0002\u0012i\u0018rZc\u0013\u0005k\u001cd\u0011\u0006^\u0000\u0010}\u0010n";
                  var4 = "h\u001d\u0000u\u001d6xA\u001b\u0011;\tdZH\u001b\r~\n6XK\u001c\u0010i\u0018bZJR\u0017bYwQ\u000eJ[+W&\u001f[\u0002\u0012i\u0018rZ\u0002R\u0005t\tcSO\u0006\u001cu\u001e6KF\u0017U\\\u0016\u007f[{\u0002\u0012i\u0018rZc\u0013\u0005k\u001cd\u0011\u0006^\u0000\u0010}\u0010n"
                     .length();
                  var1 = 'T';
                  var7 = -1;
            }

            var10000 = 55;
            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] ^ 8);
      }

      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 -> 25;
            case 1 -> 69;
            case 2 -> 66;
            case 3 -> 44;
            case 4 -> 78;
            case 5 -> 33;
            default -> 8;
         });
      }

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