1 /******************************************************************************* 2 * Copyright (c) 2007, 2014 Massimiliano Ziccardi 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 *******************************************************************************/ 16 package it.jnrpe.plugins; 17 18 import it.jnrpe.ICommandLine; 19 20 import java.util.List; 21 22 import org.apache.commons.cli2.CommandLine; 23 24 /** 25 * Incapsulate the commons cli CommandLine object, so that the plugins have no 26 * dependencies against the command line parsing library. 27 * 28 * @author Massimiliano Ziccardi 29 * 30 */ 31 class PluginCommandLine implements ICommandLine { 32 /** 33 * The Apache Commons Cli {@link CommandLine} object. 34 */ 35 private final CommandLine commandLine; 36 37 /** 38 * Incapsulate the given command line. 39 * 40 * @param cl 41 * The command line to be incapsulated 42 */ 43 public PluginCommandLine(final CommandLine cl) { 44 commandLine = cl; 45 } 46 47 /** 48 * Returns the value of the specified option. 49 * 50 * @param optionName 51 * The option name 52 * @return The value of the option 53 */ 54 public String getOptionValue(final String optionName) { 55 if (optionName.length() == 1) { 56 return getOptionValue(optionName.charAt(0)); 57 } 58 return (String) commandLine.getValue("--" + optionName); 59 } 60 61 /** 62 * @param optionName 63 * The name of the option whose values we are searching for. 64 * @return The list of the values. 65 */ 66 @SuppressWarnings("unchecked") 67 public List<String> getOptionValues(final String optionName) { 68 if (optionName.length() == 1) { 69 return getOptionValues(optionName.charAt(0)); 70 } 71 72 return commandLine.getValues("--" + optionName); 73 } 74 75 /** 76 * Returns the value of the specified option. If the option is not present, 77 * returns the default value. 78 * 79 * @param optionName 80 * The option name 81 * @param defaultValue 82 * The default value 83 * @return The option value or, if not specified, the default value 84 */ 85 public String getOptionValue(final String optionName, 86 final String defaultValue) { 87 if (optionName.length() == 1) { 88 return getOptionValue(optionName.charAt(0), defaultValue); 89 } 90 return (String) commandLine.getValue("--" + optionName, defaultValue); 91 } 92 93 /** 94 * Returns the value of the specified option. 95 * 96 * @param shortOption 97 * The option short name 98 * @return The option value 99 */ 100 public String getOptionValue(final char shortOption) { 101 return (String) commandLine.getValue("-" + shortOption); 102 } 103 104 /** 105 * @param shortOption 106 * The name of the option whose values we are searching for. 107 * @return The list of the values. 108 */ 109 @SuppressWarnings("unchecked") 110 public List<String> getOptionValues(final char shortOption) { 111 return commandLine.getValues("-" + shortOption); 112 } 113 114 /** 115 * Returns the value of the specified option If the option is not present, 116 * returns the default value. 117 * 118 * @param shortOption 119 * The option short name 120 * @param defaultValue 121 * The default value 122 * @return The option value or, if not specified, the default value 123 */ 124 public String getOptionValue(final char shortOption, 125 final String defaultValue) { 126 return (String) commandLine.getValue("-" + shortOption, defaultValue); 127 } 128 129 /** 130 * Returns <code>true</code> if the option is present. 131 * 132 * @param optionName 133 * The option name 134 * @return <code>true</code> if the option is present 135 */ 136 public boolean hasOption(final String optionName) { 137 if (optionName.length() == 1) { 138 return hasOption(optionName.charAt(0)); 139 } 140 return commandLine.hasOption("--" + optionName); 141 } 142 143 /** 144 * Returns <code>true</code> if the option is present. 145 * 146 * @param shortOption 147 * The option short name 148 * @return <code>true</code> if the specified option is present 149 */ 150 public boolean hasOption(final char shortOption) { 151 return commandLine.hasOption("-" + shortOption); 152 } 153 }