Example usage for org.apache.commons.cli OptionBuilder hasArgs

List of usage examples for org.apache.commons.cli OptionBuilder hasArgs

Introduction

In this page you can find the example usage for org.apache.commons.cli OptionBuilder hasArgs.

Prototype

public static OptionBuilder hasArgs() 

Source Link

Document

The next Option created can have unlimited argument values.

Usage

From source file:sos.scheduler.cron.CrontabFileConverter.java

/**
 * @param args//from ww w . ja va  2 s . c  o  m
 */
public static void main(final String[] args) {

    Logger logger = Logger.getLogger(CrontabFileConverter.class);
    @SuppressWarnings("unused")
    Log4JHelper objLogger = null;

    objLogger = new Log4JHelper(null);

    logger = Logger.getRootLogger();
    logger.info("SOS CronConverter - Main"); //$NON-NLS-1$

    /*try {
         test();
       } catch(Exception ex){
    ex.printStackTrace();
       }
    */
    try {
        //SOSArguments arguments = new SOSArguments(args);
        SOSLogger sosLogger;
        String sourceFile = "";
        String targetFile = "";
        String changeUser = "";
        File source = null;
        File target = null;
        int logLevel = 0;
        boolean sysTab = false;
        boolean useOldRunTime = false;
        String jobTimeout = "";
        /*
        try {
           sourceFile = arguments.as_string("-crontab=");
           if (sourceFile.equalsIgnoreCase("/etc/crontab")) sysTab = true;
           targetFile = arguments.as_string("-target=");
           logLevel = arguments.as_int("-v=",SOSStandardLogger.INFO);
           sysTab = arguments.as_bool("-system=",sysTab);
           useOldRunTime = arguments.as_bool("-oldRunTime=",false);
           changeUser = arguments.as_string("-change-user=", "su");
        } catch (Exception e1) {
           System.out.println(e1.getMessage());
           showUsage();
           System.exit(0);
        }*/
        Options options = new Options();
        OptionBuilder.withArgName("0|1");
        OptionBuilder.hasArg();
        OptionBuilder.withDescription("set to 1 if source is the system crontab (with user field)");

        Option optSysTab = OptionBuilder.create(conOptionsSYSTAB);

        OptionBuilder.withArgName("file");
        OptionBuilder.hasArgs();
        OptionBuilder.isRequired();
        OptionBuilder.withDescription("crontab file");

        Option optSourceFile = OptionBuilder.create(conOptionCRONTAB);
        OptionBuilder.withArgName("file");
        OptionBuilder.hasArgs();
        OptionBuilder.isRequired();
        OptionBuilder.withDescription("xml configuration file");

        Option optTargetFile = OptionBuilder.create(conOptionTARGET);
        OptionBuilder.withArgName("level");
        OptionBuilder.hasArg();
        OptionBuilder.withType(new Integer(0));
        OptionBuilder.withDescription("loglevel [0=info] [1=debug1]...[9=debug]");

        Option optLogLevel = OptionBuilder.create(conOptionVERBOSE);

        OptionBuilder.withArgName("command");
        OptionBuilder.hasArgs();
        OptionBuilder.withDescription(
                "change user command for -systab=1. 'su' or 'sudo' or define your own command using $SCHEDULER_CRONTAB_USER.");

        Option optChangeUser = OptionBuilder.create(conOptionCHANGEUSER);

        OptionBuilder.withArgName("seconds");
        OptionBuilder.hasArg();
        OptionBuilder.withDescription("job timeout (0 for unlimited");
        @SuppressWarnings("unused")
        Option optTimeOut = OptionBuilder.create(conOptionTIMEOUT);
        @SuppressWarnings("unused")
        Option optOldRunTime = new Option("oldRunTime", "");

        OptionBuilder.withArgName("true|false");
        OptionBuilder.hasArg();
        OptionBuilder.withDescription("set to true if script has to be mok'ed");
        Option optCreateMok = OptionBuilder.create(conOptionCREATE_MOCK);

        OptionBuilder.withArgName("true|false");
        OptionBuilder.hasArg();
        OptionBuilder.withDescription("set to true if you want to create jobChains and jobs");
        Option optCreateJobChains = OptionBuilder.create(conOptionCREATE_JobChains);

        options.addOption(optSysTab);
        options.addOption(optSourceFile);
        options.addOption(optTargetFile);
        options.addOption(optLogLevel);
        options.addOption(optChangeUser);
        options.addOption(optCreateMok);
        options.addOption(optCreateJobChains);

        CommandLineParser parser = new GnuParser();
        CommandLine line = null;
        try {
            line = parser.parse(options, args);
        } catch (Exception e) {
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("cronconverter", options, true);
            System.exit(0);
        }

        sourceFile = getWholeArgument(line.getOptionValues(conOptionCRONTAB));
        if (sourceFile.equalsIgnoreCase(conSystemCrontabName))
            sysTab = true;
        targetFile = getWholeArgument(line.getOptionValues(conOptionTARGET));

        String ll = line.getOptionValue(conOptionVERBOSE, "" + SOSStandardLogger.INFO);
        logLevel = Integer.parseInt(ll);
        if (line.hasOption(optSysTab.getOpt())) {
            sysTab = line.getOptionValue(optSysTab.getOpt()).trim().equals("1");
        }
        useOldRunTime = line.hasOption("oldRunTime");
        changeUser = "";
        if (line.hasOption(conOptionCHANGEUSER)) {
            changeUser = getWholeArgument(line.getOptionValues(conOptionCHANGEUSER));
        }

        jobTimeout = line.getOptionValue(conOptionTIMEOUT);
        if (logLevel == 0)
            logLevel = SOSLogger.INFO;
        sosLogger = new SOSStandardLogger(logLevel);

        target = new File(targetFile);
        source = new File(sourceFile);

        CrontabFileConverter cc = new CrontabFileConverter(sosLogger);
        if (jobTimeout != null && jobTimeout.length() > 0) {
            cc.setTimeout(jobTimeout);
        }
        cc.setChangeUserCommand(changeUser);
        if (line.hasOption(conOptionCREATE_MOCK)) { // JITL-28
            cc.setCreateAMock(line.getOptionValue(conOptionCREATE_MOCK).equalsIgnoreCase(conTRUE));
        }
        if (line.hasOption(conOptionCREATE_JobChains)) { // JITL-28
            cc.setCreateJobChainJobs(line.getOptionValue(conOptionCREATE_JobChains).equalsIgnoreCase(conTRUE));
        }

        //         cc.setCreateAMock(line.getOptionValue(conOptionCREATE_MOCK).equalsIgnoreCase(conTRUE));
        //         cc.setCreateJobChainJobs(line.getOptionValue(conOptionCREATE_JobChains).equalsIgnoreCase(conTRUE));

        cc.setSystemCronTab(sysTab);
        cc.oldRunTime = useOldRunTime;
        cc.cronFile2SchedulerXMLFile(source, target);

    } catch (Exception e) {
        e.printStackTrace();
        System.exit(1);
    }

    System.exit(0);
}