All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.draagon.meta.generator.GeneratorBase Maven / Gradle / Ivy

The newest version!
package com.draagon.meta.generator;

import java.io.File;
import java.util.*;

public abstract class GeneratorBase implements Generator {

    public static String ARG_OUTPUTDIR = "outputDir";
    public static String ARG_OUTPUTFILENAME = "outputFilename";

    private Map args = new HashMap<>();
    private MetaDataFilters filters = new MetaDataFilters();
    private List scripts = new ArrayList<>();

    @Override
    public GeneratorBase setArgs(Map argMap) {
         args.putAll( argMap );
        return this;
    }

    protected Map getArgs() {
        return args;
    }

    protected String getArg( String name ) {
        return args.get( name );
    }

    protected String getArg( String name, boolean required ) {
        if ( !hasArg( name )) {
            throw new GeneratorException( "No argument '"+name+"' was specified in the args map" );
        }
        return getArg( name );
    }

    protected boolean hasArg( String name ) {
        return args.containsKey( name );
    }

    @Override
    public GeneratorBase setFilters(List filters) {
        this.filters.addFilters( filters );
        return this;
    }

    protected List getFilters() {
        return filters.getFilters();
    }

    @Override
    public GeneratorBase setScripts(List scripts) {
        this.scripts = scripts;
        return this;
    }

    protected List getScripts() {
        return scripts;
    }

    protected String getOutputFilename() {
        return getArg(ARG_OUTPUTFILENAME, true );
    }

    protected File getOutputDir() {
        return getAndCreateDir( ARG_OUTPUTDIR, getArg(ARG_OUTPUTDIR, true ));
    }

    protected File getAndCreateDir( String name, String dirPath ) {

        File f = new File( dirPath );
        if (!f.exists()) {
            if ( !f.mkdirs() ) {
                throw new GeneratorException( "Directory ["+dirPath+"] could not be created for argument [" +name+ "]" );
            }
        }

        return f;
    }

    //////////////////////////////////////////////////////////////////////
    // Misc methods

    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer(this.getClass().getSimpleName()+"{");
        sb.append("args=").append(getArgs());
        sb.append(", filters=").append(getFilters());
        sb.append(", scripts=").append(getScripts());
        sb.append('}');
        return sb.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy