private void appendTypeAPIAccessor(StringBuilder classBuilder) { String typeAPIClassname = typeAPIClassname(schema.getName()); classBuilder.append(" public " + typeAPIClassname + " typeApi() {\n"); classBuilder.append(" return (").append(typeAPIClassname).append(") delegate.getTypeAPI();\n"); classBuilder.append(" }\n\n"); }
public HollowTypeAPIGenerator(String stateEngineClassname, String packageName, HollowSchema schema, HollowDataset dataset, CodeGeneratorConfig config) { super(packageName, SUB_PACKAGE_NAME, dataset, config); this.apiClassname = stateEngineClassname; this.className = typeAPIClassname(schema.getName()); } }
private void appendTypeAPIAccessor(StringBuilder classBuilder) { String typeAPIClassname = typeAPIClassname(schema.getName()); classBuilder.append(" public " + typeAPIClassname + " typeApi() {\n"); classBuilder.append(" return (").append(typeAPIClassname).append(") delegate.getTypeAPI();\n"); classBuilder.append(" }\n\n"); } }
private void appendTypeAPIAccessor(StringBuilder classBuilder) { String typeAPIClassname = typeAPIClassname(schema.getName()); classBuilder.append(" public " + typeAPIClassname + " typeApi() {\n"); classBuilder.append(" return delegate().getTypeAPI();\n"); classBuilder.append(" }\n\n"); }
private void appendTypeAPIAccessor(StringBuilder classBuilder) { String typeAPIClassname = typeAPIClassname(schema.getName()); classBuilder.append(" public " + typeAPIClassname + " typeApi() {\n"); classBuilder.append(" return (").append(typeAPIClassname).append(") delegate.getTypeAPI();\n"); classBuilder.append(" }\n\n"); } }
@Override public String generate() { StringBuilder builder = new StringBuilder(); appendPackageAndCommonImports(builder, apiClassname); builder.append("import " + HollowListTypeAPI.class.getName() + ";\n\n"); builder.append("import " + HollowListTypeDataAccess.class.getName() + ";\n"); builder.append("import " + HollowListLookupDelegate.class.getName() + ";\n"); builder.append("\n@SuppressWarnings(\"all\")\n"); builder.append("public class ").append(className).append(" extends HollowListTypeAPI {\n\n"); builder.append(" private final ").append(delegateLookupClassname(schema)).append(" delegateLookupImpl;\n\n"); builder.append(" public ").append(className).append("(").append(apiClassname).append(" api, HollowListTypeDataAccess dataAccess) {\n"); builder.append(" super(api, dataAccess);\n"); builder.append(" this.delegateLookupImpl = new ").append(delegateLookupClassname(schema)).append("(this);\n"); builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getElementType())).append(" getElementAPI() {\n"); builder.append(" return getAPI().get").append(typeAPIClassname(schema.getElementType())).append("();\n"); builder.append(" }\n\n"); builder.append(" public ").append(delegateLookupClassname(schema)).append(" getDelegateLookupImpl() {\n"); builder.append(" return delegateLookupImpl;\n"); builder.append(" }\n\n"); builder.append(" public ").append(apiClassname).append(" getAPI() {\n"); builder.append(" return (").append(apiClassname).append(")api;\n"); builder.append(" }\n\n"); builder.append("}"); return builder.toString(); }
@Override public String generate() { StringBuilder builder = new StringBuilder(); appendPackageAndCommonImports(builder, apiClassname); builder.append("import " + HollowMapTypeAPI.class.getName() + ";\n\n"); builder.append("import " + HollowMapTypeDataAccess.class.getName() + ";\n"); builder.append("import " + HollowMapLookupDelegate.class.getName() + ";\n"); builder.append("\n@SuppressWarnings(\"all\")\n"); builder.append("public class ").append(className).append(" extends HollowMapTypeAPI {\n\n"); builder.append(" private final ").append(delegateLookupClassname(schema)).append(" delegateLookupImpl;\n\n"); builder.append(" public ").append(className).append("(").append(apiClassname).append(" api, HollowMapTypeDataAccess dataAccess) {\n"); builder.append(" super(api, dataAccess);\n"); builder.append(" this.delegateLookupImpl = new ").append(delegateLookupClassname(schema)).append("(this);\n"); builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getKeyType())).append(" getKeyAPI() {\n"); builder.append(" return getAPI().get").append(typeAPIClassname(schema.getKeyType())).append("();\n"); builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getValueType())).append(" getValueAPI() {\n"); builder.append(" return getAPI().get").append(typeAPIClassname(schema.getValueType())).append("();\n"); builder.append(" }\n\n"); builder.append(" public ").append(delegateLookupClassname(schema)).append(" getDelegateLookupImpl() {\n"); builder.append(" return delegateLookupImpl;\n"); builder.append(" }\n\n"); builder.append(" public ").append(apiClassname).append(" getAPI() {\n"); builder.append(" return (").append(apiClassname).append(")api;\n"); builder.append(" }\n\n"); builder.append("}"); return builder.toString(); }
builder.append(" return (T)new " + objectClassName + "(((" + typeAPIClassname(schema.getName()) + ")typeAPI).getDelegateLookupImpl(), ordinal);\n"); builder.append(" }\n\n"); builder.append(" return (T)new " + objectClassName + "(new " + delegateCachedClassname(schema) + "((" + typeAPIClassname(schema.getName()) + ")typeAPI, ordinal), ordinal);\n"); builder.append(" }\n\n");
private String generateReferenceFieldAccessors(int fieldNum) { StringBuilder builder = new StringBuilder(); String fieldName = substituteInvalidChars(objectSchema.getFieldName(fieldNum)); String referencedType = substituteInvalidChars(objectSchema.getReferencedType(fieldNum)); builder.append(" public int get"+ uppercase(fieldName) + "Ordinal(int ordinal) {\n"); builder.append(" if(fieldIndex[" + fieldNum +"] == -1)\n"); builder.append(" return missingDataHandler().handleReferencedOrdinal(\"").append(objectSchema.getName()).append("\", ordinal, \"").append(fieldName).append("\");\n"); builder.append(" return getTypeDataAccess().readOrdinal(ordinal, fieldIndex[" + fieldNum + "]);\n"); builder.append(" }\n\n"); builder.append(" public " + typeAPIClassname(referencedType) + " get" + uppercase(fieldName) + "TypeAPI() {\n"); builder.append(" return getAPI().get").append(uppercase(referencedType)).append("TypeAPI();\n"); builder.append(" }"); return builder.toString(); }
builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getElementType())).append(" getElementAPI() {\n"); builder.append(" return getAPI().get").append(typeAPIClassname(schema.getElementType())).append("();\n"); builder.append(" }\n\n");
private void addShortcutTraversal(StringBuilder builder, Shortcut shortcut) { for(int i=0;i<shortcut.getPath().length-1;i++) { String typeAPIClassname = typeAPIClassname(shortcut.getPathTypes()[i]); builder.append(" if(ordinal != -1) ordinal = typeAPI.getAPI().get" + typeAPIClassname + "().get" + uppercase(shortcut.getPath()[i]) + "Ordinal(ordinal);\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"); builder.append(" public ").append(typeAPIClassname(schema.getName())).append(" getTypeAPI() {\n"); builder.append(" return typeAPI;\n"); builder.append(" }\n\n");
classBuilder.append(" public ").append(typeAPIClassname(schema.getName())).append(" getTypeAPI();\n\n");
private void addShortcutAccessMethod(StringBuilder builder, String methodFieldName, Shortcut shortcut) { String finalFieldName = substituteInvalidChars(uppercase(shortcut.getPath()[shortcut.getPath().length-1])); String finalTypeAPI = typeAPIClassname(shortcut.getPathTypes()[shortcut.getPathTypes().length-1]);
builder.append(" private final " + typeAPIClassname(schema.getName())).append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(";\n"); builder.append(" typeDataAccess = dataAccess.getTypeDataAccess(\"").append(schema.getName()).append("\");\n"); builder.append(" if(typeDataAccess != null) {\n"); builder.append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(" = new ").append(typeAPIClassname(schema.getName())).append("(this, (Hollow").append(schemaType(schema)).append("TypeDataAccess)typeDataAccess);\n"); builder.append(" } else {\n"); builder.append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(" = new ").append(typeAPIClassname(schema.getName())).append("(this, new Hollow").append(schemaType(schema)).append("MissingDataAccess(dataAccess, \"").append(schema.getName()).append("\"));\n"); builder.append(" }\n"); builder.append(" addTypeAPI(").append(lowercase(typeAPIClassname(schema.getName()))).append(");\n"); builder.append(" factory = factoryOverrides.get(\"").append(schema.getName()).append("\");\n"); builder.append(" if(factory == null)\n"); builder.append(" if(previousCycleAPI != null && (previousCycleAPI.").append(hollowObjectProviderName(schema.getName())).append(" instanceof HollowObjectCacheProvider))\n"); builder.append(" previousCacheProvider = (HollowObjectCacheProvider) previousCycleAPI.").append(hollowObjectProviderName(schema.getName())).append(";\n"); builder.append(" ").append(hollowObjectProviderName(schema.getName())).append(" = new HollowObjectCacheProvider(typeDataAccess, ").append(lowercase(typeAPIClassname(schema.getName()))).append(", factory, previousCacheProvider);\n"); builder.append(" } else {\n"); builder.append(" ").append(hollowObjectProviderName(schema.getName())).append(" = new HollowObjectFactoryProvider(typeDataAccess, ").append(lowercase(typeAPIClassname(schema.getName()))).append(", factory);\n"); builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getName())).append(" get" + typeAPIClassname(schema.getName())).append("() {\n"); builder.append(" return ").append(lowercase(typeAPIClassname(schema.getName()))).append(";\n"); builder.append(" }\n");
builder.append(" private ").append(typeAPIClassname(schema.getName())).append(" typeAPI;\n\n"); builder.append(" public ").append(className).append("(").append(typeAPIClassname(schema.getName())).append(" typeAPI, int ordinal) {\n"); String typeAPIName = HollowCodeGenerationUtils.typeAPIClassname(shortcut.getPathTypes()[j]); builder.append(" " + ordinalVariableName + " = " + ordinalVariableName + " == -1 ? -1 : typeAPI.getAPI().get").append(typeAPIName).append("().get").append(uppercase(shortcut.getPath()[j])).append("Ordinal(").append(ordinalVariableName).append(");\n"); String typeAPIName = HollowCodeGenerationUtils.typeAPIClassname(shortcut.getPathTypes()[shortcut.getPathTypes().length-1]); builder.append(" this.").append(fieldName).append(" = ").append(ordinalVariableName).append(" == -1 ? null : ").append("typeAPI.getAPI().get").append(typeAPIName).append("().get").append(uppercase(shortcut.getPath()[shortcut.getPath().length-1])).append("(").append(ordinalVariableName).append(");\n"); builder.append(" }\n\n"); builder.append(" public ").append(typeAPIClassname(schema.getName())).append(" getTypeAPI() {\n"); builder.append(" return typeAPI;\n"); builder.append(" }\n\n"); builder.append(" this.typeAPI = (").append(typeAPIClassname(schema.getName())).append(") typeAPI;\n"); builder.append(" }\n\n");