Class ParameterParser

java.lang.Object
tigase.util.ui.console.ParameterParser

public class ParameterParser extends Object
General 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 Details

    • ParameterParser

      public ParameterParser()
      Constructs new ParameterParser without any options and without interactive mode
    • ParameterParser

      public ParameterParser(boolean interactiveMode)
      Constructs new ParameterParser without 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(List<CommandlineParameter> options, boolean interactiveMode)
      Constructs new ParameterParser with initial options and allowing enabling interactive mode
      Parameters:
      options - initial list of available options
      interactiveMode - indicates whether interactive mode should be enabled (include it in the options and handle accordingly)
  • Method Details

    • main

      public static void main(String[] args)
    • addOption

      public void addOption(CommandlineParameter option) throws IllegalArgumentException
      Adds CommandlineParameter to list of available parameters
      Parameters:
      option - a CommandlineParameter that should be added
      Throws:
      IllegalArgumentException - is thrown when the same option (either same name or same short-letter) exists in the defined list.
    • addOptions

      public void addOptions(List<CommandlineParameter> options)
      Add collection of CommandlineParameter to available options. Calls internally addOption(tigase.util.ui.console.CommandlineParameter)
      Parameters:
      options - collection of CommandlineParameter to be added.
    • getHelp

      public String getHelp()
      Generates help output with default instruction.
      Returns:
      String with default instruction.
    • getHelp

      public String getHelp(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 Optional<CommandlineParameter> getOptionByLetter(String letter)
      Returns CommandlineParameter that matches passed parameter
      Parameters:
      letter - single-letter identification of the CommandlineParameter
      Returns:
      an Optional CommandlineParameter that matches passed letter.
    • getOptionByName

      public Optional<CommandlineParameter> getOptionByName(String commandName)
      Returns CommandlineParameter that matches passed parameter
      Parameters:
      commandName - full-name identification of the CommandlineParameter
      Returns:
      an Optional CommandlineParameter that matches passed name.
    • getOptions

      public List<CommandlineParameter> getOptions()
      Retrieves List with all defined CommandlineParameter options
      Returns:
      List with all defined CommandlineParameter options
    • getOptions

      public List<CommandlineParameter> getOptions(Predicate<? super CommandlineParameter> predicate)
      Retrieves List with all defined CommandlineParameter options that matches passed Predicate
      Parameters:
      predicate - by which list should be filtered
      Returns:
      List of CommandlineParameter filtered to matching options.
    • getOptionsNames

      public List<String> getOptionsNames(Predicate<? super CommandlineParameter> predicate)
      Retrieves List with all defined CommandlineParameter options names that matches passed Predicate
      Parameters:
      predicate - by which list should be filtered
      Returns:
      List of CommandlineParameter names filtered to matching options.
    • getTask

      public Optional<Task> getTask()
    • isInteractiveMode

      public boolean isInteractiveMode()
    • parseArgs

      public Properties parseArgs(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 value as 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 - commandlineParameter option to be removed
    • removeOptionByLetter

      public void removeOptionByLetter(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(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)