package com.l7tech.external.assertions.gatewaygraphql.server.resolver;

import com.l7tech.external.assertions.gatewaygraphql.EntityTypeInfo;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityMappingAction;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityMappingInstruction;
import com.l7tech.external.assertions.gatewaygraphql.server.input.MappingAwareEntityInput;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ResolverBundleProperties {
   private static final Logger a;
   public static final String DEFAULT_ACTION_PROPERTY;
   public static final String MAPPINGS_PROPERTY;
   private final EntityMappingAction b;
   private final Map<String, ResolverBundleEntityMappings> c;
   private final ResolverBundleEntityMappings d;
   private static final String[] e;

   public ResolverBundleProperties() {
      this(Collections.emptyMap());
   }

   public ResolverBundleProperties(Map<String, Object> var1) {
      this(var1, EntityMappingAction.NEW_OR_UPDATE);
   }

   public ResolverBundleProperties(Map<String, Object> var1, EntityMappingAction var2) {
      String[] var5 = e;
      String var3 = (String)var1.get(var5[4]);
      this.b = var3 != null ? EntityMappingAction.valueOf(var3) : var2;
      this.c = new HashMap<>();
      Map var4 = var1.getOrDefault(e[1], Collections.emptyMap());
      var4.forEach(
         (var1x, var2x) -> {
            if (var2x instanceof List) {
               EntityTypeInfo var3x = EntityTypeInfo.fromBundleName(var1x);
               if (var3x != EntityTypeInfo.NONE) {
                  this.c
                     .put(
                        var1x,
                        var3x.isIdentityKeyUnique()
                           ? new ResolverBundleSimpleEntityMappings(var3x, this.b, (List<Map<String, Object>>)var2x)
                           : new ResolverBundleComplexEntityMappings(var3x, this.b, (List<Map<String, Object>>)var2x)
                     );
               } else {
                  a.log(Level.INFO, e[3], var1x);
               }
            }
         }
      );
      this.d = new ResolverBundleSimpleEntityMappings(this.b, Collections.emptyList());
   }

   public List<EntityMappingInstruction> getNoDefEntityMappings(EntityTypeInfo var1) {
      return this.c.getOrDefault(var1.getBundleName(), this.d).getNoDefMappings();
   }

   public EntityMappingInstruction getEntityMappingInstruction(EntityTypeInfo var1, MappingAwareEntityInput var2) {
      ResolverBundleEntityMappings var3 = this.c.getOrDefault(var1.getBundleName(), this.d);
      if (var1.isIdentityKeyUnique()) {
         return var3.getMappingByValue(var2.getIdentityValue());
      }

      for (EntityMappingInstruction var5 : var3.getMappingsByValue(var2.getIdentityValue())) {
         if (var2.matches(var5)) {
            return var5;
         }
      }

      return var3.getDefaultMapping();
   }

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "u7r\u0015|FrP1`\u001dfD\b|3d\u0004`Dab\b|3d\u0004`Dab";
      int var4 = "u7r\u0015|FrP1`\u001dfD\b|3d\u0004`Dab\b|3d\u0004`Dab".length();
      char var1 = '\r';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 70;
         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) {
                     e = var5;
                     String[] var9 = e;
                     MAPPINGS_PROPERTY = e[2];
                     DEFAULT_ACTION_PROPERTY = var9[0];
                     a = Logger.getLogger(ResolverBundleProperties.class.getName());
                     return;
                  }

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

                  var2 = "/M\u001ak\u0010$\u0019\u000f\b\u001b`\u0018>\u0013\u001cFNk\u001d$\u0015\u001fQNz\n \u0019KS^s_p5\fF\u0001|\u001a>\u001bKA\u001a\r\u000fM\bo\u0006<\b*K\u001ag\u001c>";
                  var4 = "/M\u001ak\u0010$\u0019\u000f\b\u001b`\u0018>\u0013\u001cFNk\u001d$\u0015\u001fQNz\n \u0019KS^s_p5\fF\u0001|\u001a>\u001bKA\u001a\r\u000fM\bo\u0006<\b*K\u001ag\u001c>"
                     .length();
                  var1 = '-';
                  var7 = -1;
            }

            var10000 = 60;
            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] ^ 64);
      }

      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 -> 87;
            case 1 -> 20;
            case 2 -> 82;
            case 3 -> 50;
            case 4 -> 79;
            case 5 -> 108;
            default -> 64;
         });
      }

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