package com.l7tech.server.module;

import com.l7tech.gateway.common.module.ModuleState;
import com.l7tech.gateway.common.module.ServerModuleFile;
import com.l7tech.gateway.common.module.ServerModuleFileState;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.EntityManager.UniqueType;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.StashManagerFactory;
import com.l7tech.server.event.admin.ServerModuleFileAdminEvent;
import com.l7tech.util.Config;
import com.l7tech.util.Pair;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public class ServerModuleFileManagerImpl
   extends HibernateEntityManager<ServerModuleFile, EntityHeader>
   implements ApplicationEventPublisherAware,
   ServerModuleFileManager {
   public static final String F_MODULE_SHA256;
   @NotNull
   protected final Config config;
   @NotNull
   protected final String clusterNodeId;
   @NotNull
   protected final StashManagerFactory stashManagerFactory;
   private ApplicationEventPublisher m;
   private static final String n;
   private final String o;
   private static final String[] p;

   protected ServerModuleFileManagerImpl(@NotNull Config var1, @NotNull String var2, @NotNull StashManagerFactory var3) {
      if (var1 == null) {
         b(0);
      }

      if (var2 == null) {
         b(1);
      }

      if (var3 == null) {
         b(2);
      }

      super();
      ServerModuleFileManagerImpl var10000 = this;
      String var10001 = this.getTableName();
      String var10002 = this.getImpClass().getName();
      String var4 = this.getTableName();
      String var5 = var10002;
      String var6 = var10001;

      try {
         var10000.o = p[12] + var6 + p[19] + var5 + p[26] + var4 + p[30];
         this.config = var1;
         this.stashManagerFactory = var3;
         this.clusterNodeId = var2;
         if (StringUtils.isBlank(var2)) {
            throw new IllegalStateException(p[14]);
         }
      } catch (IllegalStateException var7) {
         throw a(var7);
      }
   }

   public Goid save(ServerModuleFile var1) throws SaveException {
      Goid var2 = super.save(var1);

      try {
         if (this.m != null) {
            this.m.publishEvent(new ServerModuleFileAdminEvent(this, ServerModuleFileAdminEvent.Action.UPLOADED, var1));
         }

         return var2;
      } catch (SaveException var3) {
         throw a(var3);
      }
   }

   public void save(@NotNull Goid var1, @NotNull ServerModuleFile var2) throws SaveException {
      try {
         if (var1 == null) {
            b(3);
         }
      } catch (SaveException var4) {
         throw a(var4);
      }

      try {
         if (var2 == null) {
            b(4);
         }
      } catch (SaveException var5) {
         throw a(var5);
      }

      try {
         super.save(var1, var2);
         if (this.m != null) {
            this.m.publishEvent(new ServerModuleFileAdminEvent(this, ServerModuleFileAdminEvent.Action.UPLOADED, var2));
         }
      } catch (SaveException var3) {
         throw a(var3);
      }
   }

   public void delete(ServerModuleFile var1) throws DeleteException {
      try {
         super.delete(var1);
         if (this.m != null) {
            this.m.publishEvent(new ServerModuleFileAdminEvent(this, ServerModuleFileAdminEvent.Action.DELETED, var1));
         }
      } catch (DeleteException var2) {
         throw a(var2);
      }
   }

   @Override
   public void delete(Goid param1) throws DeleteException, FindException {
      // $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 0
      // 01: aload 1
      // 02: invokevirtual com/l7tech/server/module/ServerModuleFileManagerImpl.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity;
      // 05: checkcast com/l7tech/gateway/common/module/ServerModuleFile
      // 08: astore 2
      // 09: aload 0
      // 0a: aload 1
      // 0b: invokespecial com/l7tech/server/HibernateEntityManager.delete (Lcom/l7tech/objectmodel/Goid;)V
      // 0e: aload 0
      // 0f: getfield com/l7tech/server/module/ServerModuleFileManagerImpl.m Lorg/springframework/context/ApplicationEventPublisher;
      // 12: ifnull 3c
      // 15: aload 2
      // 16: ifnull 3c
      // 19: goto 20
      // 1c: invokestatic com/l7tech/server/module/ServerModuleFileManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 0
      // 21: getfield com/l7tech/server/module/ServerModuleFileManagerImpl.m Lorg/springframework/context/ApplicationEventPublisher;
      // 24: new com/l7tech/server/event/admin/ServerModuleFileAdminEvent
      // 27: dup
      // 28: aload 0
      // 29: getstatic com/l7tech/server/event/admin/ServerModuleFileAdminEvent$Action.DELETED Lcom/l7tech/server/event/admin/ServerModuleFileAdminEvent$Action;
      // 2c: aload 2
      // 2d: invokespecial com/l7tech/server/event/admin/ServerModuleFileAdminEvent.<init> (Ljava/lang/Object;Lcom/l7tech/server/event/admin/ServerModuleFileAdminEvent$Action;Lcom/l7tech/gateway/common/module/ServerModuleFile;)V
      // 30: invokeinterface org/springframework/context/ApplicationEventPublisher.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 35: goto 3c
      // 38: invokestatic com/l7tech/server/module/ServerModuleFileManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3b: athrow
      // 3c: return
      // try (5 -> 13): 14 com/l7tech/objectmodel/DeleteException
      // try (11 -> 25): 26 com/l7tech/objectmodel/DeleteException
   }

   @Override
   public void updateState(@NotNull Goid var1, @NotNull ModuleState var2) throws UpdateException {
      try {
         if (var1 == null) {
            b(5);
         }
      } catch (RuntimeException var4) {
         throw a(var4);
      }

      try {
         if (var2 == null) {
            b(6);
         }
      } catch (RuntimeException var7) {
         throw a(var7);
      }

      try {
         ServerModuleFile var3 = this.findByPrimaryKey(var1);

         try {
            if (var3 == null) {
               throw new UpdateException(p[9]);
            }
         } catch (RuntimeException var5) {
            throw a(var5);
         }

         var3.setStateForNode(this.clusterNodeId, var2);
         super.update(var3);
      } catch (RuntimeException | FindException var6) {
         throw new UpdateException(p[28] + var1 + "\"", var6);
      }
   }

   @Override
   public void updateState(@NotNull Goid var1, @NotNull String var2) throws UpdateException {
      try {
         if (var1 == null) {
            b(7);
         }
      } catch (RuntimeException var4) {
         throw a(var4);
      }

      try {
         if (var2 == null) {
            b(8);
         }
      } catch (RuntimeException var7) {
         throw a(var7);
      }

      try {
         ServerModuleFile var3 = this.findByPrimaryKey(var1);

         try {
            if (var3 == null) {
               throw new UpdateException(p[2]);
            }
         } catch (RuntimeException var5) {
            throw a(var5);
         }

         var3.setStateErrorMessageForNode(this.clusterNodeId, var2);
         super.update(var3);
      } catch (RuntimeException | FindException var6) {
         throw new UpdateException(p[0] + var1 + "\"", var6);
      }
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   @Override
   public ServerModuleFileState findStateForCurrentNode(@NotNull ServerModuleFile var1) {
      try {
         if (var1 == null) {
            b(9);
         }
      } catch (IllegalStateException var2) {
         throw a(var2);
      }

      return var1.getStateForNode(this.clusterNodeId);
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   @Override
   public boolean isModuleUploadEnabled() {
      return this.config.getBooleanProperty(p[4], false);
   }

   @Nullable
   @Override
   public Pair<InputStream, String> getModuleBytesAsStreamWithSignature(@NotNull Goid var1) throws FindException {
      try {
         if (var1 == null) {
            b(10);
         }
      } catch (SQLException var4) {
         throw a(var4);
      }

      try {
         return this.doReadOnlyWork(new l(this, var1));
      } catch (SQLException var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

   @Transactional(readOnly = true)
   @Nullable
   @Override
   public ServerModuleFile findModuleWithSha256(@NotNull String var1) throws FindException {
      try {
         if (var1 == null) {
            b(11);
         }
      } catch (Exception var4) {
         throw a(var4);
      }

      try {
         return (ServerModuleFile)this.getHibernateTemplate().execute(new m(this, var1));
      } catch (Exception var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

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

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

   protected Collection<Map<String, Object>> getUniqueConstraints(@NotNull ServerModuleFile var1) {
      try {
         if (var1 == null) {
            b(12);
         }
      } catch (IllegalStateException var3) {
         throw a(var3);
      }

      Map[] var10000 = new Map[2];
      String[] var2 = p;
      var10000[0] = Collections.singletonMap(var2[27], var1.getName());
      var10000[1] = Collections.singletonMap(var2[29], var1.getModuleSha256());
      return Arrays.asList(var10000);
   }

   public void setApplicationEventPublisher(ApplicationEventPublisher var1) {
      this.m = var1;
   }

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

   static {
      String[] var5 = new String[33];
      int var3 = 0;
      String var2 = "\t_\u001a'91e(^[0%0$(T[60&39C[(:000T[#<8 |B\u000f$!1e:^\te9=6(T\u0015 'tg\u000b)A\u001f$!1\u0016(P\u000f 6\u001fP\u0015+: e:X\u0015!u!58P\u000f,;3e/T\t30&e1^\u001f091e:X\u0017 u273\\[!4 $>P\b {\u0005/E\u001a10\u001e/T\t30&\b3U\u000e)0\u0012,0TU0%8*=UU ;5'0T\n1^\u001f091\u00035]\u001e\u0004;^\u0012!\r?]\u000e6!17\u0012^\u001f \u001c0#;T\u000f\b:000T9<!16\u001dB(1'1$1f\u00121=\u0007,;_\u001a1 & 6\u001fP\u0015+: e:X\u0015!u!58P\u000f,;3e/T\t30&e1^\u001f091e:X\u0017 u273\\[!4 $>P\b {¤\u000ft7\u0000\u0016\u0000e8P\u000f$\n6<(T\biu',;_\u001a1 & \u0003A\t*%17(X\u001e6u\u0012\u0017\u0013|[60&39C$(:000T$#<8 |\\\u0014! 8 |x5\u000b\u0010\u0006e\u0016~2\u000bu' .G\u001e7\n9*8D\u0017 \n2,0T$!4 $|U\u001a14t\n\u0012\u0011\u0016*1!)9\u001f\u001f$!5\u001a;^\u0012!uie8P\u000f${3*5U[\u0012\u001d\u0011\u0017\u0019\u0011\u0016*1!)9\u001f\u001c*<0ea\u0011D\f9C\t*'\u0019 /B\u001a\"0\u0005\u001ac4\bu\u0004/P\r (\u001fD\t70:1|R\u00170&  .\u0011\u0015*11h5U[&4:+3E['0t'0P\u0015.t>\u001dC\u001c081+(\u0011\u001d*'t\u0005\u0012^\u000f\u000b 8)|A\u001a749 (T\terq6{\u0011\u0014#uq6r\u0014\be8!6(\u0011\u0015*!t'9\u0011\u0015098\f1^\u001f091\u00164PIpc\u0014;T\u000f\u0010;=4)T8*;'1.P\u0012+!'\u0006?^\u0015#<3\n|x5e\u0016\u0018\u0004\u000fb[\u0013/E\u001a6=\u0019$2P\u001c '\u0012$?E\u00147,\u00069_\u000f,!-\u00025U\u0014:X\u0015!\u0018;!)]\u001e\u0012< -\u000fY\u001aw`b4?^\u0016j9c19R\u0013j&17*T\tj8;!)]\u001ej\u000617*T\t\b:000T=,91\b=_\u001a\"0&\f1A\u0017\n1^\u001f091\u00023X\u001f\u0007|f3\u0000\u0007\u0011e\u00042P\u0016 8\t_\u001a'91e(^[0%0$(T[60&39C[(:000T[#<8 |B\u000f$!1e:^\te9=6(T\u0015 'tg\f1^\u001f091\u00164PIpc\u001dr\\\u0014! 8 \u000fY\u001aw`bea\u0011A(:000T(-4fpj";
      int var4 = "\t_\u001a'91e(^[0%0$(T[60&39C[(:000T[#<8 |B\u000f$!1e:^\te9=6(T\u0015 'tg\u000b)A\u001f$!1\u0016(P\u000f 6\u001fP\u0015+: e:X\u0015!u!58P\u000f,;3e/T\t30&e1^\u001f091e:X\u0017 u273\\[!4 $>P\b {\u0005/E\u001a10\u001e/T\t30&\b3U\u000e)0\u0012,0TU0%8*=UU ;5'0T\n1^\u001f091\u00035]\u001e\u0004;^\u0012!\r?]\u000e6!17\u0012^\u001f \u001c0#;T\u000f\b:000T9<!16\u001dB(1'1$1f\u00121=\u0007,;_\u001a1 & 6\u001fP\u0015+: e:X\u0015!u!58P\u000f,;3e/T\t30&e1^\u001f091e:X\u0017 u273\\[!4 $>P\b {¤\u000ft7\u0000\u0016\u0000e8P\u000f$\n6<(T\biu',;_\u001a1 & \u0003A\t*%17(X\u001e6u\u0012\u0017\u0013|[60&39C$(:000T$#<8 |\\\u0014! 8 |x5\u000b\u0010\u0006e\u0016~2\u000bu' .G\u001e7\n9*8D\u0017 \n2,0T$!4 $|U\u001a14t\n\u0012\u0011\u0016*1!)9\u001f\u001f$!5\u001a;^\u0012!uie8P\u000f${3*5U[\u0012\u001d\u0011\u0017\u0019\u0011\u0016*1!)9\u001f\u001c*<0ea\u0011D\f9C\t*'\u0019 /B\u001a\"0\u0005\u001ac4\bu\u0004/P\r (\u001fD\t70:1|R\u00170&  .\u0011\u0015*11h5U[&4:+3E['0t'0P\u0015.t>\u001dC\u001c081+(\u0011\u001d*'t\u0005\u0012^\u000f\u000b 8)|A\u001a749 (T\terq6{\u0011\u0014#uq6r\u0014\be8!6(\u0011\u0015*!t'9\u0011\u0015098\f1^\u001f091\u00164PIpc\u0014;T\u000f\u0010;=4)T8*;'1.P\u0012+!'\u0006?^\u0015#<3\n|x5e\u0016\u0018\u0004\u000fb[\u0013/E\u001a6=\u0019$2P\u001c '\u0012$?E\u00147,\u00069_\u000f,!-\u00025U\u0014:X\u0015!\u0018;!)]\u001e\u0012< -\u000fY\u001aw`b4?^\u0016j9c19R\u0013j&17*T\tj8;!)]\u001ej\u000617*T\t\b:000T=,91\b=_\u001a\"0&\f1A\u0017\n1^\u001f091\u00023X\u001f\u0007|f3\u0000\u0007\u0011e\u00042P\u0016 8\t_\u001a'91e(^[0%0$(T[60&39C[(:000T[#<8 |B\u000f$!1e:^\te9=6(T\u0015 'tg\f1^\u001f091\u00164PIpc\u001dr\\\u0014! 8 \u000fY\u001aw`bea\u0011A(:000T(-4fpj"
         .length();
      char var1 = '8';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 113;
         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) {
                     p = var5;
                     String[] var9 = p;
                     F_MODULE_SHA256 = p[16];
                     n = var9[10];
                     return;
                  }

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

                  var2 = "e\u0007J~Y\u007f{w\u000bbuxHoq\u001cAt~Eug\u000b\u0006?\u0007Js~5";
                  var4 = "e\u0007J~Y\u007f{w\u000bbuxHoq\u001cAt~Eug\u000b\u0006?\u0007Js~5".length();
                  var1 = 23;
                  var7 = -1;
            }

            var10000 = 46;
            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] ^ 52);
      }

      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 -> 45;
            case 1 -> 64;
            case 2 -> 10;
            case 3 -> 52;
            case 4 -> 36;
            case 5 -> 37;
            default -> 52;
         });
      }

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