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 java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

public abstract class ResolverBundleEntityMappings {
   protected final EntityTypeInfo entityTypeInfo;
   protected final List<EntityMappingInstruction> mappings = new ArrayList<>();
   protected final List<EntityMappingInstruction> noDefMappings = new ArrayList<>();
   protected final EntityMappingInstruction defaultMapping;

   protected ResolverBundleEntityMappings(EntityTypeInfo var1, EntityMappingAction var2, List<Map<String, Object>> var3) {
      this.entityTypeInfo = var1;
      AtomicReference var4 = new AtomicReference<>(new EntityMappingInstruction(var2));
      var3.forEach(var3x -> {
         if (var3x != null) {
            EntityMappingInstruction var4x = new EntityMappingInstruction(var3x, var1);
            if (var4x.isDefault()) {
               var4.set(var4x);
            } else {
               this.mappings.add(var4x);
               if (var4x.isNoDefInstruction()) {
                  this.noDefMappings.add(var4x);
               }
            }
         }
      });
      this.defaultMapping = (EntityMappingInstruction)var4.get();
   }

   public List<EntityMappingInstruction> getNoDefMappings() {
      return this.noDefMappings;
   }

   public EntityMappingInstruction getDefaultMapping() {
      return this.defaultMapping;
   }

   public abstract List<EntityMappingInstruction> getMappingsByValue(String var1);

   public abstract EntityMappingInstruction getMappingByValue(String var1);
}
