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

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 java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class BundleMappingsHelper {
   private final f a = new f();
   private final f b = new g(this);

   public Map<String, List<EntityMappingInstruction>> buildMappings(Map<String, Object> var1, EntityMappingAction var2, int var3) {
      return var3 >= 2 ? this.b.build(var1, var2) : this.a.build(var1, var2);
   }

   public Map<String, Object> normalizeMappings(Map<String, List<EntityMappingInstruction>> var1) {
      LinkedHashMap var2 = new LinkedHashMap();
      var1.forEach((var2x, var3) -> {
         EntityTypeInfo var4 = EntityTypeInfo.fromBundleName(var2x);
         if (var4 != EntityTypeInfo.NONE) {
            var2.put(var2x, this.a((List<EntityMappingInstruction>)var3, var4));
         }
      });
      return var2;
   }

   private List<Map<String, Object>> a(List<EntityMappingInstruction> var1, EntityTypeInfo var2) {
      ArrayList var3 = new ArrayList();
      HashSet var4 = new HashSet();
      var1.forEach(var4x -> {
         String var5 = this.a(var4x, var2);
         if (var4.add(var5)) {
            var3.add(var4x.asSerializableObject());
         }
      });
      return !var3.isEmpty() ? var3 : null;
   }

   private String a(EntityMappingInstruction var1, EntityTypeInfo var2) {
      String var3 = var1.getSourceString(var2.getIdentityKey());
      if (!var2.isIdentityKeyUnique()) {
         for (String var7 : var2.getCompositeKeyAttributes()) {
            var3 = var3 + var1.getSourceString(var7);
         }
      }

      return var3;
   }

   private static Map<String, Object> a(Map<?, ?> var0, String var1) {
      if (var0 != null) {
         Object var2 = var0.get(var1);
         if (var2 instanceof Map) {
            return (Map<String, Object>)var2;
         }
      }

      return null;
   }
}
