public void generate(Model model) { // Generate classes for each type: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .forEach(this::generateStructSupportClasses); // Generate classes for each enum type: model.types() .filter(EnumType.class::isInstance) .map(EnumType.class::cast) .forEach(this::generateEnumSupportClasses); }
public void generate(Model model) { // Generate classes for each enum type: model.types() .filter(EnumType.class::isInstance) .map(EnumType.class::cast) .forEach(this::generateEnum); // Generate classes for each struct type: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .forEach(this::generateClasses); // Generate a class that has static method to create builders: generateBuildersFactory(model); }
public void generate(Model model) { // Generate classes for each struct type: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .forEach(this::generateStructSupportClasses); // Generate classes for each enum type: model.types() .filter(EnumType.class::isInstance) .map(EnumType.class::cast) .forEach(this::generateEnumSupportClasses); generateXmlTagsPropertiesFile(model); }
private void generateBuildersFactorySource(Model model) { // Begin class: javaBuffer.addLine("public class %1$s {", javaBuffer.getClassName().getSimpleName()); javaBuffer.addLine(); // Generate the builders method for each type: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .sorted() .forEach(this::generateBuilderFactoryMethods); // End class: javaBuffer.addLine("}"); }
private void generateXmlTagsPropertiesFile(Model model) { PropertiesBuffer propertiesBuffer = new PropertiesBuffer(); // Path of the methods.properties file: String methods = XmlReader.class.getPackage().getName().replaceAll("\\.", "/") + "/" + XmlReader.METHODS_FILE; // Generate properties to register for every tag appropriate reader method: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .sorted() .forEach(type -> { Name typeName = type.getName(); String singularTag = schemaNames.getSchemaTagName(typeName); String pluralTag = schemaNames.getSchemaTagName(names.getPlural(typeName)); JavaClassName className = javaTypes.getXmlReaderName(type); propertiesBuffer.addProperty(singularTag, String.format("%1$s.readOne", className)); propertiesBuffer.addProperty(pluralTag, String.format("%1$s.readMany", className)); }); try { propertiesBuffer.write(new File(resourcesDir, methods)); } catch (IOException exception) { throw new RuntimeException("Can't write file for XML generic methods reader.", exception); } }
public void generateReport(Model model) { // Headers: csvBuffer.setHeaders( KIND.toString(), NAME.toString(), ITEMS.toString(), DOCUMENTS.toString(), AREA.toString(), AUTHOR.toString(), DATE.toString(), STATUS.toString() ); // Rows for types: model.types() .filter(type -> !(type instanceof ListType)) .sorted() .forEach(this::generateRows); // Rows for services: model.services() .sorted() .forEach(this::generateRows); }
docBuffer.addLine("This section enumerates all the data types that are available in the API."); docBuffer.addLine(); model.types().sorted().forEach(this::documentType);
private void writeModel() { writer.writeStartElement("model"); Service root = model.getRoot(); if (root != null) { writer.writeElement("root", getServiceRef(root)); } writer.writeStartElement("types"); model.types().forEach(this::writeType); writer.writeEndElement(); writer.writeStartElement("services"); model.services().forEach(this::writeService); writer.writeEndElement(); writer.writeStartElement("documents"); model.documents().forEach(this::writeDocument); writer.writeEndElement(); writer.writeEndElement(); }
private void writeModel() { writer.writeStartObject(); Service root = model.getRoot(); if (root != null) { writer.write("root", getServiceRef(root)); } writer.writeStartArray("types"); model.types().forEach(this::writeType); writer.writeEnd(); writer.writeStartArray("services"); model.services().forEach(this::writeService); writer.writeEnd(); writer.writeStartArray("documents"); model.documents().forEach(this::writeDocument); writer.writeEnd(); writer.writeEnd(); }