public void appendFieldMethod()

in hollow/src/main/java/com/netflix/hollow/api/codegen/perfapi/HollowObjectTypePerfAPIClassGenerator.java [74:197]


    public void appendFieldMethod(StringBuilder builder, FieldType fieldType, String fieldName, int fieldIdx, String referencedType) {
        String type = fieldType.name();
        if(fieldType == FieldType.REFERENCE)
            type += " (" + referencedType + ")";

        builder.append("    /**\n" +
                "     * <i>"+schema.getName() + "." + fieldName +"</i><br/>\n" +
                "     * <b>" + type + "</b>\n" +
                "     */\n");

        switch(fieldType) {
            case INT:
                builder.append("    public int get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return Integer.MIN_VALUE;\n");
                builder.append("        return typeAccess.readInt(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");

                builder.append("    public Integer get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Boxed(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        int val = typeAccess.readInt(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("        if(val == Integer.MIN_VALUE)\n");
                builder.append("            return null;\n");
                builder.append("        return val;\n");
                builder.append("    }\n\n");
                break;
            case LONG:
                builder.append("    public long get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return Long.MIN_VALUE;\n");
                builder.append("        return typeAccess.readLong(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");

                builder.append("    public Long get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Boxed(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        long val = typeAccess.readLong(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("        if(val == Long.MIN_VALUE)\n");
                builder.append("            return null;\n");
                builder.append("        return val;\n");
                builder.append("    }\n\n");
                break;
            case FLOAT:
                builder.append("    public float get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return Float.NaN;\n");
                builder.append("        return typeAccess.readFloat(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");

                builder.append("    public Float get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Boxed(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        float val = typeAccess.readFloat(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("        if(Float.isNaN(val))\n");
                builder.append("            return null;\n");
                builder.append("        return val;\n");
                builder.append("    }\n\n");
                break;
            case DOUBLE:
                builder.append("    public double get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return Double.NaN;\n");
                builder.append("        return typeAccess.readDouble(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");

                builder.append("    public Double get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Boxed(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        double val = typeAccess.readDouble(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("        if(Double.isNaN(val))\n");
                builder.append("            return null;\n");
                builder.append("        return val;\n");
                builder.append("    }\n\n");
                break;
            case BOOLEAN:
                builder.append("    public boolean get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return false;\n");
                builder.append("        return Boolean.TRUE.equals(typeAccess.readBoolean(ordinal(ref), fieldIdx[" + fieldIdx + "]));\n");
                builder.append("    }\n\n");

                builder.append("    public Boolean get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Boxed(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        return typeAccess.readBoolean(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");
                break;
            case STRING:
                builder.append("    public String get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        return typeAccess.readString(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");

                builder.append("    public boolean is" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Equal(long ref, String testValue) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return false;\n");
                builder.append("        return typeAccess.isStringFieldEqual(ordinal(ref), fieldIdx[" + fieldIdx + "], testValue);\n");
                builder.append("    }\n\n");
                break;
            case BYTES:
                builder.append("    public byte[] get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return null;\n");
                builder.append("        return typeAccess.readBytes(ordinal(ref), fieldIdx[" + fieldIdx + "]);\n");
                builder.append("    }\n\n");
                break;
            case REFERENCE:
                builder.append("    public long get" + HollowCodeGenerationUtils.upperFirstChar(fieldName) + "Ref(long ref) {\n");
                builder.append("        if(fieldIdx[" + fieldIdx + "] == -1)\n");
                builder.append("            return Ref.NULL;\n");
                builder.append("        return Ref.toRefWithTypeMasked(refMaskedTypeIdx[" + fieldIdx + "], typeAccess.readOrdinal(ordinal(ref), fieldIdx[" + fieldIdx + "]));\n");
                builder.append("    }\n\n");
                break;
        }
        
        if(checkFieldExistsMethods.contains(schema.getName() + "." + fieldName)) {
            builder.append("    public boolean " + fieldName + "FieldExists() {\n");
            builder.append("        return fieldIdx[" + fieldIdx + "] != -1;\n");
            builder.append("    }\n\n");
        }

    }