package eu.hats_project.build.maven.plugin; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.logging.Log; import abs.backend.java.JavaBackend; /** * * @author pwong * */ public class JavaGenerator extends MTVLParser { /** * * @param absfrontEnd The frontend jar * @param absSrcFolder * @param absArguments * @param absJavaBackendTargetFolder * @param verbose * @param sourceOnly * @param stdlib * @param loctype * @param productName * @param log * @param checkProductSelection * @param mTVL * @return * @throws MojoExecutionException */ List<String> generateJava(File absfrontEnd, File absSrcFolder, List<String> absArguments, File absJavaBackendTargetFolder, boolean checkProductSelection, boolean verbose, boolean sourceOnly, boolean stdlib, boolean loctype, String productName, Log log) throws MojoExecutionException { if (!absJavaBackendTargetFolder.exists()) { if (!absJavaBackendTargetFolder.mkdirs()) { throw new MojoExecutionException("Could not create target folder " + absJavaBackendTargetFolder); } } if (!absSrcFolder.exists()) { throw new MojoExecutionException("Source folder does not exist"); } List<String> args = new ArrayList<String>(); System.setProperty("java.class.path",absfrontEnd.getAbsolutePath()); args.add("-d"); args.add(absJavaBackendTargetFolder.getAbsolutePath()); absArguments = super.parseMTVL(absfrontEnd, absArguments, productName, verbose, checkProductSelection, log); if (productName != null) { args.add("-product="+productName); } if (! stdlib) { args.add("-nostdlib"); } if (loctype) { args.add("-loctypes"); } if (sourceOnly) { args.add("-sourceonly"); } if (verbose) { args.add("-v"); } args.addAll(absArguments); String[] argArray = args.toArray(new String[args.size()]); new DebugArgOutput().debug("Generating Java Code", argArray, log); JavaBackend.main(argArray); return absArguments; } }