From 586e553d141e087566a6b064121910089cf52cff Mon Sep 17 00:00:00 2001 From: eikrwaq Date: Wed, 21 Mar 2018 15:31:05 +0000 Subject: Add junit and refactor code Adding Junit tests in modules and refactoring code Change-Id: I887f1b2371d9e3d4a4e2ce6e7e1f3c97a361f283 Issue-ID: POLICY-704 Signed-off-by: eikrwaq --- .../sitemanager/utils/CommandLineHelper.java | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 site-manager/src/main/java/org/onap/policy/common/sitemanager/utils/CommandLineHelper.java (limited to 'site-manager/src/main/java/org/onap/policy/common/sitemanager/utils/CommandLineHelper.java') diff --git a/site-manager/src/main/java/org/onap/policy/common/sitemanager/utils/CommandLineHelper.java b/site-manager/src/main/java/org/onap/policy/common/sitemanager/utils/CommandLineHelper.java new file mode 100644 index 00000000..58db7bc8 --- /dev/null +++ b/site-manager/src/main/java/org/onap/policy/common/sitemanager/utils/CommandLineHelper.java @@ -0,0 +1,116 @@ +/*- + * ============LICENSE_START======================================================= + * site-manager + * ================================================================================ + * Copyright (C) 2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.sitemanager.utils; + +import java.util.List; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.onap.policy.common.sitemanager.exception.IllegalCommandLineArgumentException; + +public class CommandLineHelper { + + private static final String HELP_QUESTION_MARK_ARGUMENT_NAME = "?"; + + private static final String HELP_ARGUMENT_NAME = "h"; + + private static final String RESOURCE_ARGUMENT_NAME = "r"; + + private static final String SITE_ARGUMENT_NAME = "s"; + + private final CommandLine commandLine; + + private static final CommandLineParser PARSER = new DefaultParser(); + + private final Printable printable; + + public CommandLineHelper(final String[] args, final Printable printable) { + this.commandLine = getCommandLine(getOptions(), args); + this.printable = printable; + } + + private Options getOptions() { + final Options options = new Options(); + options.addOption(Option.builder(SITE_ARGUMENT_NAME).hasArg(true).desc("specify site").build()); + options.addOption(Option.builder(RESOURCE_ARGUMENT_NAME).hasArg(true).desc("specify resource name").build()); + options.addOption(Option.builder(HELP_ARGUMENT_NAME).hasArg(false).desc("display help").build()); + options.addOption(Option.builder(HELP_QUESTION_MARK_ARGUMENT_NAME).hasArg(false).desc("display help").build()); + + return options; + } + + public String getSite() { + return commandLine.getOptionValue(SITE_ARGUMENT_NAME); + } + + public String getResourceName() { + return commandLine.getOptionValue(RESOURCE_ARGUMENT_NAME); + } + + private CommandLine getCommandLine(final Options options, final String[] args) { + try { + return PARSER.parse(options, args); + } catch (final ParseException | NullPointerException exception) { + throw new IllegalCommandLineArgumentException(exception.getMessage(), exception); + } + } + + public boolean isValid() { + // fetch options, and remaining arguments + final String sOption = commandLine.getOptionValue(SITE_ARGUMENT_NAME); + final String rOption = commandLine.getOptionValue(RESOURCE_ARGUMENT_NAME); + final List argList = commandLine.getArgList(); + + // a number of commands require either the '-r' option or '-s' option + final boolean optionLetterSpecified = (rOption != null || sOption != null); + + if (argList.isEmpty()) { + printable.println(ErrorMessages.NO_COMMAND_SPECIFIED); + return false; + } + // a number of commands require either the '-r' option or '-s' option + final String arg0 = argList.get(0); + final ExtraCommandLineArgument argument = ExtraCommandLineArgument.getExtraCommandLineArgument(arg0); + + if (!argument.isValid(argList, printable, optionLetterSpecified)) { + return false; + } + + if (sOption != null && rOption != null) { + printable.println(arg0 + ErrorMessages.R_AND_S_OPTIONS_ARE_MUTUALLY_EXCLUSIVE); + return false; + } + + return true; + } + + public boolean isHelpArgumentSet() { + return commandLine.hasOption(HELP_ARGUMENT_NAME) || commandLine.hasOption(HELP_QUESTION_MARK_ARGUMENT_NAME); + } + + public List getArgList() { + return commandLine.getArgList(); + } + +} -- cgit 1.2.3-korg