org.prot.appserver.config.ArgumentParser.java Source code

Java tutorial

Introduction

Here is the source code for org.prot.appserver.config.ArgumentParser.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Andreas Wolke.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Andreas Wolke - initial API and implementation and initial documentation
 *******************************************************************************/
package org.prot.appserver.config;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.log4j.Logger;

public class ArgumentParser {
    private static CommandLine cmd = null;

    public static void dump() {
        Logger logger = Logger.getLogger(ArgumentParser.class);

        if (cmd == null) {
            logger.error("Missing starup arguments");
            return;
        }

        logger.info("Startup arguments:");
        for (Option option : cmd.getOptions()) {
            logger.info(option.getOpt() + " = " + option.getValue());
        }
    }

    public static void parseArguments(String args[]) {
        Map<String, String> parsed = new HashMap<String, String>();
        for (int i = 0; i < args.length; i++) {
            System.out.println("arg: " + args[i]);
            if (args[i].startsWith("-")) {
                String key = args[i];
                i++;
                String value = args[i];
                parsed.put(key, value);
            }
        }

        Configuration config = Configuration.getInstance();
        config.setAppId(parsed.get("-appId"));
        config.setAppServerPort(Integer.parseInt(parsed.get("-appSrvPort")));

        if (parsed.containsKey("-baseDir"))
            config.setWorkingDirectory(parsed.get("-baseDir"));

        if (parsed.containsKey("-workDir"))
            config.setWorkingDirectory(parsed.get("-workDir"));

        if (parsed.containsKey("-stdio"))
            config.setEnableStdOut(Boolean.parseBoolean(parsed.get("-stdio")));

        if (parsed.containsKey("-controller"))
            config.setRequiresController(Boolean.parseBoolean(parsed.get("-controller")));

        if (parsed.containsKey("-token")) {
            config.setPrivileged(true);
            config.setAuthenticationToken(parsed.get("-token"));
        }

        // Finish the configuration process
        config.postInitialize();
    }
    //
    // @SuppressWarnings("static-access")
    // public static void parseArguments_old(String args[]) {
    // Options options = new Options();
    //
    // // AppId
    // Option appId =
    // OptionBuilder.withArgName("application id").hasArg().isRequired().create("appId");
    // options.addOption(appId);
    //
    // // Port for this AppServer
    // Option appServerPort =
    // OptionBuilder.withArgName("appServer port").hasArg().isRequired().create(
    // "appSrvPort");
    // options.addOption(appServerPort);
    //
    // // Should the AppServer use the STDOUT and STDIN streams
    // Option stdio =
    // OptionBuilder.withArgName("write sdtout messages").hasArg().create("stdio");
    // options.addOption(stdio);
    //
    // // Should the AppServer shutdown if the connection to the local
    // // Controller breaks
    // Option controller =
    // OptionBuilder.withArgName("requires the Controller").hasArg()
    // .create("controller");
    // options.addOption(controller);
    //
    // // Privileged applications must authenticate with the controller
    // Option authenticationToken = OptionBuilder.withArgName(
    // "authentication token used to authenticate privileged applications").hasArg().create("token");
    // options.addOption(authenticationToken);
    //
    // // Base directory where the application resides
    // Option baseDir = OptionBuilder.withArgName(
    // "base directory where the application and yaml configuration reside").hasArg().create(
    // "baseDir");
    // options.addOption(baseDir);
    //
    // // Location of the decompressed application (for the standalone mode)
    // Option workingDirectory =
    // OptionBuilder.withArgName("application directory").hasArg().create(
    // "workDir");
    // options.addOption(workingDirectory);
    //
    // try {
    // // Parse the command line
    // CommandLineParser parser = new GnuParser();
    // CommandLine cmd = parser.parse(options, args);
    // ArgumentParser.cmd = cmd;
    //
    // // Central configuration
    // Configuration config = Configuration.getInstance();
    //
    // // Fill the configuration
    // config.setAppId(cmd.getOptionValue("appId"));
    // config.setAppServerPort(new Integer(cmd.getOptionValue("appSrvPort")));
    //
    // if (cmd.hasOption("stdio"))
    // config.setEnableStdOut(Boolean.parseBoolean(cmd.getOptionValue("stdio")));
    //
    // if (cmd.hasOption("controller"))
    // config.setRequiresController(Boolean.parseBoolean(cmd.getOptionValue("controller")));
    //
    // if (cmd.hasOption("token")) {
    // config.setPrivileged(true);
    // config.setAuthenticationToken(cmd.getOptionValue("token"));
    // }
    //
    // if (cmd.hasOption("baseDir")) {
    // config.setWorkingDirectory(cmd.getOptionValue("baseDir"));
    // }
    //
    // if (cmd.hasOption("workDir")) {
    // config.setWorkingDirectory(cmd.getOptionValue("workDir"));
    // }
    //
    // // Finish the configuration process
    // config.postInitialize();
    //
    // } catch (ParseException e) {
    // HelpFormatter formatter = new HelpFormatter();
    // formatter.printHelp("AppServer", options);
    //
    // // Exit process
    // System.exit(0);
    // } catch (NumberFormatException e) {
    // HelpFormatter formatter = new HelpFormatter();
    // formatter.printHelp("AppServer", options);
    //
    // // Exit process
    // System.exit(0);
    // }
    // }
}