package com.l7tech.external.assertions.gatewaymanagement.server;

import com.l7tech.gateway.api.ActiveConnectorMO;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.gateway.common.transport.SsgActiveConnector;
import com.l7tech.gateway.common.transport.SsgActiveConnectorHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.server.security.rbac.RbacServices;
import com.l7tech.server.security.rbac.SecurityFilter;
import com.l7tech.server.security.rbac.SecurityZoneManager;
import com.l7tech.server.transport.SsgActiveConnectorManager;
import com.l7tech.util.GoidUpgradeMapper;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.transaction.PlatformTransactionManager;

@ResourceFactory.ResourceType(type = ActiveConnectorMO.class)
public class ActiveConnectorResourceFactory
   extends SecurityZoneableEntityManagerResourceFactory<ActiveConnectorMO, SsgActiveConnector, SsgActiveConnectorHeader> {
   private static final String[] o;

   public ActiveConnectorResourceFactory(
      RbacServices var1, SecurityFilter var2, PlatformTransactionManager var3, SsgActiveConnectorManager var4, SecurityZoneManager var5
   ) {
      super(false, true, var1, var2, var3, var4, var5);
   }

   public ActiveConnectorMO asResource(SsgActiveConnector var1) {
      ActiveConnectorMO var2 = ManagedObjectFactory.createActiveConnector();

      ActiveConnectorMO var10000;
      String var10001;
      label26: {
         try {
            var2.setName(var1.getName());
            var2.setId(var1.getId());
            var2.setVersion(var1.getVersion());
            var2.setEnabled(var1.isEnabled());
            var2.setType(var1.getType());
            var10000 = var2;
            if (var1.getHardwiredServiceGoid() == null) {
               var10001 = null;
               break label26;
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }

         var10001 = Goid.toString(var1.getHardwiredServiceGoid());
      }

      var10000.setHardwiredId(var10001);
      HashMap var3 = new HashMap();

      for (String var5 : var1.getPropertyNames()) {
         var3.put(var5, var1.getProperty(var5));
      }

      var2.setProperties(var3);
      this.doSecurityZoneAsResource(var2, var1);
      return var2;
   }

   public SsgActiveConnector fromResource(Object var1, boolean var2) throws ResourceFactory.InvalidResourceException {
      try {
         if (!(var1 instanceof ActiveConnectorMO)) {
            throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.UNEXPECTED_TYPE, o[1]);
         }
      } catch (IllegalArgumentException var9) {
         throw a(var9);
      }

      ActiveConnectorMO var3 = (ActiveConnectorMO)var1;
      SsgActiveConnector var4 = new SsgActiveConnector();
      var4.setEnabled(var3.isEnabled());
      var4.setName(var3.getName());

      try {
         Goid var5 = var3.getHardwiredId() == null ? null : GoidUpgradeMapper.mapId(EntityType.SERVICE, var3.getHardwiredId());
         var4.setHardwiredServiceGoid(var5);
      } catch (IllegalArgumentException var8) {
         throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, o[0] + var8.getMessage());
      }

      var4.setType(var3.getType());
      this.doSecurityZoneFromResource(var3, var4, var2);
      Map var10 = var3.getProperties();
      if (var10 != null) {
         for (Entry var7 : var10.entrySet()) {
            var4.setProperty((String)var7.getKey(), (String)var7.getValue());
         }
      }

      return var4;
   }

   protected void updateEntity(SsgActiveConnector var1, SsgActiveConnector var2) throws ResourceFactory.InvalidResourceException {
      var1.setEnabled(var2.isEnabled());
      var1.setName(var2.getName());
      var1.setHardwiredServiceGoid(var2.getHardwiredServiceGoid());
      var1.setType(var2.getType());

      for (String var4 : var2.getPropertyNames()) {
         var1.setProperty(var4, var2.getProperty(var4));
      }

      for (String var7 : var1.getPropertyNames()) {
         try {
            if (!var2.getPropertyNames().contains(var7)) {
               var1.setProperty(var7, null);
            }
         } catch (ResourceFactory.InvalidResourceException var5) {
            throw a(var5);
         }
      }

      var1.setSecurityZone(var2.getSecurityZone());
   }

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

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "T=\u0016j;JG=;\u0001y3TJo6\u0004+>G\u0019=\u0019x+\u0010n4WFys\u0001h#JUxs\u0003d9MF~'\u000fy";
      int var4 = "T=\u0016j;JG=;\u0001y3TJo6\u0004+>G\u0019=\u0019x+\u0010n4WFys\u0001h#JUxs\u0003d9MF~'\u000fy".length();
      char var1 = 22;
      int var0 = -1;

      while (true) {
         String var10002 = d(77, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            o = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      return var10000;
   }

   private static String d(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 -> 80;
            case 1 -> 30;
            case 2 -> 45;
            case 3 -> 70;
            case 4 -> 26;
            case 5 -> 110;
            default -> 110;
         });
      }

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