/*******************************************************************************
 * (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Apache License v2.0 which accompany this distribution.
 *
 * The Apache License is available at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 *******************************************************************************/
package io.cloudslang.lang.tools.build.commands;

import com.beust.jcommander.DynamicParameter;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.converters.CommaParameterSplitter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.apache.commons.lang3.StringUtils.isEmpty;

public class ApplicationArgs {

    @Parameter
    public List<String> parameters = new ArrayList<>();

    @Parameter(names = {"--project-root", "-pr"},
            description = "Project root directory")
    public String projectRoot;

    @Parameter(names = {"--content-root", "-cr"},
            description = "Content root directory")
    public String contentRoot;

    @Parameter(names = {"--test-root", "-tr"},
            description = "Test root directory")
    public String testRoot;

    @Parameter(names = {"--test-suites", "-ts"},
            description = "Comma-separated list of group names to be run",
            splitter = CommaParameterSplitter.class)
    public List<String> testSuites;

    @Parameter(names = {"--coverage", "-cov"},
            description = "Whether or not test coverage data should be outputted")
    public boolean coverage = false;

    @Parameter(names = {"--parallel", "-par"},
            description = "Whether or not parallel test execution should be used")
    public boolean parallel = false;

    @Parameter(names = {"--thread-count", "-th"},
            description = "Number of threads to be used in case of parallel test execution. Has no effect for sequential execution. By default, it is set to the number of processors.")
    public String threadCount;

    @Parameter(names = {"--run-config-file", "-rcf"},
            description = "Specifies the absolute path for the run configuration properties file.")
    public String runConfigPath;

    @Parameter(names = {"--description", "-des"},
            description = "Whether or not to validate the inputs, outputs and results have description")
    public boolean validateDescription = false;

    @Parameter(names = {"--changes_only", "-co"},
            description = "Run only tests from active suites that were affected by this changelist")
    public String changesOnlyConfigPath;

    @Parameter(names = {"--help", "-h"}, help = true,
            description = "Display help information")
    private boolean help;

    @DynamicParameter(names = "-D", description = "Dynamic parameters go here")
    public Map<String, String> dynamicParams = new HashMap<>();

    public List<String> getParameters() {
        return parameters;
    }

    public String getProjectRoot() {
        return projectRoot;
    }

    public String getContentRoot() {
        return contentRoot;
    }

    public String getTestRoot() {
        return testRoot;
    }

    public List<String> getTestSuites() {
        return testSuites;
    }

    public boolean shouldOutputCoverage() {
        return coverage;
    }

    public boolean shouldValidateDescription() {
        return validateDescription;
    }

    public boolean isHelp() {
        return help;
    }

    public Map<String, String> getDynamicParams() {
        return dynamicParams;
    }

    public boolean isParallel() {
        return parallel;
    }

    public String getThreadCount() {
        return threadCount;
    }

    public String getRunConfigPath() {
        return isEmpty(runConfigPath) ? "" : runConfigPath;
    }

    public String getChangesOnlyConfigPath() {
        return changesOnlyConfigPath;
    }
}

@@ -2581,9 +2581,9 @@
 nges
-_
+-
 only

fix comments