2 * Meviz - Various tools collection to work with multimedia.
3 * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 2 of the GNU General Public License
7 * as published by the Free Software Foundation.
10 package eu.svjatoslav.meviz.encoder;
12 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
13 import eu.svjatoslav.commons.commandline.parameterparser.Parser;
15 public class CommandlineHandler {
17 Parameter outputFormatParameter = new Parameter(true, true, true,
18 new eu.svjatoslav.commons.commandline.parameterparser.arguments.String(), "Encoding output format.", "-o",
21 Parameter terminalParameter = new Parameter("Enable popup terminal.", "--terminal");
23 Parameter testParameter = new Parameter("Simulate file encoding.", "-t", "--test");
25 Parameter recursiveParameter = new Parameter("Enable recursive mode.", "-r", "--recursive");
27 Parameter inputPatternParameter = new Parameter(true, true, true,
28 new eu.svjatoslav.commons.commandline.parameterparser.arguments.String(), "File input pattern.", "-i",
31 Parameter workingDirectoryParameter = new Parameter(false, true, true,
32 new eu.svjatoslav.commons.commandline.parameterparser.arguments.ExistingDirectory(), "Working directory.",
33 "-w", "--working-directory");
35 Parameter videoBitrateParameter = new Parameter(false, true, false, new Bitrate(), "Video bitrate.", "-v",
38 public Parser initParser() {
39 final Parser parser = new Parser();
41 parser.addParameter(recursiveParameter);
43 parser.addParameter(testParameter);
45 parser.addParameter(terminalParameter);
47 parser.addParameter(outputFormatParameter);
49 parser.addParameter(inputPatternParameter);
51 parser.addParameter(workingDirectoryParameter);
53 parser.addParameter(videoBitrateParameter);
59 * @return {@link EncodingOptions} if commandline arguments were
60 * successfully parsed, or <code>null</code> if parsing error
63 public EncodingOptions parseCommandlineArguments(final String[] args) {
65 final EncodingOptions options = new EncodingOptions();
67 final Parser parser = initParser();
70 if (recursiveParameter.isParameterSpecified())
71 options.recursive = true;
73 if (terminalParameter.isParameterSpecified())
74 options.terminal = true;
76 if (testParameter.isParameterSpecified())
77 options.testOnly = true;
79 if (outputFormatParameter.isParameterSpecified()) {
80 options.outputFormats.addAll(outputFormatParameter.getArgumentsAsStrings());
83 if (workingDirectoryParameter.isParameterSpecified()) {
84 options.workingDirectory = workingDirectoryParameter.getArgumentsAsFiles().get(0);
87 if (inputPatternParameter.isParameterSpecified()) {
88 options.inputPatterns.addAll(inputPatternParameter.getArgumentsAsStrings());
91 if (videoBitrateParameter.isParameterSpecified()) {
94 options.videoBitrate = Bitrate.bitrate.valueOf(videoBitrateParameter.getArgumentAsString()
96 } catch (final Exception e) {
97 System.out.println("Invalid video bitrate. Valid values are: LOW, MEDIUM, HIGH.");