public boolean isEnumType(String valueTypeName) { ValueType vt = findValueType(valueTypeName); return ((vt != null) && vt.isEnum()); }
protected String getRsReaderExpression(ValueType vt) { if (vt.isBuiltin() || vt.isEnum()) { return "value"; } StringBuilder builder = new StringBuilder(); builder.append(ValueTypeSerializationGenerator.SERIALIZER_CLASS_SIMPLE_NAME); builder.append("."); builder.append(ValueTypeSerializationGenerator.DESERIALIZATION_METHOD_PREFIX); builder.append(ValueTypeSerializationGenerator.makeSafeValueTypeName(vt)); builder.append("(value)"); return builder.toString(); }
protected String getSqlTypeName(ValueType vt) { ValueType extType = getExternalizationType(vt); String toSqlMethodName = "getValueFor" + (extType.isEnum() ? "Enum" : extType.getDomainName()); for (Method m : ToSqlConverter.class.getDeclaredMethods()) { if (m.getName().equals(toSqlMethodName)) { return m.getReturnType().getName(); } } throw new Error("Something's wrong. Couldn't find the appropriate base value type."); }
protected String getExternalizationExpression(ValueType vt) { StringBuilder expression = new StringBuilder(); // Use the ValueTypeSerializer class to get the final type, // and then convert it to the correct SQL type expression.append(TO_SQL_CONVERTER_CLASS); expression.append(".getValueFor"); if (vt.isEnum()) { expression.append("Enum(value)"); return expression.toString(); } expression.append(ValueTypeSerializationGenerator.getSerializedFormTypeName(vt, true)); expression.append("("); if (vt.isBuiltin() || vt.isEnum()) { expression.append("value)"); } else { expression.append(ValueTypeSerializationGenerator.SERIALIZER_CLASS_SIMPLE_NAME); expression.append("."); expression.append(ValueTypeSerializationGenerator.SERIALIZATION_METHOD_PREFIX); expression.append(ValueTypeSerializationGenerator.makeSafeValueTypeName(vt)); expression.append("(value))"); } return expression.toString(); }
protected String applyExternalizationIfRequired(String expr, ValueType vt) { if ((vt.isBuiltin() || vt.isEnum())) { return expr; } else { return SERIALIZATION_METHOD_PREFIX + makeSafeValueTypeName(vt) + "(" + expr + ")"; } }
protected ValueType getExternalizationType(ValueType vt) { while (!(vt.isBuiltin() || vt.isEnum())) { List<ExternalizationElement> extElems = vt.getExternalizationElements(); if (extElems.size() != 1) { // Value Types with more than one externalization element // are externalized to Json return jsonElementVt; } ExternalizationElement extElem = extElems.get(0); vt = extElem.getType(); } return vt; }
public static String getJdbcTypeFor(DomainModel model, String valueType) { ValueType vt = model.findValueType(valueType); String jdbcType = null; if (vt.isEnum()) { jdbcType = "VARCHAR"; } else if (vt.isBuiltin()) { jdbcType = BUILT_IN_JDBC_MAP.get(valueType); } else { List<ExternalizationElement> extElems = vt.getExternalizationElements(); if (extElems.size() != 1) { return BUILT_IN_JDBC_MAP.get("JsonElement"); } jdbcType = getJdbcTypeFor(model, extElems.get(0).getType().getDomainName()); } if (jdbcType == null) { throw new Error("Couldn't find a JDBC type for the value type " + valueType); } return jdbcType; } }
protected void generateValueTypeSerializations() { for (ValueType vt : getDomainModel().getAllValueTypes()) { if (!(vt.isBuiltin() || vt.isEnum())) { println(out, ""); print(out, "// VT: " + vt.getDomainName() + " serializes as " + getSerializedFormTypeName(vt)); generateValueTypeSerialization(vt); generateValueTypeDeSerialization(vt); } } }
protected void printRsReaderExpressions(PrintWriter out, ValueType vt, String colBaseName) { print(out, RESULT_SET_READER_CLASS); print(out, ".read"); if (vt.isEnum()) { print(out, "Enum("); print(out, vt.getFullname()); print(out, ".class, "); } else { print(out, ValueTypeSerializationGenerator.getSerializedFormTypeName(vt, true)); print(out, "("); } print(out, "rs, \""); print(out, colBaseName); print(out, "\")"); }
protected void generateInfinispanSetterBody(Slot slot, PrintWriter out) { generateSetterDAPStatement(dC, slot.getName(), slot.getTypeName(), out);//DAP write stats update statement generateSetterTxIntrospectorStatement(slot, out); // TxIntrospector onNewline(out); String slotName = slot.getName(); String setterExpression; if (findWrapperEntry(slot.getTypeName()) != null) { // then it is a primitive type setterExpression = slotName; } else { setterExpression = "(" + slotName + " == null ? Externalization.NULL_OBJECT : "; ValueType vt = slot.getSlotType(); if (vt.isBuiltin() || vt.isEnum()) { setterExpression += slotName; } else { // derived value type must be externalized setterExpression += VT_SERIALIZER + ValueTypeSerializationGenerator.makeSafeValueTypeName(vt) + "(" + slotName + ")"; } setterExpression += ")"; } print(out, "InfinispanBackEnd.getInstance().cachePut(getOid().getFullId() + \":" + slotName + "\", " + setterExpression + ");"); }
protected void generateInfinispanGetterBody(Slot slot, PrintWriter out, String cacheGetMethod) { generateGetterDAPStatement(dC, slot.getName(), slot.getTypeName(), out);//DAP read stats update statement println(out, "Object obj = InfinispanBackEnd.getInstance()." + cacheGetMethod + "(getOid().getFullId() + \":" + slot.getName() + "\");"); String defaultValue; PrimitiveToWrapperEntry wrapperEntry = findWrapperEntry(slot.getTypeName()); if (wrapperEntry != null) { // then it is a primitive type defaultValue = wrapperEntry.defaultPrimitiveValue; } else { defaultValue = "null"; } println(out, "if (obj == null || obj instanceof Externalization.NullClass) { return " + defaultValue + "; }"); String returnExpression = "return (" + getReferenceType(slot.getTypeName()) + ")"; ValueType vt = slot.getSlotType(); if (vt.isBuiltin() || vt.isEnum()) { returnExpression += "obj"; } else { returnExpression += VT_DESERIALIZER + ValueTypeSerializationGenerator.makeSafeValueTypeName(vt) + "((" + getReferenceType(ValueTypeSerializationGenerator.getSerializedFormTypeName(vt)) + ")obj)"; } returnExpression += ";"; print(out, returnExpression); }
ExternalizationElement extElem = extElems.get(0); ValueType extElemVt = extElem.getType(); if (extElemVt.isBuiltin() || extElemVt.isEnum()) { print(out, "obj"); } else { if (extElemVt.isBuiltin() || extElemVt.isEnum()) { print(out, "JsonConverter.get"); print(out, capitalize(extElem.getType().getDomainName()));