aboutsummaryrefslogtreecommitdiff
path: root/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java')
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java127
1 files changed, 127 insertions, 0 deletions
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java
new file mode 100644
index 000000000..b5bc9d874
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java
@@ -0,0 +1,127 @@
+package at.gv.egovernment.moa.id.commons.config.cli;
+
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import org.apache.commons.cli.BasicParser;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionGroup;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The command-line interface for MOAID configuration migration
+ * @author Christian Wagner
+ *
+ */
+public class MOAIDConfCLI {
+
+ // the default output to write usage information and help text to
+ private static final OutputStream OUTPUT_STREAM = System.out;
+
+ private Logger log = LoggerFactory.getLogger(getClass());
+
+ /**
+ * Parses the given command-line arguments using a {@link BasicParser} with small modifications.
+ * @param commandLineArgs the command-line arguments.
+ */
+ public MigrateConfigurationParams parse(String[] commandLineArgs) {
+
+ CommandLineParser parser = new BasicParser();
+ CommandLine cmd = null;
+ MigrateConfigurationParams result = null;
+ try {
+
+ if (null == commandLineArgs || commandLineArgs.length == 0) {
+ printUsage(OUTPUT_STREAM, true);
+ System.exit(0);
+ }
+
+ cmd = parser.parse(createOptions(), commandLineArgs, true);
+
+ if( null != cmd && cmd.hasOption(CLIConstants.CLI_PARAM_HELP)){
+ printUsage(OUTPUT_STREAM, true);
+ System.exit(0);
+ }
+
+ result = new MigrateConfigurationParams(cmd);
+
+ } catch (ParseException e) {
+ log.warn("Encountered exception while parsing: {}", e.getMessage());
+ System.err.println(e.getMessage());
+ printUsage(OUTPUT_STREAM, false);
+ System.exit(1);
+ }
+ return result;
+ }
+
+ /**
+ * Prints information about the usage to the given output.
+ * @param out the {@link OutputStream} to write to
+ * @param printOptions determines whether the available options are printed
+ */
+ private void printUsage(OutputStream out, boolean printOptions) {
+
+ PrintWriter pOut = new PrintWriter(out);
+
+ HelpFormatter formatter = new HelpFormatter();
+ pOut.println();
+ pOut.println("usage: " + CLIConstants.CMD_LINE_SYNTAX + " -" + CLIConstants.CLI_PARAM_FORCE + " -"
+ + CLIConstants.CLI_PARAM_IN + " <inputfile> -"
+ + CLIConstants.CLI_PARAM_OUT + " <outputfile> | -" + CLIConstants.CLI_PARAM_OUTDB + " <dbconfig> [-"
+ + CLIConstants.CLI_PARAM_HELP + "]");
+ pOut.println();
+ pOut.println(CLIConstants.HELP_HEADER);
+ if(printOptions){
+ pOut.println();
+ formatter.printOptions(pOut, CLIConstants.HELP_ROW_WIDTH, createOptions(), CLIConstants.HELP_SPACE_BEFORE_OPT, CLIConstants.HELP_SPACE_BEFORE_DESC);
+ }
+ pOut.flush();
+
+ }
+
+ /**
+ * Create all {@linkplain Option options} that should be available in the CLI.
+ * @return The {@linkplain Options options}
+ */
+ private Options createOptions() {
+
+ Options options = new Options();
+
+ OptionGroup inGroup = new OptionGroup();
+ Option optionInput = new Option(CLIConstants.CLI_PARAM_IN, CLIConstants.CLI_PARAM_IN_LONG, true, "MOAID config-file to convert");
+ optionInput.setArgName("inputfile");
+ Option optionDBInput = new Option(CLIConstants.CLI_PARAM_INDB, CLIConstants.CLI_PARAM_INDB_LONG, true, "config for database to read from");
+ optionDBInput.setArgName("dbconfig");
+
+ inGroup.addOption(optionDBInput);
+ inGroup.addOption(optionInput);
+ optionInput.setRequired(false);
+
+ OptionGroup outGroup = new OptionGroup();
+ Option optionOutput = new Option(CLIConstants.CLI_PARAM_OUT, CLIConstants.CLI_PARAM_OUT_LONG, true, "target file to write to");
+ optionOutput.setArgName("outputfile");
+ Option optionDBOutput = new Option(CLIConstants.CLI_PARAM_OUTDB, CLIConstants.CLI_PARAM_OUTDB_LONG, true, "config for database to write to");
+ optionDBOutput.setArgName("dbconfig");
+
+ outGroup.addOption(optionDBOutput);
+ outGroup.addOption(optionOutput);
+ outGroup.setRequired(false);
+
+ options.addOptionGroup(inGroup);
+ options.addOptionGroup(outGroup);
+
+ Option optForce = new Option(CLIConstants.CLI_PARAM_FORCE, CLIConstants.CLI_PARAM_FORCE_LONG, false, "overwrite existing data with imported data");
+ options.addOption(optForce);
+
+ Option optHelp = new Option(CLIConstants.CLI_PARAM_HELP, CLIConstants.CLI_PARAM_HELP_LONG, false, "prints this message");
+ options.addOption(optHelp);
+ return options;
+ }
+
+}