Package tigase.util.ui.console
Class ParameterParser
- java.lang.Object
-
- tigase.util.ui.console.ParameterParser
-
public class ParameterParser extends java.lang.ObjectGeneral purpose command-line parser accepting (if defined) both single-letter (and space separated value) and full names (and equal-sign separated value). It also supports default values and generation of help based on configured options.
-
-
Constructor Summary
Constructors Constructor Description ParameterParser()Constructs newParameterParserwithout any options and without interactive modeParameterParser(boolean interactiveMode)Constructs newParameterParserwithout any options and allowing enabling interactive modeParameterParser(java.util.List<CommandlineParameter> options, boolean interactiveMode)Constructs newParameterParserwith initial options and allowing enabling interactive mode
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddOption(CommandlineParameter option)AddsCommandlineParameterto list of available parametersvoidaddOptions(java.util.List<CommandlineParameter> options)Add collection ofCommandlineParameterto available options.java.lang.StringgetHelp()Generates help output with default instruction.java.lang.StringgetHelp(java.lang.String executionCommand)java.util.Optional<CommandlineParameter>getOptionByLetter(java.lang.String letter)ReturnsCommandlineParameterthat matches passed parameterjava.util.Optional<CommandlineParameter>getOptionByName(java.lang.String commandName)ReturnsCommandlineParameterthat matches passed parameterjava.util.List<CommandlineParameter>getOptions()Retrieves List with all definedCommandlineParameteroptionsjava.util.List<CommandlineParameter>getOptions(java.util.function.Predicate<? super CommandlineParameter> predicate)Retrieves List with all definedCommandlineParameteroptions that matches passed Predicatejava.util.List<java.lang.String>getOptionsNames(java.util.function.Predicate<? super CommandlineParameter> predicate)Retrieves List with all definedCommandlineParameteroptions names that matches passed Predicatejava.util.Optional<Task>getTask()booleanisInteractiveMode()static voidmain(java.lang.String[] args)java.util.PropertiesparseArgs(java.lang.String[] args)Main parsing method which takes as an input array of parameters and returns a Properties object with parsed parameter/values.voidremoveOption(CommandlineParameter option)Removes given option from list of supported options.voidremoveOptionByLetter(java.lang.String singleLetter)Removes given option from list of supported options by it's single lettervoidremoveOptionByName(java.lang.String name)Removes given option from list of supported options by it's full namevoidsetTasks(Task[] supportedTasks)
-
-
-
Constructor Detail
-
ParameterParser
public ParameterParser()
Constructs newParameterParserwithout any options and without interactive mode
-
ParameterParser
public ParameterParser(boolean interactiveMode)
Constructs newParameterParserwithout any options and allowing enabling interactive mode- Parameters:
interactiveMode- indicates whether interactive mode should be enabled (include it in the options and handle accordingly)
-
ParameterParser
public ParameterParser(java.util.List<CommandlineParameter> options, boolean interactiveMode)
Constructs newParameterParserwith initial options and allowing enabling interactive mode- Parameters:
options- initial list of available optionsinteractiveMode- indicates whether interactive mode should be enabled (include it in the options and handle accordingly)
-
-
Method Detail
-
main
public static void main(java.lang.String[] args)
-
addOption
public void addOption(CommandlineParameter option) throws java.lang.IllegalArgumentException
AddsCommandlineParameterto list of available parameters- Parameters:
option- aCommandlineParameterthat should be added- Throws:
java.lang.IllegalArgumentException- is thrown when the same option (either same name or same short-letter) exists in the defined list.
-
addOptions
public void addOptions(java.util.List<CommandlineParameter> options)
Add collection ofCommandlineParameterto available options. Calls internallyaddOption(tigase.util.ui.console.CommandlineParameter)- Parameters:
options- collection ofCommandlineParameterto be added.
-
getHelp
public java.lang.String getHelp()
Generates help output with default instruction.- Returns:
- String with default instruction.
-
getHelp
public java.lang.String getHelp(java.lang.String executionCommand)
- Parameters:
executionCommand- an example of the execution command, for example$ java -cp \"jars/*.jar\" tigase.util.DBSchemaLoader [options]- Returns:
- string representing all the available options and their description
-
getOptionByLetter
public java.util.Optional<CommandlineParameter> getOptionByLetter(java.lang.String letter)
ReturnsCommandlineParameterthat matches passed parameter- Parameters:
letter- single-letter identification of theCommandlineParameter- Returns:
- an Optional
CommandlineParameterthat matches passed letter.
-
getOptionByName
public java.util.Optional<CommandlineParameter> getOptionByName(java.lang.String commandName)
ReturnsCommandlineParameterthat matches passed parameter- Parameters:
commandName- full-name identification of theCommandlineParameter- Returns:
- an Optional
CommandlineParameterthat matches passed name.
-
getOptions
public java.util.List<CommandlineParameter> getOptions()
Retrieves List with all definedCommandlineParameteroptions- Returns:
- List with all defined
CommandlineParameteroptions
-
getOptions
public java.util.List<CommandlineParameter> getOptions(java.util.function.Predicate<? super CommandlineParameter> predicate)
Retrieves List with all definedCommandlineParameteroptions that matches passed Predicate- Parameters:
predicate- by which list should be filtered- Returns:
- List of
CommandlineParameterfiltered to matching options.
-
getOptionsNames
public java.util.List<java.lang.String> getOptionsNames(java.util.function.Predicate<? super CommandlineParameter> predicate)
Retrieves List with all definedCommandlineParameteroptions names that matches passed Predicate- Parameters:
predicate- by which list should be filtered- Returns:
- List of
CommandlineParameternames filtered to matching options.
-
getTask
public java.util.Optional<Task> getTask()
-
isInteractiveMode
public boolean isInteractiveMode()
-
parseArgs
public java.util.Properties parseArgs(java.lang.String[] args)
Main parsing method which takes as an input array of parameters and returns a Properties object with parsed parameter/values. It supports both single letter format (-X valueas well as full name (--name=value). In case no value for defined option was passed but it's defined as required and contains default value it will be included in the resulting Properties. If interactive mode is enabled, there will be a prompt for all missing options (defined but not included in passed parameter)- Parameters:
args- an input array of parameters and defined values.- Returns:
- Properties with parameter/value pairs matching defined options.
-
removeOption
public void removeOption(CommandlineParameter option)
Removes given option from list of supported options.- Parameters:
option-commandlineParameteroption to be removed
-
removeOptionByLetter
public void removeOptionByLetter(java.lang.String singleLetter)
Removes given option from list of supported options by it's single letter- Parameters:
singleLetter- identification of the option
-
removeOptionByName
public void removeOptionByName(java.lang.String name)
Removes given option from list of supported options by it's full name- Parameters:
name- full name identification of the option
-
setTasks
public void setTasks(Task[] supportedTasks)
-
-