Search in sources :

Example 1 with Primitive

use of org.eclipse.collections.codegenerator.model.Primitive in project eclipse-collections by eclipse.

the class EclipseCollectionsCodeGenerator method generateFiles.

/**
 * Generates code and only write contents to disk which differ from the current file contents.
 *
 * @return The number of files written.
 */
public int generateFiles() {
    List<URL> allTemplateFilesFromClassPath = FileUtils.getAllTemplateFilesFromClasspath(this.templateDirectory, this.classPathURLs);
    for (URL url : allTemplateFilesFromClassPath) {
        this.url = url;
        this.templateFile = new STGroupFile(this.url, "UTF-8", '<', '>');
        this.templateFile.setListener(this.stErrorListener);
        this.templateFile.registerRenderer(String.class, new IntegerOrStringRenderer());
        if (this.templateFile.isDefined("fileName")) {
            this.setTest();
            File targetPath = this.constructTargetPath();
            FileUtils.createDirectory(targetPath);
            boolean hasTwoPrimitives = this.templateFile.isDefined("hasTwoPrimitives") && Boolean.valueOf(this.templateFile.getInstanceOf("hasTwoPrimitives").render());
            boolean skipBoolean = this.templateFile.isDefined("skipBoolean") && Boolean.valueOf(this.templateFile.getInstanceOf("skipBoolean").render());
            boolean skipBooleanKeys = this.templateFile.isDefined("skipBooleanKeys") && Boolean.valueOf(this.templateFile.getInstanceOf("skipBooleanKeys").render());
            if (hasTwoPrimitives) {
                for (Primitive primitive1 : Primitive.values()) {
                    if (primitive1 == Primitive.BOOLEAN && (skipBoolean || skipBooleanKeys)) {
                        continue;
                    }
                    for (Primitive primitive2 : Primitive.values()) {
                        if (primitive2 == Primitive.BOOLEAN && skipBoolean) {
                            continue;
                        }
                        String sourceFileName = this.executeTemplate(primitive1, primitive2, "fileName");
                        File outputFile = new File(targetPath, sourceFileName + ".java");
                        if (!EclipseCollectionsCodeGenerator.sourceFileExists(outputFile)) {
                            String classContents = this.executeTemplate(primitive1, primitive2, "class");
                            this.checkSumClassContentsAndWrite(classContents, targetPath, sourceFileName);
                        }
                    }
                }
            } else {
                for (Primitive primitive : Primitive.values()) {
                    if (primitive == Primitive.BOOLEAN && skipBoolean) {
                        continue;
                    }
                    String sourceFileName = this.executeTemplate(primitive, "fileName");
                    File outputFile = new File(targetPath, sourceFileName + ".java");
                    if (!EclipseCollectionsCodeGenerator.sourceFileExists(outputFile)) {
                        String classContents = this.executeTemplate(primitive, "class");
                        this.checkSumClassContentsAndWrite(classContents, targetPath, sourceFileName);
                    }
                }
            }
        }
    }
    return this.numFileWritten;
}
Also used : Primitive(org.eclipse.collections.codegenerator.model.Primitive) IntegerOrStringRenderer(org.eclipse.collections.codegenerator.tools.IntegerOrStringRenderer) STGroupFile(org.stringtemplate.v4.STGroupFile) File(java.io.File) STGroupFile(org.stringtemplate.v4.STGroupFile) URL(java.net.URL)

Aggregations

File (java.io.File)1 URL (java.net.URL)1 Primitive (org.eclipse.collections.codegenerator.model.Primitive)1 IntegerOrStringRenderer (org.eclipse.collections.codegenerator.tools.IntegerOrStringRenderer)1 STGroupFile (org.stringtemplate.v4.STGroupFile)1