+++ /dev/null
-/*
- * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
- * This project is released under Creative Commons Zero (CC0) license.
- */
-package eu.svjatoslav.commons.commandline.parameterparser;
-
-import java.util.ArrayList;
-
-/**
- * <pre>
- * Single commandline parameter can have any amount of arguments.
- * </pre>
- */
-public class Parser {
-
- private final ArrayList<Parameter<?, ? extends Parameter>> parameters = new ArrayList<>();
-
- public <E extends Parameter> E add(final E parameter) {
- parameters.add(parameter);
- return parameter;
- }
-
- /**
- * @return <code>true</code> if no errors were found. <code>false</code>
- * otherwise.
- */
- private boolean checkMandatoryArgumentsPresent() {
-
- for (final Parameter parameter : parameters)
- if (parameter.isMandatory() && (!parameter.isSpecified())) {
- System.out.println("Error! Mandatory parameter ("
- + parameter.getAliases() + ") is not specified.");
- return false;
- }
-
- return true;
- }
-
- /**
- * Return parameter by given alias or <code>null</code> if no parameter
- * exists for given alias.
- *
- * @param alias parameter alias
- * @return found parameter or <code>null</code> if parameter was not found.
- */
- public Parameter findParameterByAlias(final String alias) {
-
- for (final Parameter parameter : parameters)
- if (parameter.matchesAlias(alias))
- return parameter;
-
- return null;
- }
-
- /**
- * @param args commandline arguments
- * @return <code>true</code> if no errors were found. <code>false</code>
- * otherwise.
- */
- public boolean parse(final String[] args) {
-
- Parameter currentParameter = null;
-
- for (final String argument : args) {
-
- final Parameter parameterForAlias = findParameterByAlias(argument);
- if (parameterForAlias == null) {
- if (currentParameter == null) {
- System.out.println("Unknown commandline parameter: "
- + argument);
- return false;
- }
-
- if (!currentParameter.addArgument(argument))
- return false;
-
- } else {
- if (currentParameter != null)
- if (!currentParameter.noMoreArguments())
- return false;
-
- parameterForAlias.setSpecified(true);
- currentParameter = parameterForAlias;
- }
-
- }
-
- return checkMandatoryArgumentsPresent();
- }
-
- public void showHelp() {
- System.out.println("Available commandline arguments:");
- for (final Parameter parameter : parameters)
- System.out.println(parameter.getHelp());
- }
-
-}