public HollowPOJOClassGenerator(HollowDataset dataset, HollowObjectSchema schema, String packageName, String classNameSuffix, boolean memoizeOrdinal) { this.dataset = dataset; this.schema = schema; this.packageName = packageName; this.classNameSuffix = classNameSuffix; this.className = buildClassName(schema.getName(), classNameSuffix); this.importClasses = new HashSet<Class<?>>(); this.memoizeOrdinal = memoizeOrdinal; }
private String buildFieldType(HollowSchema referencedSchema) { if (referencedSchema instanceof HollowObjectSchema) { return buildClassName(referencedSchema.getName(), classNameSuffix); } else if (referencedSchema instanceof HollowListSchema) { importClasses.add(List.class); HollowSchema elementSchema = dataset.getSchema(((HollowListSchema)referencedSchema).getElementType()); return "List<" + buildFieldType(elementSchema) + ">"; } else if (referencedSchema instanceof HollowSetSchema) { importClasses.add(Set.class); HollowSchema elementSchema = dataset.getSchema(((HollowSetSchema)referencedSchema).getElementType()); return "Set<" + buildFieldType(elementSchema) + ">"; } else if (referencedSchema instanceof HollowMapSchema) { importClasses.add(Map.class); HollowSchema keySchema = dataset.getSchema(((HollowMapSchema)referencedSchema).getKeyType()); HollowSchema valueSchema = dataset.getSchema(((HollowMapSchema)referencedSchema).getValueType()); return "Map<" + buildFieldType(keySchema) + ", " + buildFieldType(valueSchema) + ">"; } throw new IllegalArgumentException("Schema is unrecognized type " + referencedSchema.getClass().getSimpleName()); }