001 /* 002 * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 /* $Id: Main.java,v bd2e46aac4d4 2008/05/14 15:14:55 maxberger $ */ 018 019 package net.sourceforge.jeuclid.app.foprep; 020 021 import java.io.PrintWriter; 022 023 import javax.xml.transform.Result; 024 import javax.xml.transform.Source; 025 import javax.xml.transform.TransformerException; 026 import javax.xml.transform.stream.StreamResult; 027 import javax.xml.transform.stream.StreamSource; 028 029 import net.sourceforge.jeuclid.converter.Processor; 030 031 import org.apache.commons.cli.CommandLine; 032 import org.apache.commons.cli.CommandLineParser; 033 import org.apache.commons.cli.GnuParser; 034 import org.apache.commons.cli.HelpFormatter; 035 import org.apache.commons.cli.Option; 036 import org.apache.commons.cli.Options; 037 import org.apache.commons.cli.ParseException; 038 039 /** 040 * Main class for fo-preprocess application. 041 * 042 * @version $Revision: bd2e46aac4d4 $ 043 */ 044 public final class Main { 045 046 private static final String STD_INOUT = "-"; 047 048 private static final String OPTION_OUT = "out"; 049 050 private static final String OPTION_IN = "in"; 051 052 private Main() { 053 // Empty on purpose. 054 } 055 056 /** 057 * Application entry point. 058 * 059 * @param args 060 * Command line arguments. 061 */ 062 public static void main(final String[] args) { 063 final Options options = new Options(); 064 final Option in = new Option(Main.OPTION_IN, true, "input (fo) file"); 065 in.setRequired(true); 066 options.addOption(in); 067 final Option out = new Option(Main.OPTION_OUT, true, 068 "output (fo) file"); 069 out.setRequired(true); 070 options.addOption(out); 071 final CommandLineParser parser = new GnuParser(); 072 try { 073 final CommandLine cmd = parser.parse(options, args); 074 final String inputFile = cmd.getOptionValue(Main.OPTION_IN); 075 final String outputFile = cmd.getOptionValue(Main.OPTION_OUT); 076 final Result result; 077 if (Main.STD_INOUT.equals(outputFile)) { 078 result = new StreamResult(new PrintWriter(System.out)); 079 } else { 080 result = new StreamResult(outputFile); 081 } 082 final Source source; 083 if (Main.STD_INOUT.equals(inputFile)) { 084 source = new StreamSource(System.in); 085 } else { 086 source = new StreamSource(inputFile); 087 } 088 Processor.getInstance().process(source, result); 089 } catch (final ParseException e1) { 090 System.out.println("Invalid command line:" + e1.getMessage()); 091 new HelpFormatter().printHelp( 092 "foprep -in input.fo -out output.fo", options); 093 } catch (final TransformerException e) { 094 System.out.println("An error occurred during processing: " 095 + e.getMessage()); 096 e.printStackTrace(); 097 } 098 } 099 }