View Javadoc

1   /*
2    * @(#)$Id: BatchMain.java 779 2010-03-11 20:10:22Z bpuype $
3    *
4    * Author		:	Ueli Kurmann, igesture@uelikurmann.ch
5    *
6    * Purpose		:   Front-end for the batch processing.
7    *
8    * -----------------------------------------------------------------------
9    *
10   * Revision Information:
11   *
12   * Date				Who			Reason
13   *
14   * Dec 16, 2006     ukurmann	Initial Release
15   * Mar 18, 2007     bsigner     Cleanup
16   *
17   * -----------------------------------------------------------------------
18   *
19   * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
20   *
21   * This software is the proprietary information of ETH Zurich.
22   * Use is subject to license terms.
23   * 
24   */
25  
26  
27  package org.ximtec.igesture.tool;
28  
29  import java.io.File;
30  import java.util.logging.Level;
31  import java.util.logging.Logger;
32  
33  import javax.xml.transform.TransformerConfigurationException;
34  import javax.xml.transform.TransformerException;
35  import javax.xml.transform.TransformerFactoryConfigurationError;
36  
37  import org.apache.commons.cli.CommandLine;
38  import org.apache.commons.cli.CommandLineParser;
39  import org.apache.commons.cli.GnuParser;
40  import org.apache.commons.cli.HelpFormatter;
41  import org.apache.commons.cli.Option;
42  import org.apache.commons.cli.OptionBuilder;
43  import org.apache.commons.cli.Options;
44  import org.apache.commons.cli.ParseException;
45  import org.sigtec.util.Constant;
46  import org.sigtec.util.FileHandler;
47  import org.ximtec.igesture.batch.BatchProcess;
48  import org.ximtec.igesture.batch.BatchProcessContainer;
49  import org.ximtec.igesture.batch.BatchResultSet;
50  import org.ximtec.igesture.util.XMLTool;
51  
52  
53  /**
54   * Front-end for the batch processing.
55   * 
56   * @version 1.0 Dec 2006
57   * @author Ueli Kurmann, igesture@uelikurmann.ch
58   * @author Beat Signer, signer@inf.ethz.ch
59   */
60  public class BatchMain {
61  
62     private static final Logger LOGGER = Logger.getLogger(BatchMain.class
63           .getName());
64  
65     private static final String FILE = "file";
66  
67     private static final String HTML = "html";
68  
69     private static final String XSL = "xsl";
70  
71     private static final String XML = "xml";
72  
73     private static final String TESTSET = "testset";
74  
75     private static final String GESTURESET = "gestureset";
76  
77     private static final String CONFIG = "config";
78  
79     private static final String HELP = "help";
80  
81  
82     /**
83      * Front-end for the batch process.
84      * 
85      * @param args
86      */
87     public static void main(String args[]) {
88        final Options options = new Options();
89        options.addOption(createOption(HELP, FILE, "Print this message"));
90        options.addOption(createOption(CONFIG, FILE, "XML configuration file"));
91        options.addOption(createOption(GESTURESET, FILE, "XML gesture set file"));
92        options.addOption(createOption(TESTSET, FILE, "XML test set file"));
93        options.addOption(createOption(XML, FILE, "XML output file"));
94        options.addOption(createOption(XSL, FILE, "XSLT file"));
95        options.addOption(createOption(HTML, FILE, "HTML output file"));
96        final CommandLineParser parser = new GnuParser();
97        CommandLine line = null;
98  
99        try {
100          line = parser.parse(options, args);
101          if (line.getOptions().length == 0 || line.hasOption(HELP)) {
102         	 final HelpFormatter formatter = new HelpFormatter();
103         	 formatter.printHelp("iGesture - Batch Processing", options);
104          }
105          else if ((line.hasOption(CONFIG) && line.hasOption(GESTURESET) && line
106         		 .hasOption(TESTSET))) {
107         	 BatchProcessContainer container = XMLTool.importBatchProcessContainer(new File(line
108         			 .getOptionValue(CONFIG)));
109         	 
110         	 final BatchProcess batchProcess = new BatchProcess(container);
111         	 batchProcess.addGestureSet(XMLTool.importGestureSet(new File(line
112         			 .getOptionValue(GESTURESET))));
113         	 batchProcess.setTestSet(XMLTool.importTestSet(
114         			 new File(line.getOptionValue(TESTSET))));
115         	 final BatchResultSet resultSet = batchProcess.run();
116         	 final String xmlDocument = XMLTool.exportBatchResultSet(resultSet);
117         	 
118         	 if (line.hasOption(XML)) {
119         		 org.sigtec.util.FileHandler.writeFile(line.getOptionValue(XML),
120         				 xmlDocument);
121         	 }
122         	 
123         	 if (line.hasOption(XSL) && line.hasOption(HTML)) {
124         		 String htmlPage = Constant.EMPTY_STRING;
125         		 
126         		 try {
127         			 htmlPage = XMLTool.transform(xmlDocument, line
128         					 .getOptionValue(XSL));
129         		 }
130         		 catch (final TransformerConfigurationException e) {
131         			 LOGGER.log(Level.SEVERE, Constant.EMPTY_STRING, e);
132         		 }
133         		 catch (final TransformerException e) {
134         			 LOGGER.log(Level.SEVERE, Constant.EMPTY_STRING, e);
135         		 }
136         		 catch (final TransformerFactoryConfigurationError e) {
137         			 LOGGER.log(Level.SEVERE, Constant.EMPTY_STRING, e);
138         		 }
139         		 
140         		 FileHandler.writeFile(line.getOptionValue(HTML), htmlPage);
141         	 }
142         	 
143          }
144       }
145       catch (final ParseException e) {
146          LOGGER.log(Level.SEVERE, Constant.EMPTY_STRING, e);
147       }
148 
149 
150    }
151 
152 
153    @SuppressWarnings("static-access")
154    private static Option createOption(String name, String argument,
155          String description) {
156       return OptionBuilder.withArgName(argument).hasArg().withDescription(
157             description).create(name);
158    } // createOption
159 
160 }