package com.l7tech.server;

import com.l7tech.gateway.common.jdbc.JdbcConnection;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.server.event.EntityInvalidationEvent;
import com.l7tech.server.jdbc.JdbcConnectionManager;
import com.l7tech.server.jdbc.JdbcConnectionPoolManager;
import com.l7tech.server.util.PostStartupApplicationListener;
import java.text.MessageFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.context.ApplicationEvent;

public class JdbcConnectionResolver implements PostStartupApplicationListener {
   private static final Logger a = Logger.getLogger(JdbcConnectionResolver.class.getName());
   private JdbcConnectionManager b;
   private JdbcConnectionPoolManager c;
   private static final String d;

   public JdbcConnectionResolver(JdbcConnectionManager var1, JdbcConnectionPoolManager var2) {
      this.b = var1;
      this.c = var2;
   }

   @Override
   public void onApplicationEvent(ApplicationEvent var1) {
      if (var1 instanceof EntityInvalidationEvent var2 && JdbcConnection.class.equals(var2.getEntityClass())) {
         for (int var3 = 0; var3 < var2.getEntityOperations().length; var3++) {
            char var4 = var2.getEntityOperations()[var3];
            Goid var5 = var2.getEntityIds()[var3];
            switch (var4) {
               case 'C':
               case 'U':
                  try {
                     JdbcConnection var10 = (JdbcConnection)this.b.findByPrimaryKey(var5);
                     this.c.updateConnectionPool(var10, false);
                     this.b.clearAllFromCache();
                  } catch (FindException var8) {
                     FindException var9 = var8;

                     try {
                        if (a.isLoggable(Level.WARNING)) {
                           a.log(Level.WARNING, MessageFormat.format(d, var5), var9);
                        }
                     } catch (FindException var7) {
                        throw a(var7);
                     }
                  }
                  break;
               case 'D':
                  String var6 = this.c.getConnectionName(var5);
                  this.c.deleteConnectionPool(var6);
                  this.b.clearAllFromCache();
            }
         }
      }
   }

   static {
      String var10002 = a(119, a("Xk>8#c6yj\u007f<&hr-f-?.rsi***+gbha\u007f0+du-f04!cuyl04o%m=x"));
      byte var10001 = -1;
      d = var10002;
   }

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

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

      return var10000;
   }

   private static String a(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 -> 122;
            case 1 -> 114;
            case 2 -> 40;
            case 3 -> 45;
            case 4 -> 56;
            case 5 -> 113;
            default -> 97;
         });
      }

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