/** * Constructs and returns a MethodDeclarationParameters object that defines the method signature for the property * getter method. Subclasses can override this hook to alter or return different parameters. Some contracts that * should be observed when overriding this hook and creating the MethodDeclarationParameters object: * <ul> * <li>The method name should be the value returned by {@link #getterMethodName()}</li> * <li>The method return type should be the value returned by {@link #getTypeForAccessors()}</li> * </ul> * The best way to keep these contracts when overriding this hook is to first call super.getterMethodParams() * and then modify the object returned from super before returning it. * * @see #writeGetterBody(JavaFileWriter, MethodDeclarationParameters) */ protected MethodDeclarationParameters getterMethodParams() { return new MethodDeclarationParameters() .setMethodName(getterMethodName()) .setModifiers(Modifier.PUBLIC) .setReturnType(getTypeForAccessors()); }
/** * Constructs and returns a MethodDeclarationParameters object that defines the method signature for the property * setter method. Subclasses can override this hook to alter or return different parameters. Some contracts that * should be observed when overriding this hook and creating the MethodDeclarationParameters object: * <ul> * <li>The method name should be the value returned by {@link #setterMethodName()}</li> * <li>The method should typically accept as an argument an object of the type returned by * {@link #getTypeForAccessors()}. This argument would be the value to set</li> * </ul> * The best way to keep these contracts when overriding this hook is to first call super.setterMethodParams() * and then modify the object returned from super before returning it. * * @see #writeSetterBody(JavaFileWriter, MethodDeclarationParameters) */ protected MethodDeclarationParameters setterMethodParams() { String argName = propertyName.equals(camelCasePropertyName) ? "_" + camelCasePropertyName : camelCasePropertyName; return new MethodDeclarationParameters() .setMethodName(setterMethodName()) .setReturnType(modelSpec.getGeneratedClassName()) .setModifiers(Modifier.PUBLIC) .setArgumentTypes(getTypeForAccessors()) .setArgumentNames(argName); }
@Override public void emitConstructors(JavaFileWriter writer) throws IOException { if (generateConstructors) { String valuesName = "contentValues"; DeclaredTypeName valuesType = TypeConstants.CONTENT_VALUES; MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setConstructorName(modelSpec.getGeneratedClassName()); params.setArgumentTypes(Collections.singletonList(valuesType)) .setArgumentNames(valuesName); writer.beginConstructorDeclaration(params) .writeStatement(Expressions.callMethod("this", valuesName, ModelFileWriter.PROPERTIES_ARRAY_NAME)) .finishMethodDefinition(); String methodName = "readPropertiesFromContentValues"; params.setArgumentTypes(Arrays.asList(valuesType, TypeConstants.PROPERTY_VARARGS)) .setArgumentNames(valuesName, "withProperties"); writer.beginConstructorDeclaration(params) .writeStringStatement("this()") .writeStringStatement(methodName + "(" + valuesName + ", withProperties)") .finishMethodDefinition(); } }
@Override public void emitMethods(JavaFileWriter writer) throws IOException { // If rowid property generator hasn't already done it, need to generate // overridden setRowId with appropriate return type if (!pluginEnv.hasSquidbOption(PluginEnvironment.OPTIONS_DISABLE_DEFAULT_GETTERS_AND_SETTERS)) { RowidPropertyGenerator rowidPropertyGenerator = modelSpec .getMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR); if (rowidPropertyGenerator != null && !"setRowId".equals(rowidPropertyGenerator.setterMethodName())) { MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setMethodName("setRowId") .setArgumentTypes(CoreTypes.PRIMITIVE_LONG) .setArgumentNames("rowid") .setReturnType(modelSpec.getGeneratedClassName()); writer.writeAnnotation(CoreTypes.OVERRIDE) .beginMethodDefinition(params) .writeStringStatement("super.setRowId(rowid)") .writeStringStatement("return this") .finishMethodDefinition(); } } }
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(); }
writer.writeComment("--- default constructors"); MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setConstructorName(modelSpec.getGeneratedClassName()); writer.beginConstructorDeclaration(params) .setModifiers(Modifier.PUBLIC) .setMethodName("clone") .setReturnType(modelSpec.getGeneratedClassName());
/** * Constructs and returns a MethodDeclarationParameters object that defines the method signature for the property * getter method. Subclasses can override this hook to alter or return different parameters. Some contracts that * should be observed when overriding this hook and creating the MethodDeclarationParameters object: * <ul> * <li>The method name should be the value returned by {@link #getterMethodName()}</li> * <li>The method return type should be the value returned by {@link #getTypeForAccessors()}</li> * </ul> * The best way to keep these contracts when overriding this hook is to first call super.getterMethodParams() * and then modify the object returned from super before returning it. * * @see #writeGetterBody(JavaFileWriter, MethodDeclarationParameters) */ protected MethodDeclarationParameters getterMethodParams() { return new MethodDeclarationParameters() .setMethodName(getterMethodName()) .setModifiers(Modifier.PUBLIC) .setReturnType(getTypeForAccessors()); }
/** * Constructs and returns a MethodDeclarationParameters object that defines the method signature for the property * setter method. Subclasses can override this hook to alter or return different parameters. Some contracts that * should be observed when overriding this hook and creating the MethodDeclarationParameters object: * <ul> * <li>The method name should be the value returned by {@link #setterMethodName()}</li> * <li>The method should typically accept as an argument an object of the type returned by * {@link #getTypeForAccessors()}. This argument would be the value to set</li> * </ul> * The best way to keep these contracts when overriding this hook is to first call super.setterMethodParams() * and then modify the object returned from super before returning it. * * @see #writeSetterBody(JavaFileWriter, MethodDeclarationParameters) */ protected MethodDeclarationParameters setterMethodParams() { String argName = propertyName.equals(camelCasePropertyName) ? "_" + camelCasePropertyName : camelCasePropertyName; return new MethodDeclarationParameters() .setMethodName(setterMethodName()) .setReturnType(modelSpec.getGeneratedClassName()) .setModifiers(Modifier.PUBLIC) .setArgumentTypes(getTypeForAccessors()) .setArgumentNames(argName); }
@Override public void emitConstructors(JavaFileWriter writer) throws IOException { if (generateConstructors) { String valuesName = "contentValues"; DeclaredTypeName valuesType = TypeConstants.CONTENT_VALUES; MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setConstructorName(modelSpec.getGeneratedClassName()); params.setArgumentTypes(Collections.singletonList(valuesType)) .setArgumentNames(valuesName); writer.beginConstructorDeclaration(params) .writeStatement(Expressions.callMethod("this", valuesName, ModelFileWriter.PROPERTIES_ARRAY_NAME)) .finishMethodDefinition(); String methodName = "readPropertiesFromContentValues"; params.setArgumentTypes(Arrays.asList(valuesType, TypeConstants.PROPERTY_VARARGS)) .setArgumentNames(valuesName, "withProperties"); writer.beginConstructorDeclaration(params) .writeStringStatement("this()") .writeStringStatement(methodName + "(" + valuesName + ", withProperties)") .finishMethodDefinition(); } }
@Override public void emitMethods(JavaFileWriter writer) throws IOException { // If rowid property generator hasn't already done it, need to generate // overridden setRowId with appropriate return type if (!pluginEnv.hasSquidbOption(PluginEnvironment.OPTIONS_DISABLE_DEFAULT_GETTERS_AND_SETTERS)) { RowidPropertyGenerator rowidPropertyGenerator = modelSpec .getMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR); if (rowidPropertyGenerator != null && !"setRowId".equals(rowidPropertyGenerator.setterMethodName())) { MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setMethodName("setRowId") .setArgumentTypes(CoreTypes.PRIMITIVE_LONG) .setArgumentNames("rowid") .setReturnType(modelSpec.getGeneratedClassName()); writer.writeAnnotation(CoreTypes.OVERRIDE) .beginMethodDefinition(params) .writeStringStatement("super.setRowId(rowid)") .writeStringStatement("return this") .finishMethodDefinition(); } } }
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(); }
writer.writeComment("--- default constructors"); MethodDeclarationParameters params = new MethodDeclarationParameters() .setModifiers(Modifier.PUBLIC) .setConstructorName(modelSpec.getGeneratedClassName()); writer.beginConstructorDeclaration(params) .setModifiers(Modifier.PUBLIC) .setMethodName("clone") .setReturnType(modelSpec.getGeneratedClassName());