10 package de.uni_hamburg.corpora.validation;
13 import java.io.IOException;
14 import java.util.Collection;
16 import java.util.HashMap;
17 import java.util.List;
18 import java.util.ArrayList;
19 import org.apache.commons.cli.Option;
20 import org.apache.commons.cli.Options;
21 import org.apache.commons.cli.CommandLine;
22 import org.apache.commons.cli.CommandLineParser;
23 import org.apache.commons.cli.DefaultParser;
24 import org.apache.commons.cli.HelpFormatter;
25 import org.apache.commons.cli.ParseException;
34 boolean verbose =
false;
35 boolean replace =
false;
40 List<File> inputFiles;
48 inputFiles =
new ArrayList<File>();
49 this.name =
"UnnamedValidator";
50 this.header =
"This validator is so unfinished it doesn't have a header!";
51 this.footer =
"This validator is so unfinished it doesn't have a footer!";
55 inputFiles =
new ArrayList<File>();
85 for (String sectionName : options.keySet()) {
86 if (sectionName.equals(
"hzsk-validator")) {
87 Ini.Section commons = options.get(sectionName);
88 if (commons.containsKey(
"verbose")) {
91 if (commons.containsKey(
"basedir")) {
92 baseDirectory =
new File(commons.get(
"basedir"));
94 if (commons.containsKey(
"input")) {
95 inputFiles.add(
new File(commons.get(
"input")));
97 if (commons.containsKey(
"output")) {
98 outputFile =
new File(commons.get(
"output"));
101 Ini.Section section = options.get(sectionName);
102 Map<String, String> optionSet =
new HashMap<String, String>();
103 for (String keyName : section.keySet()) {
105 System.out.print(keyName +
" = " +
106 section.get(keyName));
122 Options parameters =
new Options();
123 HelpFormatter formatter =
new HelpFormatter();
126 parameters.addOption(
"h",
"help",
false,
127 "print this help screen");
128 parameters.addOption(
"v",
"verbose",
false,
129 "print verbosely while processing");
130 parameters.addOption(
"R",
"recursive",
false,
131 "check recursively for references found in a file");
132 parameters.addOption(
"o",
"output",
true,
133 "fix problems where possible, write output to given file");
134 parameters.addOption(
"c",
"configuration",
true,
135 "read configuration from ini file");
136 parameters.addOption(
"i",
"input",
true,
137 "input file to validate");
138 parameters.addOption(
"b",
"base-dir",
true,
139 "base directory for solving relative file references etc.");
140 parameters.addOption(
"d",
"data-dir",
true,
141 "data directory for solving relative file references etc.");
142 parameters.addOption(
"X",
"in-place",
false,
143 "fix problems in place, replacing original file");
144 for (Option option : extraOptions) {
145 parameters.addOption(option);
147 CommandLineParser parser =
new DefaultParser();
148 cmd = parser.parse(parameters, args);
149 }
catch (ParseException pe) {
150 formatter.printHelp(name, header, parameters, footer,
true);
154 if (!cmd.hasOption(
"input") && !cmd.hasOption(
"configuration") &&
155 (cmd.getArgs().length < 1)) {
156 System.err.println(
"No inputs given and no configuration found");
157 formatter.printHelp(name, header, parameters, footer,
true);
159 }
else if (cmd.hasOption(
"input") && cmd.hasOption(
"configuration")) {
160 System.err.println(
"Input and configuration are mutually " +
162 formatter.printHelp(name, header, parameters, footer,
true);
164 }
else if (cmd.hasOption(
"input") && (cmd.getArgs().length > 0)) {
165 System.err.println(
"Unrecognised parameters with --input: " +
167 formatter.printHelp(name, header, parameters, footer,
true);
169 }
else if (cmd.hasOption(
"configuration") &&
170 (cmd.getArgs().length > 0)) {
171 System.err.println(
"Unrecognised parameters with --configuration: " +
173 formatter.printHelp(name, header, parameters, footer,
true);
177 if (cmd.hasOption(
"help")) {
178 formatter.printHelp(name, header, parameters, footer,
true);
183 if (cmd.hasOption(
"verbose")) {
184 System.out.println(
"Printing long report");
188 if (cmd.hasOption(
"base-dir")) {
189 baseDirectory =
new File(cmd.getOptionValue(
"base-dir"));
190 }
else if (cmd.hasOption(
"configuration")) {
191 iniFile =
new File(cmd.getOptionValue(
"configuration"));
192 if (iniFile.isFile()) {
193 baseDirectory = iniFile.getParentFile();
196 if (cmd.hasOption(
"data-dir")) {
197 dataDirectory =
new File(cmd.getOptionValue(
"data-dir"));
199 if (cmd.hasOption(
"configuration")) {
201 System.out.println(
"Reading configuration from " +
202 cmd.getOptionValue(
"configuration"));
206 new Ini(
new File(cmd.getOptionValue(
"configuration")));
208 }
catch (IOException ioe) {
209 System.err.println(
"Configuration file not found: " +
210 cmd.getOptionValue(
"configuration") +
" (or one of " +
211 "the referred files...)\n" +
218 System.out.println(
"Making corrections in place");
220 }
else if (cmd.hasOption(
"output")) {
222 System.out.println(
"Making corrections to " +
223 cmd.getOptionValue(
"output"));
225 outputFile =
new File(cmd.getOptionValue(
"output"));
227 if (cmd.hasOption(
"input")) {
229 System.out.println(
"Adding input: " +
230 cmd.getOptionValue(
"input"));
232 inputFiles.add(
new File(cmd.getOptionValue(
"input")));
234 for (String s : cmd.getArgs()) {
236 System.out.println(
"Adding input: " + s);
238 inputFiles.add(
new File(s));
CommandLine handleCommandLine(String[] args, List< Option > extraOptions)
Collection< File > getInputFiles()
void amendOptions(Ini options)
ValidatorSettings(String name, String header, String footer)