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

class f {
   private f() {
   }

   public Map<String, List<EntityMappingInstruction>> build(Map<String, Object> var1, EntityMappingAction var2) {
      LinkedHashMap var3 = new LinkedHashMap();
      if (var1 != null) {
         this.buildMappings(var3, var1, var2);
      }

      return var3;
   }

   protected void buildMappings(Map<String, List<EntityMappingInstruction>> var1, Map<String, Object> var2, EntityMappingAction var3) {
      var2.forEach(this::lambda$buildMappings$1);
   }

   protected void onEntity(
      Map<String, List<EntityMappingInstruction>> var1, List<EntityMappingInstruction> var2, Map<?, ?> var3, EntityTypeInfo var4, EntityMappingAction var5
   ) {
      Object var6 = var3.get(var4.getIdentityKey());
      if (var6 != null) {
         var2.add(this.a(var3, var4, var5, var6));
      }
   }

   private EntityMappingInstruction a(Map<?, ?> var1, EntityTypeInfo var2, EntityMappingAction var3, Object var4) {
      EntityMappingInstruction var5 = new EntityMappingInstruction(var3);
      var5.setSource(var2.getIdentityKey(), var4);
      if (!var2.isIdentityKeyUnique()) {
         String[] var6 = var2.getCompositeKeyAttributes();

         for (String var10 : var6) {
            var5.setSource(var10, var1.get(var10));
         }
      }

      return var5;
   }

   private void lambda$buildMappings$1(Map var1, EntityMappingAction var2, String var3, Object var4) {
      EntityTypeInfo var5 = EntityTypeInfo.fromVariableBundleName(var3);
      if (var5 != EntityTypeInfo.NONE) {
         List var6 = var1.computeIfAbsent(var5.getBundleName(), f::lambda$buildMappings$0);
         if (var4 instanceof Map) {
            this.onEntity(var1, var6, (Map<?, ?>)var4, var5, var2);
         } else if (var4 instanceof List) {
            for (Object var8 : (List)var4) {
               if (var8 instanceof Map) {
                  this.onEntity(var1, var6, (Map<?, ?>)var8, var5, var2);
               }
            }
         }
      }
   }

   private static List lambda$buildMappings$0(String var0) {
      return new ArrayList();
   }
}
