private void generateCloneMethod(StringBuilder classBodyBuilder) { classBodyBuilder.append(" public ").append(getClassName()).append(" clone() {\n"); classBodyBuilder.append(" try {\n"); classBodyBuilder.append(" ").append(getClassName()) .append(" clone = (" + getClassName() + ") super.clone();\n"); if (memoizeOrdinal) { classBodyBuilder.append(" clone.__assigned_ordinal = -1;\n"); } classBodyBuilder.append(" return clone;\n"); classBodyBuilder .append(" } catch (CloneNotSupportedException cnse) { throw new RuntimeException(cnse); }\n"); }
private void generateToStringMethod(StringBuilder classBodyBuilder) { classBodyBuilder.append(" public String toString() {\n"); classBodyBuilder.append(" StringBuilder builder = new StringBuilder(\"").append(getClassName()).append("{\");\n"); for (int i=0;i<schema.numFields();i++) { classBodyBuilder.append(" builder.append(\""); if (i > 0) classBodyBuilder.append(","); classBodyBuilder.append(getFieldName(i)).append("=\").append(").append(getFieldName(i)).append(");\n"); } classBodyBuilder.append(" builder.append(\"}\");\n"); classBodyBuilder.append(" return builder.toString();\n"); classBodyBuilder.append(" }\n\n"); }
private void generateChainableSetters(StringBuilder classBodyBuilder) { for (int i = 0; i < schema.numFields(); i++) { classBodyBuilder.append(" public ").append(getClassName()).append(" set") .append(uppercase(getFieldName(i))).append("(") .append(fieldType(i)).append(" ").append(getFieldName(i)).append(") {\n"); classBodyBuilder.append(" this.").append(getFieldName(i)).append(" = ") .append(getFieldName(i)).append(";\n"); classBodyBuilder.append(" return this;\n"); classBodyBuilder.append(" }\n"); } }
public void generateFiles(File directory) throws IOException { Path destinationPath = directory.toPath(); Path packagePath = Paths.get(packageName.replace(".", File.separator)); if (!destinationPath.toAbsolutePath().endsWith(packagePath)) { destinationPath = destinationPath.resolve(packagePath); } directory = destinationPath.toFile(); if (!directory.exists()) directory.mkdirs(); for (HollowSchema schema : dataset.getSchemas()) { if (schema instanceof HollowObjectSchema && !isPrimitiveType(schema.getName())) { HollowPOJOClassGenerator generator = new HollowPOJOClassGenerator(dataset, (HollowObjectSchema) schema, packageName, pojoClassNameSuffix); FileWriter writer = new FileWriter(new File(directory, generator.getClassName() + ".java")); writer.write(generator.generate()); writer.close(); } } } }
private void generateEqualsMethod(StringBuilder classBodyBuilder) { classBodyBuilder.append(" public boolean equals(Object other) {\n"); classBodyBuilder.append(" if (other == this) return true;\n"); classBodyBuilder.append(" if (!(other instanceof ").append(getClassName()).append("))\n"); classBodyBuilder.append(" return false;\n\n"); classBodyBuilder.append(" ").append(getClassName()).append(" o = (").append(getClassName()).append(") other;\n"); for(int i=0;i<schema.numFields();i++) { switch(schema.getFieldType(i)) {
private void generateConstructorForPrimaryKey(StringBuilder classBodyBuilder) { PrimaryKey primaryKey = schema.getPrimaryKey(); if (primaryKey == null) { return; } // don't allow no-arg constructors if we have a primary key classBodyBuilder.append(" private ").append(getClassName()).append("() {}\n\n"); classBodyBuilder.append(" public ").append(getClassName()).append("("); // classBodyBuilder.append(" this.").append(.fieldType for (int i = 0; i < primaryKey.numFields(); i++) { if (i > 0) { classBodyBuilder.append(", "); } int fieldIndex = getIndexFromFieldName(primaryKey.getFieldPath(i)); classBodyBuilder.append(fieldType(fieldIndex)).append(" ").append(getFieldName(fieldIndex)); } classBodyBuilder.append(") {\n"); for (int i = 0; i < primaryKey.numFields(); i++) { int fieldIndex = getIndexFromFieldName(primaryKey.getFieldPath(i)); classBodyBuilder.append(" this.").append(getFieldName(fieldIndex)).append(" = ") .append(getFieldName(fieldIndex)).append(";\n"); } classBodyBuilder.append(" }\n\n"); }
private void generateChainableAddForSetAndList(StringBuilder classBodyBuilder) { for (int i = 0; i < schema.numFields(); i++) { if (schema.getFieldType(i) != FieldType.REFERENCE) { continue; } HollowSchema referencedSchema = dataset.getSchema(schema.getReferencedType(i)); if (referencedSchema instanceof HollowListSchema || referencedSchema instanceof HollowSetSchema) { HollowSchema elementSchema = dataset.getSchema(referencedSchema instanceof HollowListSchema ? ((HollowListSchema) referencedSchema).getElementType() : ((HollowSetSchema) referencedSchema).getElementType()); String elementType = buildFieldType(elementSchema); Class fieldImplementationType = referencedSchema instanceof HollowListSchema ? ArrayList.class : HashSet.class; importClasses.add(fieldImplementationType); classBodyBuilder.append(" public ").append(getClassName()).append(" addTo") .append(uppercase(getFieldName(i))).append("(") .append(elementType).append(" ").append(lowercase(elementType)).append(") {\n"); classBodyBuilder.append(" if (this.").append(getFieldName(i)).append(" == null) {\n"); classBodyBuilder.append(" this.").append(getFieldName(i)).append(" = new ") .append(fieldImplementationType.getSimpleName()).append("<").append(elementType).append(">();\n"); classBodyBuilder.append(" }\n"); classBodyBuilder.append(" this.").append(getFieldName(i)).append(".add(") .append(lowercase(elementType)).append(");\n"); classBodyBuilder.append(" return this;\n"); classBodyBuilder.append(" }\n"); } } }
classBodyBuilder.append("@HollowTypeName(name=\"").append(schema.getName()).append("\")\n"); generateHollowPrimaryKeyAnnotation(classBodyBuilder); classBodyBuilder.append("public class ").append(getClassName()).append(" implements Cloneable {\n");