package io.trygvis.persistence; import io.trygvis.container.compiler.CompilerException; import io.trygvis.container.compiler.model.TypeRef; import java.sql.Types; import java.util.Date; import java.util.Map; import java.util.TreeMap; public class GeneratorConfiguration { private final Map primitiveTypeHandlers = new TreeMap<>(); private final Map typeHandlers = new TreeMap<>(); { typeHandlers.put(new TypeRef(int.class), new TypeHandler.PrimitiveTypeHandler("INTEGER", Types.INTEGER, "Int", false)); typeHandlers.put(new TypeRef(Integer.class), new TypeHandler.PrimitiveTypeHandler("INTEGER", Types.INTEGER, "Int", true)); typeHandlers.put(new TypeRef(long.class), new TypeHandler.PrimitiveTypeHandler("BIGINT", Types.BIGINT, "Long", false)); typeHandlers.put(new TypeRef(Long.class), new TypeHandler.PrimitiveTypeHandler("BIGINT", Types.BIGINT, "Long", true)); typeHandlers.put(new TypeRef(String.class), new TypeHandler.StringTypeHandler()); typeHandlers.put(new TypeRef(Date.class), new TypeHandler.DateTypeHandler()); typeHandlers.put(new TypeRef("org.joda.time.DateTime"), new TypeHandler.JodaDateTimeTypeHandler()); typeHandlers.put(new TypeRef("java.util.UUID"), new TypeHandler.UuidTypeHandler()); 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 CompilerException("Unsupported field type: " + type.fqName); } return typeHandler; } public boolean isPrimitive(TypeRef type) { return primitiveTypeHandlers.containsKey(type); } public boolean hasTypeHandler(TypeRef type) { return typeHandlers.containsKey(type); } }