/** * Subclasses can override this hook to generate a custom method body for the property getter. This version of the * hook is deprecated, users should use {@link #writeGetterBody(JavaFileWriter, MethodDeclarationParameters)} * instead. */ @Deprecated protected void writeGetterBody(JavaFileWriter writer) throws IOException { writer.writeStatement(Expressions.callMethod("get", propertyName).returnExpr()); }
private Expression constructInitializer(String name, boolean view) { if (view) { return Expressions.staticMethod(TypeConstants.VIEW, "fromQuery", QUERY_NAME, name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } else { return Expressions.callMethodOn(QUERY_NAME, "as", name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } }
@Override protected void writeGetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { Expression typeExpression = getTypeExpression(fieldType); writer.writeStatement(Expressions.staticMethod(JSONTypes.JSON_PROPERTY_SUPPORT, "getValueFromJSON", "this", propertyName, typeExpression).returnExpr()); }
@Override protected void writeGetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { final String value = "value"; writer.writeFieldDeclaration(CoreTypes.JAVA_STRING, value, Expressions.callMethod("get", propertyName)); Expression condition = Expressions.fromString(value + " == null"); Expression ifTrue = Expressions.fromString("null"); Expression ifFalse = Expressions.staticMethod(enumType, "valueOf", value); TernaryExpression ternary = new TernaryExpression(condition, ifTrue, ifFalse); writer.writeStatement(ternary.returnExpr()); }
protected void writePropertiesInitializationBlock() throws IOException { for (int i = 0; i < modelSpec.getPropertyGenerators().size(); i++) { writer.writeStatement(Expressions .assign(Expressions.arrayReference(PROPERTIES_ARRAY_NAME, i), Expressions.fromString(modelSpec.getPropertyGenerators().get(i).getPropertyName()))); } }
@Override protected void writeSetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { String argName = params.getArgumentNames().get(0); final String argAsString = argName + "AsString"; Expression condition = Expressions.fromString(argName + " == null"); Expression ifTrue = Expressions.fromString("null"); Expression ifFalse = Expressions.callMethodOn(argName, "name"); writer.writeFieldDeclaration(CoreTypes.JAVA_STRING, argAsString, new TernaryExpression(condition, ifTrue, ifFalse)); writer.writeStatement(Expressions.callMethod("set", propertyName, argAsString)); writer.writeStringStatement("return this"); }
private void emitSinglePropertyDeclaration(PropertyGenerator generator, int index) throws IOException { modelSpec.getPluginBundle().beforeEmitPropertyDeclaration(writer, generator); DeclaredTypeName type = generator.getPropertyType(); String fieldToQualify = ALIASED_PROPERTY_ARRAY_NAME + "[" + index + "]"; Expression expressionToCast; if (modelSpec.getQueryElement() != null) { String callOn = modelSpec.getSpecAnnotation().isSubquery() ? SUBQUERY_NAME : VIEW_NAME; expressionToCast = Expressions.callMethodOn(callOn, "qualifyField", fieldToQualify); } else { expressionToCast = Expressions.reference(fieldToQualify); } writer.writeFieldDeclaration(type, generator.getPropertyName(), expressionToCast.cast(type), TypeConstants.PUBLIC_STATIC_FINAL) .writeNewline(); modelSpec.getPluginBundle().afterEmitPropertyDeclaration(writer, generator); }
private void emitAliasedPropertyArray() throws IOException { writer.writeComment("--- aliased property references"); Expression aliasedPropertiesInit = Expressions.block(new Expression() { @Override public boolean writeExpression(JavaFileWriter writer) throws IOException { return emitPropertyReferenceArrayBody(true); } }, false, false, false, false); writer.writeFieldDeclaration(TypeConstants.PROPERTY_ARRAY, ALIASED_PROPERTY_ARRAY_NAME, aliasedPropertiesInit, TypeConstants.PUBLIC_STATIC_FINAL) .writeNewline(); writer.beginInitializerBlock(true, true); writer.writeStatement(Expressions.callMethod("validateAliasedProperties", ALIASED_PROPERTY_ARRAY_NAME)); writer.finishInitializerBlock(false, true); writer.writeNewline(); }
private boolean emitPropertyReferenceArrayBody(boolean alias) throws IOException { for (PropertyGenerator propertyGenerator : modelSpec.getPropertyGenerators()) { Expression reference = Expressions.staticReference(modelSpec.getModelSpecName(), propertyGenerator.getPropertyName()); if (alias) { VariableElement field = propertyGenerator.getField(); if (field != null) { Alias aliasAnnotation = field.getAnnotation(Alias.class); if (aliasAnnotation != null && !AptUtils.isEmpty(aliasAnnotation.value().trim())) { reference = reference.callMethod("as", "\"" + aliasAnnotation.value().trim() + "\""); } } } writer.writeExpression(reference); writer.appendString(",\n"); } return !AptUtils.isEmpty(modelSpec.getPropertyGenerators()); }
@Override protected void emitPropertiesArray() throws IOException { writer.writeFieldDeclaration(TypeConstants.PROPERTY_ARRAY, PROPERTIES_ARRAY_NAME, Expressions.staticReference(modelSpec.getModelSuperclass(), PROPERTIES_ARRAY_NAME), TypeConstants.PUBLIC_STATIC_FINAL); }
@Override protected void writeSetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { Expression typeExpression = getTypeExpression(fieldType); writer.writeStatement(Expressions.staticMethod(JSONTypes.JSON_PROPERTY_SUPPORT, "setValueAsJSON", "this", propertyName, params.getArgumentNames().get(0), typeExpression)); writer.writeStringStatement("return this"); }
@Override public boolean writeExpression(JavaFileWriter writer) throws IOException { writer.appendString("@") .appendString(writer.shortenName(MODEL_GEN_ERROR_INNER, false)) .appendString("(specClass=") .appendExpression(Expressions.classObject(errorInfo.errorClass)) .appendString(", "); if (!AptUtils.isEmpty(errorInfo.element)) { writer.appendString("element=\"") .appendString(errorInfo.element) .appendString("\", "); } writer.appendString("message=\"") .appendString(errorInfo.message) .appendString("\")"); return true; } }
/** * Subclasses can override this hook to generate a custom method body for the property setter. This version of the * hook is deprecated, users should use {@link #writeGetterBody(JavaFileWriter, MethodDeclarationParameters)} * instead. */ @Deprecated protected void writeSetterBody(JavaFileWriter writer, String argName) throws IOException { writer.writeStatement(Expressions.callMethod("set", propertyName, argName)); writer.writeStringStatement("return this"); }
private void emitUnaliasedPropertyArray() throws IOException { writer.writeComment("--- unaliased property references"); Expression basePropertiesInit = Expressions.block(new Expression() { @Override public boolean writeExpression(JavaFileWriter writer) throws IOException { return emitPropertyReferenceArrayBody(false); } }, false, false, false, false); writer.writeFieldDeclaration(TypeConstants.PROPERTY_ARRAY, BASE_PROPERTY_ARRAY_NAME, basePropertiesInit, TypeConstants.PRIVATE_STATIC_FINAL) .writeNewline(); }
protected void emitPropertiesArray() throws IOException { writer.writeComment("--- allocate properties array"); writer.writeFieldDeclaration(TypeConstants.PROPERTY_ARRAY, PROPERTIES_ARRAY_NAME, Expressions.arrayAllocation(TypeConstants.PROPERTY, 1, getPropertiesArrayLength()), TypeConstants.PUBLIC_STATIC_FINAL); writer.writeNewline(); }
@Override public void afterEmitPropertyDeclaration(JavaFileWriter writer, PropertyGenerator propertyGenerator) throws IOException { if (propertyGenerator instanceof RowidPropertyGenerator) { if (((TableModelSpecWrapper) modelSpec).isVirtualTable()) { writer.writeAnnotation(CoreTypes.DEPRECATED); writer.writeFieldDeclaration(TypeConstants.LONG_PROPERTY, DEFAULT_ID_PROPERTY_NAME, Expressions.fromString(DEFAULT_ROWID_PROPERTY_NAME), TypeConstants.PUBLIC_STATIC_FINAL); } writeRowidSupportMethods(writer, propertyGenerator.getPropertyName()); } }
private void writeRowidSupportMethods(JavaFileWriter writer, String propertyName) throws IOException { // Write TABLE.setRowIdProperty call writer.beginInitializerBlock(true, true); writer.writeStatement(Expressions.callMethodOn(TableModelFileWriter.TABLE_NAME, "setRowIdProperty", propertyName)); writer.finishInitializerBlock(true, true); writer.writeNewline(); // Write getRowIdProperty() method writer.writeAnnotation(CoreTypes.OVERRIDE); MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setReturnType(TypeConstants.LONG_PROPERTY) .setMethodName("getRowIdProperty"); writer.beginMethodDefinition(params); writer.writeStringStatement("return " + propertyName); writer.finishMethodDefinition(); }
private void writeConstantField(JavaFileWriter writer, DeclaredTypeName containingClassName, VariableElement constant) throws IOException { JavadocPlugin.writeJavadocFromElement(pluginEnv, writer, constant); writer.writeFieldDeclaration( utils.getTypeNameFromTypeMirror(constant.asType()), constant.getSimpleName().toString(), Expressions.staticReference(containingClassName, constant.getSimpleName().toString()), TypeConstants.PUBLIC_STATIC_FINAL); } }
private void emitTableModelMapper() throws IOException { writer.writeComment("--- mappers"); writer.writeFieldDeclaration(TypeConstants.TABLE_MAPPING_VISITORS, "tableMappingInfo", Expressions.callMethod("generateTableMappingVisitors", PROPERTIES_ARRAY_NAME, ALIASED_PROPERTY_ARRAY_NAME, BASE_PROPERTY_ARRAY_NAME), TypeConstants.PRIVATE_STATIC_FINAL) .writeNewline(); writer.writeAnnotation(CoreTypes.OVERRIDE) .beginMethodDefinition(GET_TABLE_MAPPING_VISITORS) .writeStringStatement("return tableMappingInfo") .finishMethodDefinition(); }
private void emitSinglePropertyDeclaration(PropertyGenerator generator) throws IOException { modelSpec.getPluginBundle().beforeEmitPropertyDeclaration(writer, generator); writer.writeFieldDeclaration(generator.getPropertyType(), generator.getPropertyName(), Expressions.staticReference(modelSpec.getModelSpecName(), generator.getPropertyName()), TypeConstants.PUBLIC_STATIC_FINAL) .writeNewline(); modelSpec.getPluginBundle().afterEmitPropertyDeclaration(writer, generator); }