Fop.main() now responsible for taking command-line input as provided from CommandLineOptions, and activating a Driver instance with that data. 2.) Minor cleanup of error messages in CommandLineOptions. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196794 13f79535-47bb-0310-9956-ffa450edef68pull/30/head
if (inputmode == XSLT_INPUT) { | if (inputmode == XSLT_INPUT) { | ||||
// check whether xml *and* xslt file have been set | // check whether xml *and* xslt file have been set | ||||
if (xmlfile == null) { | if (xmlfile == null) { | ||||
throw new FOPException("XML file must be specified for the tranform mode"); | |||||
throw new FOPException("XML file must be specified for the transform mode"); | |||||
} | } | ||||
if (xsltfile == null) { | if (xsltfile == null) { | ||||
throw new FOPException("XSLT file must be specified for the tranform mode"); | |||||
throw new FOPException("XSLT file must be specified for the transform mode"); | |||||
} | } | ||||
// warning if fofile has been set in xslt mode | // warning if fofile has been set in xslt mode | ||||
+ fofile.getAbsolutePath()); | + fofile.getAbsolutePath()); | ||||
} | } | ||||
if (!xmlfile.exists()) { | if (!xmlfile.exists()) { | ||||
throw new FileNotFoundException("xml file " | |||||
throw new FileNotFoundException("Error: xml file " | |||||
+ xmlfile.getAbsolutePath() | + xmlfile.getAbsolutePath() | ||||
+ " not found "); | + " not found "); | ||||
} | } | ||||
if (!xsltfile.exists()) { | if (!xsltfile.exists()) { | ||||
throw new FileNotFoundException("xsl file " | |||||
throw new FileNotFoundException("Error: xsl file " | |||||
+ xsltfile.getAbsolutePath() | + xsltfile.getAbsolutePath() | ||||
+ " not found "); | + " not found "); | ||||
} | } | ||||
log.error("xslt file: " + xsltfile.toString()); | log.error("xslt file: " + xsltfile.toString()); | ||||
} | } | ||||
if (!fofile.exists()) { | if (!fofile.exists()) { | ||||
throw new FileNotFoundException("fo file " | |||||
throw new FileNotFoundException("Error: fo file " | |||||
+ fofile.getAbsolutePath() | + fofile.getAbsolutePath() | ||||
+ " not found "); | + " not found "); | ||||
} | } |
/* | |||||
* $Id$ | |||||
* ============================================================================ | |||||
* The Apache Software License, Version 1.1 | |||||
* ============================================================================ | |||||
* | |||||
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. | |||||
* | |||||
* Redistribution and use in source and binary forms, with or without modifica- | |||||
* tion, are permitted provided that the following conditions are met: | |||||
* | |||||
* 1. Redistributions of source code must retain the above copyright notice, | |||||
* this list of conditions and the following disclaimer. | |||||
* | |||||
* 2. Redistributions in binary form must reproduce the above copyright notice, | |||||
* this list of conditions and the following disclaimer in the documentation | |||||
* and/or other materials provided with the distribution. | |||||
* | |||||
* 3. The end-user documentation included with the redistribution, if any, must | |||||
* include the following acknowledgment: "This product includes software | |||||
* developed by the Apache Software Foundation (http://www.apache.org/)." | |||||
* Alternately, this acknowledgment may appear in the software itself, if | |||||
* and wherever such third-party acknowledgments normally appear. | |||||
* | |||||
* 4. The names "FOP" and "Apache Software Foundation" must not be used to | |||||
* endorse or promote products derived from this software without prior | |||||
* written permission. For written permission, please contact | |||||
* apache@apache.org. | |||||
* | |||||
* 5. Products derived from this software may not be called "Apache", nor may | |||||
* "Apache" appear in their name, without prior written permission of the | |||||
* Apache Software Foundation. | |||||
* | |||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, | |||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | |||||
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- | |||||
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS | |||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
* ============================================================================ | |||||
* | |||||
* This software consists of voluntary contributions made by many individuals | |||||
* on behalf of the Apache Software Foundation and was originally created by | |||||
* James Tauber <jtauber@jtauber.com>. For more information on the Apache | |||||
* Software Foundation, please see <http://www.apache.org/>. | |||||
*/ | |||||
package org.apache.fop.apps; | |||||
// Java | |||||
import java.io.BufferedOutputStream; | |||||
import java.io.FileOutputStream; | |||||
// Avalon | |||||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||||
// FOP | |||||
import org.apache.fop.render.awt.AWTRenderer; | |||||
/** | |||||
* super class for all classes which start Fop from the commandline | |||||
* | |||||
* Modified to use new streaming API by Mark Lillywhite, mark-fop@inomial.com | |||||
*/ | |||||
public class CommandLineStarter extends AbstractLogEnabled { | |||||
/** the command-line options associated with this starter */ | |||||
protected CommandLineOptions commandLineOptions; | |||||
/** InputHandler associated with this Starter */ | |||||
protected InputHandler inputHandler; | |||||
/** | |||||
* Main constructor | |||||
* @param commandLineOptions command-line options to use | |||||
* @throws FOPException In case of failure | |||||
*/ | |||||
public CommandLineStarter(CommandLineOptions commandLineOptions) | |||||
throws FOPException { | |||||
this.commandLineOptions = commandLineOptions; | |||||
inputHandler = commandLineOptions.getInputHandler(); | |||||
} | |||||
/** | |||||
* Run the format. | |||||
* @exception FOPException if there is an error during processing | |||||
*/ | |||||
public void run() throws FOPException { | |||||
BufferedOutputStream bos = null; | |||||
String version = Version.getVersion(); | |||||
getLogger().info(version); | |||||
Driver driver = new Driver(); | |||||
setupLogger(driver); | |||||
try { | |||||
if (commandLineOptions.getOutputMode() == CommandLineOptions.AWT_OUTPUT) { | |||||
driver.setRenderer(new AWTRenderer(inputHandler)); | |||||
} else { | |||||
driver.setRenderer(commandLineOptions.getRenderer()); | |||||
} | |||||
try { | |||||
if (commandLineOptions.getOutputFile() != null) { | |||||
bos = new BufferedOutputStream(new FileOutputStream( | |||||
commandLineOptions.getOutputFile())); | |||||
driver.setOutputStream(bos); | |||||
} | |||||
if (driver.getRenderer() != null) { | |||||
driver.getRenderer().setOptions( | |||||
commandLineOptions.getRendererOptions()); | |||||
} | |||||
driver.render(inputHandler); | |||||
} finally { | |||||
if (bos != null) { | |||||
bos.close(); | |||||
} | |||||
} | |||||
} catch (Exception e) { | |||||
if (e instanceof FOPException) { | |||||
throw (FOPException) e; | |||||
} | |||||
throw new FOPException(e); | |||||
} | |||||
} | |||||
} | |||||
*/ | */ | ||||
package org.apache.fop.apps; | package org.apache.fop.apps; | ||||
// Java | |||||
import java.io.BufferedOutputStream; | |||||
import java.io.FileOutputStream; | |||||
// Avalon | |||||
import org.apache.avalon.framework.logger.ConsoleLogger; | import org.apache.avalon.framework.logger.ConsoleLogger; | ||||
// FOP | |||||
import org.apache.fop.render.awt.AWTRenderer; | |||||
/** | /** | ||||
* The main application class for the FOP command line interface (CLI). | * The main application class for the FOP command line interface (CLI). | ||||
*/ | */ | ||||
*/ | */ | ||||
public static void main(String[] args) { | public static void main(String[] args) { | ||||
CommandLineOptions options = null; | CommandLineOptions options = null; | ||||
CommandLineStarter starter = null; | |||||
InputHandler inputHandler = null; | |||||
BufferedOutputStream bos = null; | |||||
String version = Version.getVersion(); | |||||
try { | try { | ||||
Driver driver = new Driver(); | |||||
driver.enableLogging(new ConsoleLogger(ConsoleLogger.LEVEL_INFO)); | |||||
driver.getLogger().info(version); | |||||
options = new CommandLineOptions(args); | options = new CommandLineOptions(args); | ||||
starter = new CommandLineStarter(options); | |||||
starter.enableLogging(new ConsoleLogger(ConsoleLogger.LEVEL_INFO)); | |||||
starter.run(); | |||||
inputHandler = options.getInputHandler(); | |||||
try { | |||||
if (options.getOutputMode() == CommandLineOptions.AWT_OUTPUT) { | |||||
driver.setRenderer(new AWTRenderer(inputHandler)); | |||||
} else { | |||||
driver.setRenderer(options.getRenderer()); | |||||
if (options.getOutputFile() != null) { | |||||
bos = new BufferedOutputStream(new FileOutputStream( | |||||
options.getOutputFile())); | |||||
driver.setOutputStream(bos); | |||||
} | |||||
} | |||||
driver.getRenderer().setOptions(options.getRendererOptions()); | |||||
driver.render(inputHandler); | |||||
} finally { | |||||
if (bos != null) { | |||||
bos.close(); | |||||
} | |||||
} | |||||
} catch (FOPException e) { | } catch (FOPException e) { | ||||
if (e.getMessage() == null) { | if (e.getMessage() == null) { | ||||
System.err.println("Exception occured with a null error message"); | System.err.println("Exception occured with a null error message"); | ||||
} else { | } else { | ||||
System.err.println("Turn on debugging for more information"); | System.err.println("Turn on debugging for more information"); | ||||
} | } | ||||
} catch (java.io.FileNotFoundException e) { | |||||
} catch (java.io.IOException e) { | |||||
System.err.println("" + e.getMessage()); | System.err.println("" + e.getMessage()); | ||||
if (options != null && options.getLogger().isDebugEnabled()) { | if (options != null && options.getLogger().isDebugEnabled()) { | ||||
e.printStackTrace(); | e.printStackTrace(); | ||||
} else { | } else { | ||||
System.err.println("Turn on debugging for more information"); | System.err.println("Turn on debugging for more information"); | ||||
} | } | ||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||