package com.l7tech.server.upgrade;

import com.l7tech.gateway.common.solutionkit.SolutionKit;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.server.solutionkit.SolutionKitManager;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.transaction.PlatformTransactionManager;

public class Upgrade9200To9300SolutionKits implements UpgradeTask {
   private ApplicationContext a;
   private PlatformTransactionManager b;
   private static final Logger c;
   private int d = 0;
   private int e = 0;
   private static final String[] f;

   @Override
   public void upgrade(ApplicationContext var1) throws NonfatalUpgradeException, FatalUpgradeException {
      this.a = var1;
      String[] var3 = f;
      SolutionKitManager var2 = this.a(var3[4], SolutionKitManager.class);
      this.b = this.a(var3[11], PlatformTransactionManager.class);
      c.log(Level.INFO, var3[2]);
      this.a(var2);
      c.log(Level.INFO, var3[14], new Object[]{this.d, this.e});
   }

   private void a(SolutionKitManager var1) throws NonfatalUpgradeException {
      HashSet var2 = new HashSet();

      Collection var3;
      try {
         var3 = var1.findAll();
      } catch (FindException var15) {
         String[] var12 = f;
         throw new NonfatalUpgradeException(var12[13]);
      }

      try {
         if (var3.isEmpty()) {
            return;
         }
      } catch (FindException var17) {
         throw a(var17);
      }

      for (SolutionKit var5 : var3) {
         Goid var6 = var5.getParentGoid();
         String var7 = var5.getProperty(SolutionKit.SK_PROP_INSTANCE_MODIFIER_KEY);

         label57: {
            try {
               if (var6 != null) {
                  break label57;
               }

               if (!StringUtils.isBlank(var7)) {
                  continue;
               }
            } catch (FindException var16) {
               throw a(var16);
            }

            if (Boolean.valueOf(var5.getProperty(SolutionKit.SK_PROP_IS_COLLECTION_KEY))) {
               var2.add(var5.getGoid());
            }
            continue;
         }

         try {
            SolutionKit var8 = (SolutionKit)var1.findByPrimaryKey(var6);
            if (var8 == null) {
               String[] var19 = f;
               c.log(Level.WARNING, var19[0], new Object[]{var5.getName(), var7});
               var5.setParentGoid(null);
               this.b(this.b, var1, var5);
            } else {
               SolutionKit var18 = var1.findBySolutionKitGuidAndIM(var8.getSolutionKitGuid(), var7);
               if (var18 == null) {
                  SolutionKit var10 = this.a(var8);
                  var10.setProperty(SolutionKit.SK_PROP_INSTANCE_MODIFIER_KEY, var7);
                  Goid var11 = this.a(this.b, var1, var10);
                  var5.setParentGoid(var11);
                  this.b(this.b, var1, var5);
               } else {
                  try {
                     if (!Goid.equals(var6, var18.getGoid())) {
                        var5.setParentGoid(var18.getGoid());
                        this.b(this.b, var1, var5);
                     }
                  } catch (FindException var13) {
                     throw a(var13);
                  }
               }
            }
         } catch (FindException var14) {
            String var9 = String.format(f[7], var5.getName(), var5.getProperty(SolutionKit.SK_PROP_INSTANCE_MODIFIER_KEY), var14.toString());
            throw new NonfatalUpgradeException(var9);
         }
      }

      this.a(var1, var2);
   }

   private void a(SolutionKitManager var1, Set<Goid> var2) throws NonfatalUpgradeException {
      for (Goid var4 : var2) {
         try {
            Collection var5 = var1.findAllChildrenByParentGoid(var4);

            try {
               if (var5.isEmpty()) {
                  var1.delete(var4);
                  this.e++;
               }
            } catch (FindException var7) {
               throw a(var7);
            }
         } catch (FindException | DeleteException var8) {
            String var6 = String.format(f[3], var4.toString());
            throw new NonfatalUpgradeException(var6);
         }
      }
   }

   private <T> T a(String var1, Class<T> var2) throws FatalUpgradeException {
      try {
         if (this.a == null) {
            throw new FatalUpgradeException(f[8]);
         }
      } catch (BeansException var6) {
         throw a(var6);
      }

      try {
         return (T)this.a.getBean(var1, var2);
      } catch (BeansException var5) {
         String[] var4 = f;
         throw new FatalUpgradeException(var4[12] + var1 + var4[15]);
      }
   }

