writer.packageDecl(model.getPackageName()); writer.importClasses(importedClasses.toArray(new String[importedClasses.size()])); writer.javadoc(simpleName + javadocSuffix); writer.annotation(annotation); writer.line("@Generated(\"", getClass().getName(), "\")"); writer.beginClass(model, superType, ifaces); } else if (printSupertype && model.getSuperType() != null) { writer.beginClass(model, model.getSuperType().getType()); } else { writer.beginClass(model); if (propertyAnnotations) { for (Annotation annotation : property.getAnnotations()) { writer.annotation(annotation); writer.privateField(property.getType(), property.getEscapedName()); writer.beginPublicMethod(property.getType(), "get" + BeanUtils.capitalize(propertyName)); writer.line("return ", propertyName, ";"); writer.end(); writer.beginPublicMethod(Types.VOID, "set" + BeanUtils.capitalize(propertyName), parameter); writer.line("this.", propertyName, " = ", propertyName, ";"); writer.end();
protected void constructorsForVariables(CodeWriter writer, EntityType model) throws IOException { String localName = writer.getRawName(model); String genericName = writer.getGenericName(true, model); boolean stringOrBoolean = model.getOriginalCategory() == TypeCategory.STRING || model.getOriginalCategory() == TypeCategory.BOOLEAN; boolean hasEntityFields = model.hasEntityFields() || superTypeHasEntityFields(model); String thisOrSuper = hasEntityFields ? THIS : SUPER; String additionalParams = hasEntityFields ? "" : getAdditionalConstructorParameter(model); if (!localName.equals(genericName)) { suppressAllWarnings(writer); } writer.beginConstructor(new Parameter("variable", Types.STRING)); if (stringOrBoolean) { writer.line(thisOrSuper,"(forVariable(variable)",additionalParams,");"); } else { writer.line(thisOrSuper,"(", localName.equals(genericName) ? EMPTY : "(Class) ", writer.getClassConstant(localName) + COMMA + "forVariable(variable)", hasEntityFields ? ", INITS" : EMPTY, additionalParams,");"); } if (!hasEntityFields) { constructorContent(writer, model); } writer.end(); }
protected void addFullConstructor(EntityType model, CodeWriter writer) throws IOException { // public empty constructor writer.beginConstructor(); writer.end(); // full constructor writer.beginConstructor(model.getProperties(), propertyToParameter); for (Property property : model.getProperties()) { writer.line("this.", property.getEscapedName(), " = ", property.getEscapedName(), ";"); } writer.end(); }
protected void entityAccessor(EntityType model, Property field, CodeWriter writer) throws IOException { Type queryType = typeMappings.getPathType(field.getType(), model, false); writer.beginPublicMethod(queryType, field.getEscapedName()); writer.line("if (", field.getEscapedName(), " == null) {"); writer.line(" ", field.getEscapedName(), " = new ", writer.getRawName(queryType), "(forProperty(\"", field.getName(), "\"));"); writer.line("}"); writer.line(RETURN, field.getEscapedName(), SEMICOLON); writer.end(); }
protected void listAccessor(EntityType model, Property field, CodeWriter writer) throws IOException { String escapedName = field.getEscapedName(); Type queryType = typeMappings.getPathType(field.getParameter(0), model, false); writer.beginPublicMethod(queryType, escapedName, new Parameter("index", Types.INT)); writer.line(RETURN + escapedName + ".get(index);").end(); writer.beginPublicMethod(queryType, escapedName, new Parameter("index", new ClassType(Expression.class, Types.INTEGER))); writer.line(RETURN + escapedName + ".get(index);").end(); }
writer.annotation(annotation); writer.line("@Generated(\"", getClass().getName(), "\")"); writer.beginClass(queryType, new ClassType(pathType)); } else { writer.beginClass(queryType, new ClassType(category, pathType, model)); writer.privateStaticFinal(Types.LONG_P, "serialVersionUID", serialVersionUID + "L");
writer.packageDecl(model.getPackageName()); importedClasses.add(Map.class.getName()); writer.importClasses(importedClasses.toArray(new String[importedClasses.size()])); writer.javadoc(simpleName + javadocSuffix); writer.annotation(annotation); writer.beginClass(model, model.getSuperType().getType()); } else { writer.beginClass(model); if (propertyAnnotations) { for (Annotation annotation : property.getAnnotations()) { writer.annotation(annotation); writer.field(property.getType(), property.getEscapedName()); writer.end();
writer.packageDecl(queryType.getPackageName()); writer.imports(NumberExpression.class.getPackage()); writer.imports(ConstructorExpression.class, Generated.class); writer.imports(Expression.class); writer.javadoc(queryType + " is a Querydsl Projection type for " + simpleName); writer.line("@Generated(\"", getClass().getName(), "\")"); writer.beginClass(queryType, superType); writer.privateStaticFinal(Types.LONG_P, "serialVersionUID", model.hashCode() + "L");
writer.annotation(Override.class); writer.beginPublicMethod(Types.BOOLEAN_P, "equals", o); writer.line("if (", anyColumnIsNull + ") {"); writer.line(" return super.equals(o);"); writer.line("}"); writer.line("if (!(o instanceof ", model.getSimpleName(), ")) {"); writer.line(" return false;"); writer.line("}"); writer.line(model.getSimpleName(), " obj = (", model.getSimpleName(), ")o;"); writer.line("return ", columnEquals + ";"); writer.end(); writer.annotation(Override.class); writer.beginPublicMethod(Types.INT, "hashCode"); writer.line("if (", anyColumnIsNull + ") {"); writer.line(" return super.hashCode();"); writer.line("}"); writer.line("final int prime = 31;"); writer.line("int result = 1;"); for (String property : properties) { writer.line("result = prime * result + ", property, ".hashCode();"); writer.line("return result;"); writer.end(); writer.annotation(Override.class); writer.beginPublicMethod(Types.STRING, "toString"); writer.line("return ", toString + ";");
public void writeService(EntityType model, EntityType serviceModel, CodeWriter writer) throws IOException { String simpleName = model.getSimpleName(); // package if (!model.getPackageName().isEmpty()) { writer.packageDecl(serviceModel.getPackageName()); } Set<String> importedClasses = new HashSet<String>(); importedClasses.add(BaseService.class.getName()); importedClasses.add(model.getFullName()); importedClasses.add(Service.class.getName()); writer.importClasses(importedClasses.toArray(new String[importedClasses.size()])); // javadoc writer.javadoc("This is a @Generated Service(", " " + serviceModel.getFullName() + ")"); writer.line("@Service"); writer.line( "open class " + serviceModel.getSimpleName() + " : BaseService<" + simpleName + ", Long>() {}"); }
protected void introFactoryMethods(CodeWriter writer, final EntityType model) throws IOException { String localName = writer.getRawName(model); String genericName = writer.getGenericName(true, model); Set<Integer> sizes = Sets.newHashSet(); writer.suppressWarnings(UNCHECKED); writer.beginStaticMethod(returnType, "create", c.getParameters(), new Function<Parameter, Parameter>() { @Override writer.beginLine("return Projections.constructor("); writer.append(writer.getClassConstant(localName)); writer.append(", new Class<?>[]{"); boolean first = true; for (Parameter p : c.getParameters()) { if (!first) { writer.append(COMMA); writer.append(writer.getClassConstant(primitive.getFullName())); } else { writer.append(writer.getClassConstant(writer.getRawName(p.getType()))); writer.append("}"); writer.append(");\n"); writer.end();
String localName = writer.getRawName(model); Set<Integer> sizes = Sets.newHashSet(); final boolean asExpr = sizes.add(c.getParameters().size()); writer.beginConstructor(c.getParameters(), new Function<Parameter,Parameter>() { @Override public Parameter apply(Parameter p) { writer.beginLine("super(" + writer.getClassConstant(localName)); writer.append(", new Class<?>[]{"); boolean first = true; writer.append(", "); writer.append(writer.getClassConstant(primitive.getFullName())); } else { writer.append(writer.getClassConstant(writer.getRawName(p.getType()))); writer.append("}"); writer.append(");\n"); writer.end();
writer.beginClass(primaryKeyType); serializePrimaryKeys(model, writer, primaryKeys); writer.end(); writer.beginClass(foreignKeysType); if (foreignKeys != null) { serializeForeignKeys(model, writer, foreignKeys, false); serializeForeignKeys(model, writer, inverseForeignKeys, true); writer.end(); writer.publicFinal( primaryKeyType, namingStrategy.getPrimaryKeysVariable(model), writer.publicFinal( foreignKeysType, namingStrategy.getForeignKeysVariable(model),
private void delegate(final EntityType model, Delegate delegate, SerializerConfig config, CodeWriter writer) throws IOException { Parameter[] params = delegate.getParameters().toArray(new Parameter[delegate.getParameters().size()]); writer.beginPublicMethod(delegate.getReturnType(), delegate.getName(), params); // body start writer.beginLine(RETURN + writer.getRawName(delegate.getDelegateType()) + "." + delegate.getName() + "("); writer.append("this"); if (!model.equals(delegate.getDeclaringType())) { int counter = 0; EntityType type = model; while (type != null && !type.equals(delegate.getDeclaringType())) { type = type.getSuperType() != null ? type.getSuperType().getEntityType() : null; counter++; } for (int i = 0; i < counter; i++) { writer.append("._super"); } } for (Parameter parameter : delegate.getParameters()) { writer.append(COMMA + parameter.getName()); } writer.append(");\n"); // body end writer.end(); }
protected void customField(EntityType model, Property field, SerializerConfig config, CodeWriter writer) throws IOException { Type queryType = typeMappings.getPathType(field.getType(), model, false); writer.line("// custom"); if (field.isInherited()) { writer.line("// inherited"); Supertype superType = model.getSuperType(); if (!superType.getEntityType().hasEntityFields()) { String value = NEW + writer.getRawName(queryType) + "(_super." + field.getEscapedName() + ")"; writer.publicFinal(queryType, field.getEscapedName(), value); } else { writer.publicFinal(queryType, field.getEscapedName()); } } else { String value = NEW + writer.getRawName(queryType) + "(forProperty(\"" + field.getName() + "\"))"; writer.publicFinal(queryType, field.getEscapedName(), value); } }
protected void entityField(EntityType model, Property field, SerializerConfig config, CodeWriter writer) throws IOException { Type queryType = typeMappings.getPathType(field.getType(), model, false); if (field.isInherited()) { writer.line("// inherited"); } if (config.useEntityAccessors()) { writer.protectedField(queryType, field.getEscapedName()); } else { writer.publicFinal(queryType, field.getEscapedName()); } }
protected void initEntityField(CodeWriter writer, SerializerConfig config, EntityType model, Property field) throws IOException { Type queryType = typeMappings.getPathType(field.getType(), model, false); if (!field.isInherited()) { boolean hasEntityFields = field.getType() instanceof EntityType && ((EntityType) field.getType()).hasEntityFields(); writer.line("this." + field.getEscapedName() + ASSIGN, "inits.isInitialized(\"" + field.getName() + "\") ? ", NEW + writer.getRawName(queryType) + "(forProperty(\"" + field.getName() + "\")", hasEntityFields ? (", inits.get(\"" + field.getName() + "\")") : EMPTY, ") : null;"); } else if (!config.useEntityAccessors()) { writer.line("this.", field.getEscapedName(), ASSIGN, "_super.", field.getEscapedName(), SEMICOLON); } }
protected void writeUserImports(CodeWriter writer) throws IOException { Set<String> packages = new HashSet<String>(); Set<String> classes = new HashSet<String>(); for (String javaImport : imports) { //true if the character next to the dot is an upper case or if no dot is found (-1+1=0) the first character boolean isClass = Character.isUpperCase(javaImport.charAt(javaImport.lastIndexOf(".") + 1)); if (isClass) { classes.add(javaImport); } else { packages.add(javaImport); } } String[] marker = new String[]{}; writer.importPackages(packages.toArray(marker)); writer.importClasses(classes.toArray(marker)); }
protected void introImports(CodeWriter writer, SerializerConfig config, EntityType model) throws IOException { writer.staticimports(PathMetadataFactory.class); fullName = fullName.substring(0, fullName.lastIndexOf('.')); writer.importClasses(fullName); writer.imports(SimpleExpression.class.getPackage()); classes.add(PathInits.class); writer.imports(classes.toArray(new Class<?>[classes.size()]));
protected void serialize(EntityType model, Property field, Type type, CodeWriter writer, String factoryMethod, String... args) throws IOException { Supertype superType = model.getSuperType(); // construct value StringBuilder value = new StringBuilder(); if (field.isInherited() && superType != null) { if (!superType.getEntityType().hasEntityFields()) { value.append("_super." + field.getEscapedName()); } } else { value.append(factoryMethod + "(\"" + field.getName() + QUOTE); for (String arg : args) { value.append(COMMA + arg); } value.append(")"); } // serialize it if (field.isInherited()) { writer.line("//inherited"); } if (value.length() > 0) { writer.publicFinal(type, field.getEscapedName(), value.toString()); } else { writer.publicFinal(type, field.getEscapedName()); } }