Java tutorial
/** * Platypus: Page Layout and Typesetting Software (free at platypus.pz.org) * * Platypus is (c) Copyright 2009-12 Pacific Data Works LLC. All Rights Reserved. * Licensed under Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) */ package org.pz.platypus.commandline; import org.apache.commons.cli.*; import org.pz.platypus.*; import org.pz.platypus.utilities.*; /** * Process the command-line options. * @author alb; based in part on work by Atul S. Khot (ask) */ public class ClProcessor { private GDD gdd; private ClParser clp; private String[] args; private String outputFormat = ""; // note empty string public ClProcessor(final ClParser clParser, final String[] Args, final GDD Gdd) { gdd = Gdd; clp = clParser; args = Args; } public String process() { String outputLocation = null; CommandLine cl = clp.getLine(); processBooleanOptions(cl); if (outputFormat != null) { FormatSelection fs = new FormatSelection(clp, gdd); fs.determine(); String format = gdd.sysStrings.get("_FORMAT"); outputLocation = verifyOutputPlugin(format); updateFilenamesInSystemStrings(cl, gdd.sysStrings); addCommandLineToSystemStrings(args, gdd.sysStrings); gdd.diag("Command line: " + gdd.sysStrings.get("_COMMAND_LINE")); } return (outputLocation); } public void processVerbosityOptions() { if (clp.getLine().hasOption("-vverbose")) gdd.setClVVerbose(true); if (clp.getLine().hasOption("-verbose")) gdd.setClVerbose(true); } public void processBooleanOptions(final CommandLine cl) { if (args.length == 0) gdd.log.severe(gdd.getLit("PLEASE_RERUN_WITH_FILENAMES")); // falls through to next test. processVerbosityOptions(); if (cl.hasOption("-help") || cl.getOptions().length == 0) { MessagesToUser.showUsage(gdd.lits, clp); outputFormat = null; // indicates no further output to be done. } if (cl.hasOption("-fontlist")) { outputFormat = "fontlist"; } } private String verifyOutputPlugin(String format) { PluginLocator locator = new PluginLocator(gdd); return (locator.locate(format)); } private void updateFilenamesInSystemStrings(final CommandLine cl, final SystemStrings sys) { sys.add("_INPUT_FILE", cl.getOptionValue("infile")); if (sys.get("_OUTPUT_FILE") == null) // true except if fs.determine() computed output filename sys.add("_OUTPUT_FILE", cl.getOptionValue("outfile")); } private void addCommandLineToSystemStrings(final String[] args, final SystemStrings sys) { StringBuilder commandLine = new StringBuilder(60); for (String arg : args) commandLine.append(arg + " "); sys.add("_COMMAND_LINE", commandLine.toString().trim()); } }