public String getTypeName() { return type.getFullname(); }
public static boolean isNullableType(ValueType vt) { String vtFullName = vt.getFullname(); for (String nonNullableType : NON_NULLABLE_TYPES) { if (nonNullableType.equals(vtFullName)) { return false; } } return true; }
protected String applyExternalizerTo(ExternalizationElement extElem, String expr) { String extMethodName = extElem.getMethodName(); // parametric types require cast, so we always cast String cast = "(" + extElem.getType().getFullname() + ")"; return (extMethodName.contains(".")) ? cast + extMethodName + "(" + expr + ")" : cast + expr + "." + extMethodName + "()"; }
public static String getSerializedFormTypeName(ValueType vt, boolean simple) { List<ExternalizationElement> extElems = vt.getExternalizationElements(); if (extElems.size() == 0) { // built-in type do not have externalizers return simple ? vt.getDomainName() : vt.getFullname(); } else if (extElems.size() == 1) { // It's just a wrapper. So, our serialized form is the same as our component's return getSerializedFormTypeName(extElems.get(0).getType(), simple); } else { // Alas, we need a full-blown SerializedForm for this one return simple ? JsonElement.class.getSimpleName() : JsonElement.class.getName(); } }
public void newValueType(String domainName, ValueType valueType) { if (domainName == null) { domainName = valueType.getFullname(); } valueType.getBaseType().setDomainName(domainName); checkValueTypeName(domainName); valueTypes.put(domainName, valueType); }
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, "\")"); }
@Override protected void generateInternalizationSetter(String name, ValueType type, PrintWriter out) { newline(out); print(out, "private final void set$"); print(out, name); print(out, "("); ValueType vt = getExternalizationType(type); print(out, vt.getFullname()); print(out, " value, "); print(out, DO_STATE_SUPER); print(out, " obj$state)"); startMethodBody(out); print(out, "((DO_State)obj$state)."); print(out, name); print(out, " = ("); print(out, type.getFullname()); print(out, ")("); if (DomainModel.isNullableType(vt)) { print(out, "(value == null) ? null : "); } print(out, getRsReaderExpression(type)); print(out, ");"); endMethodBody(out); }
@Override protected void generateStaticKeyFunctionForRole(Role role, PrintWriter out) { if (role.isIndexed()) { onNewline(out); Slot indexedSlot = getIndexedSlot(role); String keyField = role.getIndexProperty(); println(out, generateMapKeyFunction(role.getName(), role.getType().getFullName(), indexedSlot.getSlotType().getFullname(), keyField, role.getIndexCardinality() == Role.MULTIPLICITY_MANY)); onNewline(out); } else { super.generateStaticKeyFunctionForRole(role, out); } }
protected void generateValueTypeDeSerialization(ValueType vt) { onNewline(out); printMethod(out, "public static final", vt.getFullname(), DESERIALIZATION_METHOD_PREFIX + makeSafeValueTypeName(vt), makeArg(getSerializedFormTypeName(vt), "obj")); startMethodBody(out); String internalizationMethodName = vt.getInternalizationMethodName(); if (internalizationMethodName == null) { // class constructor internalizationMethodName = "new " + vt.getFullname(); } else if (!internalizationMethodName.contains(".")) { // static method in the same class internalizationMethodName = vt.getFullname() + "." + internalizationMethodName; print(out, "(obj == null) ? null : "); print(out, "(" + vt.getFullname() + ")"); print(out, internalizationMethodName + "(");
protected void generateExternalizationGetter(String name, ValueType type, PrintWriter out) { newline(out); String returnType = getSqlTypeName(type); printFinalMethod(out, "private", returnType, "get$" + name); startMethodBody(out); // handle nulls (if the value is null, then return null) print(out, type.getFullname()); print(out, " value = "); generateGetSlotExpression(name, out); println(out, ";"); print(out, "return "); if (DomainModel.isNullableType(type)) { print(out, "(value == null) ? null : "); } print(out, getExternalizationExpression(type)); print(out, ";"); endMethodBody(out); }
protected void generateValueTypeSerialization(ValueType vt) { onNewline(out); printMethod(out, "public static final", getSerializedFormTypeName(vt), SERIALIZATION_METHOD_PREFIX + makeSafeValueTypeName(vt), makeArg(vt.getFullname(), "obj")); startMethodBody(out); if (vt.getExternalizationElements().size() == 1) { print(out, "return (obj == null) ? null : "); ExternalizationElement extElem = vt.getExternalizationElements().get(0); ValueType extElemVt = extElem.getType(); print(out, applyExternalizationIfRequired(applyExternalizerTo(extElem, "obj"), extElemVt)); } else { println(out, "if (obj == null) return null;"); println(out, "JsonObject json = new JsonObject();"); for (ExternalizationElement extElem : vt.getExternalizationElements()) { print(out, "json.add(\""); print(out, makePrettySlotName(extElem)); print(out, "\", JsonConverter.getJsonFor("); print(out, applyExternalizationIfRequired(applyExternalizerTo(extElem, "obj"), extElem.getType())); print(out, "));"); newline(out); } print(out, "return json"); } print(out, ";"); endMethodBody(out); }
protected void generateInternalizationSetter(String name, ValueType type, PrintWriter out) { newline(out); print(out, "private final void set$"); print(out, name); print(out, "("); ValueType vt = getExternalizationType(type); print(out, vt.getFullname()); print(out, " arg0, int txNumber)"); startMethodBody(out); print(out, "this."); print(out, name); print(out, ".persistentLoad("); if (DomainModel.isNullableType(vt)) { print(out, "(arg0 == null) ? null : "); } print(out, getRsReaderExpression(type)); print(out, ", txNumber);"); endMethodBody(out); }
protected void generateRoleSlotMethodsMultStarIndexed(Role role, PrintWriter out, String methodModifiers, String capitalizedSlotName, String slotAccessExpression, String typeName, String slotName) { Slot indexedSlot = getIndexedSlot(role); String keyField = role.getIndexProperty(); String retType = role.getType().getFullName(); String methodNameSufix = ""; boolean haveMany = role.getIndexCardinality() == Role.MULTIPLICITY_MANY; if (haveMany) { retType = makeGenericType("java.util.Set", retType); } onNewline(out); printMethod(out, "public", retType, "get" + capitalize(role.getName()) + "By" + capitalize(keyField) + methodNameSufix, indexedSlot.getSlotType().getFullname() + " key"); startMethodBody(out); printWords(out, "return", getSearchForKey(role, haveMany ? getCollectionToUse() : retType)); print(out, ";"); endMethodBody(out); }