1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.jeuclid.app.foprep;
20
21 import java.io.File;
22 import java.io.FileInputStream;
23 import java.io.IOException;
24 import java.io.PrintWriter;
25
26 import javax.xml.transform.Result;
27 import javax.xml.transform.Source;
28 import javax.xml.transform.TransformerException;
29 import javax.xml.transform.stream.StreamResult;
30 import javax.xml.transform.stream.StreamSource;
31
32 import org.apache.commons.cli.CommandLine;
33 import org.apache.commons.cli.CommandLineParser;
34 import org.apache.commons.cli.GnuParser;
35 import org.apache.commons.cli.HelpFormatter;
36 import org.apache.commons.cli.Option;
37 import org.apache.commons.cli.Options;
38 import org.apache.commons.cli.ParseException;
39
40
41
42
43
44
45
46 public final class Main {
47
48 private static final String STD_INOUT = "-";
49
50 private static final String OPTION_OUT = "out";
51
52 private static final String OPTION_IN = "in";
53
54 private Main() {
55
56 }
57
58
59
60
61
62
63
64 public static void main(final String[] args) {
65 final Options options = new Options();
66 final Option in = new Option(Main.OPTION_IN, true, "input (fo) file");
67 in.setRequired(true);
68 options.addOption(in);
69 final Option out = new Option(Main.OPTION_OUT, true,
70 "output (fo) file");
71 out.setRequired(true);
72 options.addOption(out);
73 final CommandLineParser parser = new GnuParser();
74 try {
75 final CommandLine cmd = parser.parse(options, args);
76 final String inputFile = cmd.getOptionValue(Main.OPTION_IN);
77 final String outputFile = cmd.getOptionValue(Main.OPTION_OUT);
78 final Result result;
79 if (Main.STD_INOUT.equals(outputFile)) {
80 result = new StreamResult(new PrintWriter(System.out));
81 } else {
82 result = new StreamResult(new File(outputFile));
83 }
84 final Source source;
85 if (Main.STD_INOUT.equals(inputFile)) {
86 source = new StreamSource(System.in);
87 } else {
88 source = new StreamSource(new FileInputStream(inputFile));
89 }
90 Processor.getProcessor().process(source, result);
91 } catch (final ParseException e1) {
92 System.out.println("Invalid command line:" + e1.getMessage());
93 new HelpFormatter().printHelp(
94 "foprep -in input.fo -out output.fo", options);
95 } catch (final TransformerException e) {
96 System.out.println("An error occurred during processing: "
97 + e.getMessage());
98 e.printStackTrace();
99 } catch (final IOException e) {
100 System.out.println("An I/O error occurred during processing: "
101 + e.getMessage());
102 e.printStackTrace();
103 }
104 }
105 }