public String generate()

in hollow/src/main/java/com/netflix/hollow/api/codegen/delegate/HollowObjectDelegateLookupImplGenerator.java [49:155]


    public String generate() {
        StringBuilder builder = new StringBuilder();
        appendPackageAndCommonImports(builder);

        builder.append("import ").append(HollowObjectAbstractDelegate.class.getName()).append(";\n");
        builder.append("import ").append(HollowObjectTypeDataAccess.class.getName()).append(";\n");
        builder.append("import ").append(HollowObjectSchema.class.getName()).append(";\n");

        appendGeneratedAnnotation(builder);
        builder.append("\n@SuppressWarnings(\"all\")\n");
        builder.append("public class ").append(className).append(" extends HollowObjectAbstractDelegate implements ").append(delegateInterfaceName(schema.getName())).append(" {\n\n");

        builder.append("    private final ").append(typeAPIClassname(schema.getName())).append(" typeAPI;\n\n");

        builder.append("    public ").append(className).append("(").append(typeAPIClassname(schema.getName())).append(" typeAPI) {\n");
        builder.append("        this.typeAPI = typeAPI;\n");
        builder.append("    }\n\n");

        for(int i=0;i<schema.numFields();i++) {
            String methodFieldName = substituteInvalidChars(uppercase(schema.getFieldName(i)));

            switch(schema.getFieldType(i)) {
            case BOOLEAN:
                builder.append("    public boolean get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public Boolean get").append(methodFieldName).append("Boxed(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case BYTES:
                builder.append("    public byte[] get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case DOUBLE:
                builder.append("    public double get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public Double get").append(methodFieldName).append("Boxed(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case FLOAT:
                builder.append("    public float get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public Float get").append(methodFieldName).append("Boxed(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case INT:
                builder.append("    public int get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public Integer get").append(methodFieldName).append("Boxed(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case LONG:
                builder.append("    public long get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public Long get").append(methodFieldName).append("Boxed(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
                builder.append("    }\n\n");
                break;
            case STRING:
                builder.append("    public String get").append(methodFieldName).append("(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
                builder.append("    }\n\n");
                builder.append("    public boolean is").append(methodFieldName).append("Equal(int ordinal, String testValue) {\n");
                builder.append("        return typeAPI.is").append(methodFieldName).append("Equal(ordinal, testValue);\n");
                builder.append("    }\n\n");
                break;
            case REFERENCE:
                Shortcut shortcut = ergonomicShortcuts.getShortcut(schema.getName() + "." + schema.getFieldName(i));
                if(shortcut != null) {
                    addShortcutAccessMethod(builder, methodFieldName, shortcut);
                }

                builder.append("    public int get").append(methodFieldName).append("Ordinal(int ordinal) {\n");
                builder.append("        return typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
                builder.append("    }\n\n");
                break;
            }
        }

        builder.append("    public ").append(typeAPIClassname(schema.getName())).append(" getTypeAPI() {\n");
        builder.append("        return typeAPI;\n");
        builder.append("    }\n\n");

        builder.append("    @Override\n");
        builder.append("    public HollowObjectSchema getSchema() {\n");
        builder.append("        return typeAPI.getTypeDataAccess().getSchema();\n");
        builder.append("    }\n\n");

        builder.append("    @Override\n");
        builder.append("    public HollowObjectTypeDataAccess getTypeDataAccess() {\n");
        builder.append("        return typeAPI.getTypeDataAccess();\n");
        builder.append("    }\n\n");

        builder.append("}");

        return builder.toString();

    }