package io.trygvis.persistence; import javax.lang.model.element.Element; import javax.lang.model.type.TypeMirror; import java.util.Date; 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(Integer.class.getName(), new TypeHandler.IntTypeHandler()); typeHandlers.put(Long.class.getName(), new TypeHandler.LongTypeHandler()); typeHandlers.put(String.class.getName(), new TypeHandler.StringTypeHandler()); typeHandlers.put(Date.class.getName(), 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()); } }