aboutsummaryrefslogtreecommitdiff
path: root/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java')
-rw-r--r--id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java123
1 files changed, 123 insertions, 0 deletions
diff --git a/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java
new file mode 100644
index 000000000..78b9450ce
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/cli/MOAIDConfCLI.java
@@ -0,0 +1,123 @@
+package com.datentechnik.moa.id.conf.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_IN + " <inputfile> | -" + CLIConstants.CLI_PARAM_INDB + " <dbconfig> -" + 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 optHelp = new Option(CLIConstants.CLI_PARAM_HELP, CLIConstants.CLI_PARAM_HELP_LONG, false, "prints this message");
+ options.addOption(optHelp);
+ return options;
+ }
+
+}