package com.l7tech.policy.code.transformer;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class FieldTransformerFactory {
   private final Map<String, FieldTransformer> a = new ConcurrentHashMap<>();

   public FieldTransformer getTransformer(BeanTypeCategory var1, Class<?> var2) {
      switch (com.l7tech.policy.code.transformer.a.a[var1.ordinal()]) {
         case 1:
            return this.a.computeIfAbsent(var1 + var2.getName(), var1x -> new JavaEnumFieldTransformer(var2));
         case 2:
            return this.a.computeIfAbsent(var1 + var2.getName(), var1x -> new WspEnumFieldTransformer(var2));
         case 3:
            return this.a.computeIfAbsent(var1 + var2.getName(), var1x -> new BasicObject2StringFieldTransformer(var2));
         case 4:
            return this.a.computeIfAbsent(var1 + var2.getName(), var1x -> new BasicObject2ValueFieldTransformer(var2));
         case 5:
            return new Base64EncodedStringFieldTransformer();
         default:
            return null;
      }
   }

   public FieldTransformer getTransformer(BeanTypeCategory var1, Class<?> var2, String var3) {
      if (var1.equals(BeanTypeCategory.BASIC_OBJECT_STRING) && var3 != null) {
         return this.a.computeIfAbsent(var1 + var2.getName(), var2x -> new BasicObject2StringFieldTransformer(var2, var3));
      } else {
         return var1.equals(BeanTypeCategory.BASIC_OBJECT_VALUE) && var3 != null
            ? this.a.computeIfAbsent(var1 + var2.getName(), var2x -> new BasicObject2ValueFieldTransformer(var2, var3))
            : this.getTransformer(var1, var2);
      }
   }
}