   private SolutionKit a(SolutionKit var1) {
      SolutionKit var2 = new SolutionKit();
      var2.setSolutionKitGuid(var1.getSolutionKitGuid());
      var2.setName(var1.getName());
      var2.setMappings(var1.getMappings());
      var2.setInstallationXmlProperties(var1.getInstallationXmlProperties());
      var2.setSolutionKitVersion(var1.getSolutionKitVersion());
      var2.setUninstallBundle(var1.getUninstallBundle());
      var2.setXmlProperties(var1.getXmlProperties());
      return var2;
   }

   private Goid a(PlatformTransactionManager var1, SolutionKitManager var2, @NotNull SolutionKit var3) throws NonfatalUpgradeException {
      try {
         if (var3 == null) {
            a(0);
         }
      } catch (SaveException var8) {
         throw a(var8);
      }

      try {
         Goid var4 = var2.save(var3);
         var1.getTransaction(null).flush();
         this.d++;
         return var4;
      } catch (SaveException var7) {
         String var6 = String.format(f[9], var3.getName(), var3.getProperty(SolutionKit.SK_PROP_INSTANCE_MODIFIER_KEY));
         throw new NonfatalUpgradeException(var6);
      }
   }

   private void b(PlatformTransactionManager var1, SolutionKitManager var2, SolutionKit var3) throws NonfatalUpgradeException {
      try {
         var2.update(var3);
         var1.getTransaction(null).flush();
      } catch (UpdateException var6) {
         String var5 = String.format(f[16], var3.getName(), var3.getProperty(SolutionKit.SK_PROP_INSTANCE_MODIFIER_KEY));
         throw new NonfatalUpgradeException(var5);
      }
   }

