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