package io.trygvis.persistence; import io.trygvis.container.compiler.model.TypeRef; import java.util.Date; import java.util.Map; import java.util.TreeMap; public class GeneratorSupport { private final Map primitiveTypeHandlers = new TreeMap<>(); private final Map typeHandlers = new TreeMap<>(); { typeHandlers.put(new TypeRef(Integer.class), new TypeHandler.IntTypeHandler()); typeHandlers.put(new TypeRef(Long.class), new TypeHandler.LongTypeHandler()); typeHandlers.put(new TypeRef(String.class), new TypeHandler.StringTypeHandler()); typeHandlers.put(new TypeRef(Date.class), new TypeHandler.DateTypeHandler()); primitiveTypeHandlers.putAll(typeHandlers); } public void addTypeHandler(TypeRef type, TypeHandler typeHandler) { typeHandlers.put(type, typeHandler); } public TypeHandler typeHandler(TypeRef type) { TypeHandler typeHandler = typeHandlers.get(type); if (typeHandler == null) throw new RuntimeException("Unsupported field type: " + type); return typeHandler; } public boolean isPrimitive(TypeRef type) { return primitiveTypeHandlers.containsKey(type); } public boolean hasTypeHandler(TypeRef type) { return typeHandlers.containsKey(type); } }