   static {
      String[] var5 = new String[17];
      int var3 = 0;
      String var2 = "M(6\n\u001a\"(a3c\u0000\u0017l\".7\"\u0014\u001bl2.\u0014,\n\u000bv/a)c-\u0017vfh(1F\u001dj/b#c5\u0011n3z.,\b^I/z}c\u001dN\u007fj.0*\u0012\u0016\"/`47\u0007\u0010a#4g8W\u0003,\u0012f\"c\u0016\u001fp#`3c!\u0011k\".0*\n\u0012\"$kg0\u0003\n\"2ag-\u0013\u0012nfo)'F\nj/}g\u0010\t\u0012w2g(-F5k2.0*\n\u0012\"$k$,\u000b\u001b\"'.47\u0007\u0010f'b(-\u0003P\u0017m5&\u0007\ng\u0016o5&\b\nQ)b27\u000f\u0011l\rg3*K?&\u0005\u000bv/` c5\u0011n3z.,\b^I/zg7\u0007\u001cn#.#\"\u0012\u001f\"3~ 1\u0007\u001aghIK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg7\u0014\u0007k(ig7\t^f#b\"7\u0003^r'|\"-\u0012^Q)b27\u000f\u0011lfE.7F\tk2fg\u0004\t\u0017f|.b0\u0012}(/\u0013\nk)`\f*\u00123c(o &\u0014\u000b`\"46\u001fp#`3\u0010-7m(.I\u001252k$+I\rg4x\"1I\u000br!|&'\u0003QW6i5\"\u0002\u001b;t>w\u0017\tG1v>\u0014,\n\u000bv/a)\b\u000f\nqLK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg3\u0014\u0011a#}4*\b\u0019\"\u0015a+6\u0012\u0017m(.\f*\u0012D\"c}kc/\u0010q2o) \u0003D\"c}g\u000e\u0003\rq'i\"yF[q\u001eO73\n\u0017a'z.,\b=m(z\";\u0012^k5.5&\u0017\u000bk4k#ZK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg7\u0014\u0007k(ig0\u0007\bgf`\"4F\u000ec4k)7F-m*{3*\t\u0010\"\rg3yF[qj.0*\u0012\u0016\"/`47\u0007\u0010a#.*,\u0002\u0017d/k5yF[q>O5$\u0013\u0013g(zg%\t\f\"\u0006@(7(\u000bn*.7\"\u0014\u001fo#z\"1FY'5)g,\u0000^'5 b0F\u0013w5zg-\t\n\"$kg-\u0013\u0012n\u0012z5\"\b\rc%z.,\b3c(o &\u0014\u0017K51\t\f\"'m$&\u0015\rk(igc\u0004\u001bc(.`\u001eK51\t\f\"4k31\u000f\u001bt/` c5\u0011n3z.,\b^I/z4e](/\u0013\nk)`g\b\u000f\n\"2o%/\u0003^f'z&c\u0013\u000ee4o#&F\u001dm+~+&\u0012\u001bfh.<s\u001b^l#yg\u0013\u0007\fg(zg\u0010\t\u0012w2g(-F5k2.5&\u0005\u0011p\"}g \u0014\u001bc2k#mF^ywsg'\u0003\u0012g2k#m";
      int var4 = "M(6\n\u001a\"(a3c\u0000\u0017l\".7\"\u0014\u001bl2.\u0014,\n\u000bv/a)c-\u0017vfh(1F\u001dj/b#c5\u0011n3z.,\b^I/z}c\u001dN\u007fj.0*\u0012\u0016\"/`47\u0007\u0010a#4g8W\u0003,\u0012f\"c\u0016\u001fp#`3c!\u0011k\".0*\n\u0012\"$kg0\u0003\n\"2ag-\u0013\u0012nfo)'F\nj/}g\u0010\t\u0012w2g(-F5k2.0*\n\u0012\"$k$,\u000b\u001b\"'.47\u0007\u0010f'b(-\u0003P\u0017m5&\u0007\ng\u0016o5&\b\nQ)b27\u000f\u0011l\rg3*K?&\u0005\u000bv/` c5\u0011n3z.,\b^I/zg7\u0007\u001cn#.#\"\u0012\u001f\"3~ 1\u0007\u001aghIK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg7\u0014\u0007k(ig7\t^f#b\"7\u0003^r'|\"-\u0012^Q)b27\u000f\u0011lfE.7F\tk2fg\u0004\t\u0017f|.b0\u0012}(/\u0013\nk)`\f*\u00123c(o &\u0014\u000b`\"46\u001fp#`3\u0010-7m(.I\u001252k$+I\rg4x\"1I\u000br!|&'\u0003QW6i5\"\u0002\u001b;t>w\u0017\tG1v>\u0014,\n\u000bv/a)\b\u000f\nqLK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg3\u0014\u0011a#}4*\b\u0019\"\u0015a+6\u0012\u0017m(.\f*\u0012D\"c}kc/\u0010q2o) \u0003D\"c}g\u000e\u0003\rq'i\"yF[q\u001eO73\n\u0017a'z.,\b=m(z\";\u0012^k5.5&\u0017\u000bk4k#ZK? \u0003\u000ev/a)c\u0005\u001fw!f3c\u0011\u0016k*kg7\u0014\u0007k(ig0\u0007\bgf`\"4F\u000ec4k)7F-m*{3*\t\u0010\"\rg3yF[qj.0*\u0012\u0016\"/`47\u0007\u0010a#.*,\u0002\u0017d/k5yF[q>O5$\u0013\u0013g(zg%\t\f\"\u0006@(7(\u000bn*.7\"\u0014\u001fo#z\"1FY'5)g,\u0000^'5 b0F\u0013w5zg-\t\n\"$kg-\u0013\u0012n\u0012z5\"\b\rc%z.,\b3c(o &\u0014\u0017K51\t\f\"'m$&\u0015\rk(igc\u0004\u001bc(.`\u001eK51\t\f\"4k31\u000f\u001bt/` c5\u0011n3z.,\b^I/z4e](/\u0013\nk)`g\b\u000f\n\"2o%/\u0003^f'z&c\u0013\u000ee4o#&F\u001dm+~+&\u0012\u001bfh.<s\u001b^l#yg\u0013\u0007\fg(zg\u0010\t\u0012w2g(-F5k2.5&\u0005\u0011p\"}g \u0014\u001bc2k#mF^ywsg'\u0003\u0012g2k#m"
         .length();
      char var1 = 166;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     f = var5;
                     c = Logger.getLogger(Upgrade9200To9300SolutionKits.class.getName());
                     return;
                  }

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

                  var2 = "z4vGB<5\u001cd`YD2t)}\u007f[n>{)qhA\u0003T\u0018lsP]%|2z0VL$r5`0BE8y84dGT8{:4dZ\r$e9udP\r\u0002z1ad\\B?5\u0016}d\u000f\rtfq4g\\Y954zcAL?v84}ZI8s4qb\u000f\rtf";
                  var4 = "z4vGB<5\u001cd`YD2t)}\u007f[n>{)qhA\u0003T\u0018lsP]%|2z0VL$r5`0BE8y84dGT8{:4dZ\r$e9udP\r\u0002z1ad\\B?5\u0016}d\u000f\rtfq4g\\Y954zcAL?v84}ZI8s4qb\u000f\rtf"
                     .length();
                  var1 = 26;
                  var7 = -1;
            }

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

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

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

      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 -> 108;
            case 1 -> 37;
            case 2 -> 33;
            case 3 -> 4;
            case 4 -> 28;
            case 5 -> 96;
            default -> 36;
         });
      }

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