@Override public void emitPutDefault(JavaFileWriter writer, String contentValuesName) throws IOException { String defaultValue = getColumnDefault(); if (ColumnSpec.DEFAULT_NONE.equals(getColumnDefault())) { return; } String methodToInvoke; List<Object> arguments = new ArrayList<>(); arguments.add(Expressions.callMethodOn(propertyName, "getName")); if (ColumnSpec.DEFAULT_NULL.equals(defaultValue)) { methodToInvoke = "putNull"; } else { methodToInvoke = "put"; arguments.add(getContentValuesDefaultValue()); } writer.writeStatement(Expressions.callMethodOn(contentValuesName, methodToInvoke, arguments)); }
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 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 emitTableDeclaration() throws IOException { writer.writeComment("--- table declaration"); List<Object> arguments = new ArrayList<>(); arguments.add(Expressions.classObject(modelSpec.getGeneratedClassName())); // modelClass arguments.add(PROPERTIES_ARRAY_NAME); // properties arguments.add("\"" + modelSpec.getSpecAnnotation().tableName().trim() + "\""); // name arguments.add(null); // database name, null by default if (modelSpec.isVirtualTable()) { if (AptUtils.isEmpty(modelSpec.getSpecAnnotation().virtualModule())) { modelSpec.logError("virtualModule should be non-empty for virtual table models", modelSpec.getModelSpecElement()); } arguments.add("\"" + modelSpec.getSpecAnnotation().virtualModule() + "\""); } else if (!AptUtils.isEmpty(modelSpec.getSpecAnnotation().tableConstraint())) { arguments.add("\"" + modelSpec.getSpecAnnotation().tableConstraint() + "\""); } writer.writeFieldDeclaration(modelSpec.getTableType(), TABLE_NAME, Expressions.callConstructor(modelSpec.getTableType(), arguments), TypeConstants.PUBLIC_STATIC_FINAL); writer.writeFieldDeclaration(TypeConstants.TABLE_MODEL_NAME, TABLE_MODEL_NAME, Expressions.callConstructor(TypeConstants.TABLE_MODEL_NAME, Expressions.classObject(modelSpec.getGeneratedClassName()), Expressions.callMethodOn(TableModelFileWriter.TABLE_NAME, "getName")), TypeConstants.PUBLIC_STATIC_FINAL); writer.writeNewline(); }
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 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(); }
protected void emitDefaultValues() throws IOException { writer.writeComment("--- default values"); writer.writeFieldDeclaration(TypeConstants.VALUES_STORAGE, DEFAULT_VALUES_NAME, Expressions.callMethodOn( Expressions.callConstructor(modelSpec.getGeneratedClassName()), "newValuesStorage"), Modifier.PROTECTED, Modifier.STATIC, Modifier.FINAL); if (pluginEnv.hasSquidbOption(PluginEnvironment.OPTIONS_DISABLE_DEFAULT_VALUES)) { writer.writeComment("--- property defaults disabled by plugin flag"); } else { writer.beginInitializerBlock(true, true) .writeComment("--- put property defaults"); emitDefaultValuesInitializationBlock(); writer.finishInitializerBlock(false, true).writeNewline(); } writer.writeAnnotation(CoreTypes.OVERRIDE) .beginMethodDefinition(GET_DEFAULT_VALUES_PARAMS) .writeStringStatement("return " + DEFAULT_VALUES_NAME) .finishMethodDefinition(); }
.setReturnType(modelSpec.getGeneratedClassName()); Expression cloneBody = Expressions.callMethodOn("super", "clone") .cast(modelSpec.getGeneratedClassName()).returnExpr();
@Override public void emitPutDefault(JavaFileWriter writer, String contentValuesName) throws IOException { String defaultValue = getColumnDefault(); if (ColumnSpec.DEFAULT_NONE.equals(getColumnDefault())) { return; } String methodToInvoke; List<Object> arguments = new ArrayList<>(); arguments.add(Expressions.callMethodOn(propertyName, "getName")); if (ColumnSpec.DEFAULT_NULL.equals(defaultValue)) { methodToInvoke = "putNull"; } else { methodToInvoke = "put"; arguments.add(getContentValuesDefaultValue()); } writer.writeStatement(Expressions.callMethodOn(contentValuesName, methodToInvoke, arguments)); }
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 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 emitTableDeclaration() throws IOException { writer.writeComment("--- table declaration"); List<Object> arguments = new ArrayList<>(); arguments.add(Expressions.classObject(modelSpec.getGeneratedClassName())); // modelClass arguments.add(PROPERTIES_ARRAY_NAME); // properties arguments.add("\"" + modelSpec.getSpecAnnotation().tableName().trim() + "\""); // name arguments.add(null); // database name, null by default if (modelSpec.isVirtualTable()) { if (AptUtils.isEmpty(modelSpec.getSpecAnnotation().virtualModule())) { modelSpec.logError("virtualModule should be non-empty for virtual table models", modelSpec.getModelSpecElement()); } arguments.add("\"" + modelSpec.getSpecAnnotation().virtualModule() + "\""); } else if (!AptUtils.isEmpty(modelSpec.getSpecAnnotation().tableConstraint())) { arguments.add("\"" + modelSpec.getSpecAnnotation().tableConstraint() + "\""); } writer.writeFieldDeclaration(modelSpec.getTableType(), TABLE_NAME, Expressions.callConstructor(modelSpec.getTableType(), arguments), TypeConstants.PUBLIC_STATIC_FINAL); writer.writeFieldDeclaration(TypeConstants.TABLE_MODEL_NAME, TABLE_MODEL_NAME, Expressions.callConstructor(TypeConstants.TABLE_MODEL_NAME, Expressions.classObject(modelSpec.getGeneratedClassName()), Expressions.callMethodOn(TableModelFileWriter.TABLE_NAME, "getName")), TypeConstants.PUBLIC_STATIC_FINAL); writer.writeNewline(); }
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 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); }
protected void emitDefaultValues() throws IOException { writer.writeComment("--- default values"); writer.writeFieldDeclaration(TypeConstants.VALUES_STORAGE, DEFAULT_VALUES_NAME, Expressions.callMethodOn( Expressions.callConstructor(modelSpec.getGeneratedClassName()), "newValuesStorage"), Modifier.PROTECTED, Modifier.STATIC, Modifier.FINAL); if (pluginEnv.hasSquidbOption(PluginEnvironment.OPTIONS_DISABLE_DEFAULT_VALUES)) { writer.writeComment("--- property defaults disabled by plugin flag"); } else { writer.beginInitializerBlock(true, true) .writeComment("--- put property defaults"); emitDefaultValuesInitializationBlock(); writer.finishInitializerBlock(false, true).writeNewline(); } writer.writeAnnotation(CoreTypes.OVERRIDE) .beginMethodDefinition(GET_DEFAULT_VALUES_PARAMS) .writeStringStatement("return " + DEFAULT_VALUES_NAME) .finishMethodDefinition(); }
.setReturnType(modelSpec.getGeneratedClassName()); Expression cloneBody = Expressions.callMethodOn("super", "clone") .cast(modelSpec.getGeneratedClassName()).returnExpr();