diff options
author | arved <arved@unknown> | 2001-02-21 01:09:34 +0000 |
---|---|---|
committer | arved <arved@unknown> | 2001-02-21 01:09:34 +0000 |
commit | a6869df507ecab2dedf6a9264f09349d00015d2f (patch) | |
tree | 6479630cc0e7414ab1494b9fcd9c16592695ba2e /src | |
parent | ed626fdae1106d16ac417a1bc2790d077ed8f289 (diff) | |
download | xmlgraphics-fop-a6869df507ecab2dedf6a9264f09349d00015d2f.tar.gz xmlgraphics-fop-a6869df507ecab2dedf6a9264f09349d00015d2f.zip |
Updated command line support
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194080 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r-- | src/org/apache/fop/apps/Driver.java | 209 | ||||
-rw-r--r-- | src/org/apache/fop/apps/FOPException.java | 56 | ||||
-rw-r--r-- | src/org/apache/fop/apps/Version.java | 55 | ||||
-rw-r--r-- | src/org/apache/fop/configuration/Configuration.java | 31 | ||||
-rw-r--r-- | src/org/apache/fop/configuration/ConfigurationParser.java | 54 | ||||
-rw-r--r-- | src/org/apache/fop/configuration/ConfigurationReader.java | 56 | ||||
-rw-r--r-- | src/org/apache/fop/messaging/MessageHandler.java | 463 | ||||
-rw-r--r-- | src/org/apache/fop/tools/anttasks/Fop.java | 110 |
8 files changed, 330 insertions, 704 deletions
diff --git a/src/org/apache/fop/apps/Driver.java b/src/org/apache/fop/apps/Driver.java index e9a86c9b4..0490b62df 100644 --- a/src/org/apache/fop/apps/Driver.java +++ b/src/org/apache/fop/apps/Driver.java @@ -1,54 +1,10 @@ -/*-- $Id$ -- - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ + package org.apache.fop.apps; // FOP @@ -138,12 +94,11 @@ public class Driver { /** create a new Driver */ public Driver() { this.treeBuilder = new FOTreeBuilder(); - this.loadStandardConfiguration(); } /** Set the error dump option - * @param dump if true, full stacks will be reported to the error log - */ + * @param dump if true, full stacks will be reported to the error log + */ public void setErrorDump(boolean dump) { errorDump = dump; } @@ -154,18 +109,18 @@ public class Driver { } /** - * set the class name of the Renderer to use as well as the - * producer string for those renderers that can make use of it - */ + * set the class name of the Renderer to use as well as the + * producer string for those renderers that can make use of it + */ public void setRenderer(String rendererClassName, String producer) { this.renderer = createRenderer(rendererClassName); this.renderer.setProducer(producer); } /** - * protected method used by setRenderer(String, String) to - * instantiate the Renderer class - */ + * protected method used by setRenderer(String, String) to + * instantiate the Renderer class + */ protected Renderer createRenderer(String rendererClassName) { MessageHandler.logln("using renderer " + rendererClassName); @@ -189,26 +144,26 @@ public class Driver { } /** - * add the given element mapping. - * - * an element mapping maps element names to Java classes - */ + * add the given element mapping. + * + * an element mapping maps element names to Java classes + */ public void addElementMapping(ElementMapping mapping) { mapping.addToBuilder(this.treeBuilder); } /** - * add the element mapping with the given class name - */ + * add the element mapping with the given class name + */ public void addElementMapping(String mappingClassName) { createElementMapping(mappingClassName).addToBuilder( this.treeBuilder); } /** - * protected method used by addElementMapping(String) to - * instantiate element mapping class - */ + * protected method used by addElementMapping(String) to + * instantiate element mapping class + */ protected ElementMapping createElementMapping( String mappingClassName) { MessageHandler.logln("using element mapping " + mappingClassName); @@ -237,16 +192,16 @@ public class Driver { } /** - * add the element mapping with the given class name - */ + * add the element mapping with the given class name + */ public void addPropertyList(String listClassName) { createPropertyList(listClassName).addToBuilder(this.treeBuilder); } /** - * protected method used by addPropertyList(String) to - * instantiate list mapping class - */ + * protected method used by addPropertyList(String) to + * instantiate list mapping class + */ protected PropertyListMapping createPropertyList( String listClassName) { MessageHandler.logln("using property list mapping " + @@ -276,20 +231,20 @@ public class Driver { } /** - * return the tree builder (a SAX ContentHandler). - * - * used in situations where SAX is used but not via a FOP-invoked - * SAX parser. A good example is an XSLT engine that fires SAX - * events but isn't a SAX Parser itself. - */ + * return the tree builder (a SAX ContentHandler). + * + * used in situations where SAX is used but not via a FOP-invoked + * SAX parser. A good example is an XSLT engine that fires SAX + * events but isn't a SAX Parser itself. + */ public ContentHandler getContentHandler() { return this.treeBuilder; } /** - * build the formatting object tree using the given SAX Parser and - * SAX InputSource - */ + * build the formatting object tree using the given SAX Parser and + * SAX InputSource + */ public void buildFOTree(XMLReader parser, InputSource source) throws FOPException { @@ -312,8 +267,8 @@ public class Driver { } /** - * build the formatting object tree using the given DOM Document - */ + * build the formatting object tree using the given DOM Document + */ public void buildFOTree(Document document) throws FOPException { /* most of this code is modified from John Cowan's */ @@ -341,7 +296,7 @@ public class Driver { int datalen = data.length(); if (array == null || array.length < datalen) { /* if the array isn't big enough, make a new - one */ + one */ array = new char[datalen]; } data.getChars(0, datalen, array, 0); @@ -403,8 +358,8 @@ public class Driver { } /** - * Dumps an error - */ + * Dumps an error + */ public void dumpError(Exception e) { if (errorDump) { if (e instanceof SAXException) { @@ -420,16 +375,16 @@ public class Driver { } /** - * set the OutputStream to use to output the result of the Renderer - * (if applicable) - */ + * set the OutputStream to use to output the result of the Renderer + * (if applicable) + */ public void setOutputStream(OutputStream stream) { this.stream = stream; } /** - * format the formatting object tree into an area tree - */ + * format the formatting object tree into an area tree + */ public void format() throws FOPException { FontInfo fontInfo = new FontInfo(); this.renderer.setupFontInfo(fontInfo); @@ -441,79 +396,11 @@ public class Driver { } /** - * render the area tree to the output form - */ + * render the area tree to the output form + */ public void render() throws IOException, FOPException { this.renderer.render(areaTree, this.stream); } - /** - * loads standard configuration file and a user file, if it has been specified - */ - public void loadStandardConfiguration() { - String file = "config.xml"; - - // the entry /conf/config.xml refers to a directory conf which is a sibling of org - InputStream configfile = - ConfigurationReader.class.getResourceAsStream("/conf/"+ - file); - if (configfile == null) { - MessageHandler.errorln("Fatal error: can't find default configuration file"); - System.exit(1); - } - if (errorDump) { - MessageHandler.logln("reading default configuration file"); - } - ConfigurationReader reader = - new ConfigurationReader (new InputSource(configfile)); - if (errorDump) { - reader.setDumpError(true); - } - try { - reader.start(); - } catch (org.apache.fop.apps.FOPException error) { - MessageHandler.errorln("Fatal Error: Can't process default configuration file. \nProbably it is not well-formed."); - if (errorDump) { - reader.dumpError(error); - } - System.exit(1); - } - } - - public void loadUserconfiguration(String userConfigFile) { - //read user configuration file - if (userConfigFile != null) { - MessageHandler.logln("reading user configuration file"); - ConfigurationReader reader = new ConfigurationReader ( - CommandLine.fileInputSource(userConfigFile)); - if (errorDump) { - reader.setDumpError(true); - } - try { - reader.start(); - } catch (org.apache.fop.apps.FOPException error) { - MessageHandler.errorln( - "Can't find user configuration file " + - userConfigFile); - MessageHandler.errorln("using default values"); - if (errorDump) { - reader.dumpError(error); - } - } - } - } - - public void setBaseDir(String fofile) { - String baseDir = Configuration.getStringValue("baseDir"); - if (baseDir == null) { - baseDir = new File( - new File(fofile).getAbsolutePath()).getParent(); - Configuration.put("baseDir",baseDir); - } - if (errorDump) { - MessageHandler.logln("base directory: " + baseDir); - } - } - } diff --git a/src/org/apache/fop/apps/FOPException.java b/src/org/apache/fop/apps/FOPException.java index 6b64166de..d28d36052 100644 --- a/src/org/apache/fop/apps/FOPException.java +++ b/src/org/apache/fop/apps/FOPException.java @@ -1,53 +1,9 @@ -/*-- $Id$ -- - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ + package org.apache.fop.apps; /** @@ -61,6 +17,6 @@ public class FOPException extends Exception { * @param message descriptive message */ public FOPException(String message) { - super(message); + super(message); } } diff --git a/src/org/apache/fop/apps/Version.java b/src/org/apache/fop/apps/Version.java index 1c38a61bd..cb4e86572 100644 --- a/src/org/apache/fop/apps/Version.java +++ b/src/org/apache/fop/apps/Version.java @@ -1,58 +1,13 @@ -/*-- $Id$ -- - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ package org.apache.fop.apps; import org.apache.fop.configuration.Configuration; -/** +/** * class representing the version of FOP. */ public class Version { diff --git a/src/org/apache/fop/configuration/Configuration.java b/src/org/apache/fop/configuration/Configuration.java index 49bf5c4a8..844fede9e 100644 --- a/src/org/apache/fop/configuration/Configuration.java +++ b/src/org/apache/fop/configuration/Configuration.java @@ -1,3 +1,9 @@ +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." + */ + package org.apache.fop.configuration; @@ -97,23 +103,18 @@ public class Configuration { * convenience methods to access boolean values in the configuration * @param key a string containing the key value for the configuration value * role detemines the configuration target - * @return boolean true or false as value - * -1 if the key is not defined. + * @return Boolean true or false as value + * null if the key is not defined. */ public static Boolean getBooleanValue(String key, int role) { Object obj = Configuration.getValue (key, role); - if (obj instanceof String) { - String value = (String) obj; - if (value.equals("true")) { - return new Boolean(true); - } else if (value.equals("false")) { - return new Boolean(false); - } else { - return null; - } - } else { - return null; - } + if (obj instanceof String) { + return new Boolean((String)obj); + } else if (obj instanceof Boolean) { + return (Boolean) obj; + } else { + return null; + } }; /** @@ -189,7 +190,7 @@ public class Configuration { * * @param key a string containing the key value for the configuration value * @return boolean true or false as value - * -1 if the key is not defined. + * null if the key is not defined. */ public static Boolean getBooleanValue(String key) { return Configuration.getBooleanValue(key, Configuration.STANDARD); diff --git a/src/org/apache/fop/configuration/ConfigurationParser.java b/src/org/apache/fop/configuration/ConfigurationParser.java index 4098d9dbf..c5c3d620b 100644 --- a/src/org/apache/fop/configuration/ConfigurationParser.java +++ b/src/org/apache/fop/configuration/ConfigurationParser.java @@ -1,54 +1,10 @@ -/* - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ + package org.apache.fop.configuration; import org.xml.sax.helpers.DefaultHandler; diff --git a/src/org/apache/fop/configuration/ConfigurationReader.java b/src/org/apache/fop/configuration/ConfigurationReader.java index ba5f7a3b4..92d7c338a 100644 --- a/src/org/apache/fop/configuration/ConfigurationReader.java +++ b/src/org/apache/fop/configuration/ConfigurationReader.java @@ -1,54 +1,10 @@ -/* - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - +/* + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ + package org.apache.fop.configuration; //sax @@ -75,7 +31,7 @@ import org.apache.fop.configuration.Configuration; * } * </code> * Once the configuration has been setup, the information can be accessed with - * the methods of StandardConfiguration. + * the methods of Configuration. */ public class ConfigurationReader { diff --git a/src/org/apache/fop/messaging/MessageHandler.java b/src/org/apache/fop/messaging/MessageHandler.java index 981cf5b0e..e18bd44ca 100644 --- a/src/org/apache/fop/messaging/MessageHandler.java +++ b/src/org/apache/fop/messaging/MessageHandler.java @@ -1,58 +1,15 @@ /* - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 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/>. - + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources." */ + package org.apache.fop.messaging; import java.io.*; import java.util.*; -//import javax.swing.*; + /** The class MessageHandler contains the static methods log and error which * should be used for any end user information instead of System.out.print() or @@ -61,20 +18,20 @@ import java.util.*; * output. If you don't want to change the default behaviour, you should be * happy with MessageHandler.log(message) and MessageHandler.error(message)<br> * The class MessageHandler also supports the setting of an id. If set every message - * has as a prefix an identifying string. That way Fop probably can also be used in - * environments, where more than one Fop instance are running in same JVM.<br> - * If Fop is embedded in a gui application or for any reasons the existing + * has as a prefix an identifying string. That way Fop probably can also be used in + * environments, where more than one Fop instance are running in same JVM.<br> + * If Fop is embedded in a gui application or for any reasons the existing * messaging system doesn't meet the programmer's requirements, one can add - * a MessageEvent listener to MessageHandler and handle the incoming messages - * in an appropriate way. See the class DefaultMessageListener, which is a trivial - * implementation of the MessageListener. + * a MessageEvent listener to MessageHandler and handle the incoming messages + * in an appropriate way. See the class DefaultMessageListener, which is a trivial + * implementation of the MessageListener. * Here is an example how to configure MessageHandler for the DefaultMessageListener (anybody * can provide his own listener by extending MessageListener<br> * <code> * MessageHandler.setOutputMethod(MessageHandler.EVENT); * MessageHandler.addListener(new DefaultMessageListener()); * </code><br> - * This examples shows, how to redirect the messages to a log file called fop.log. + * This examples shows, how to redirect the messages to a log file called fop.log. * All messages are appended to this file. * <code> * MessageHandler.setOutputMethod(MessageHandler.FILE); @@ -83,220 +40,238 @@ import java.util.*; */ public class MessageHandler { - public static final int SCREEN = 0; - public static final int FILE = 1; - public static final int EVENT = 2; - public static final int NONE = 3; //this should always be the last method + public static final int SCREEN = 0; + public static final int FILE = 1; + public static final int EVENT = 2; + public static final int NONE = 3; //this should always be the last method - private static String logfileName = "fop.log"; - private static PrintWriter writer; - private static int outputMethod = SCREEN; - private static boolean fileOpened = false; - private static boolean appendToFile = true; - private static String message = ""; - private static String prefix =""; - private static Vector listeners = new Vector(); - private static boolean IDisSet = false; - /** - * helper class to access the message - * @return a string containing the message - */ + private static String logfileName = "fop.log"; + private static PrintWriter writer; + private static int outputMethod = SCREEN; + private static boolean fileOpened = false; + private static boolean appendToFile = true; + private static String message = ""; + private static String prefix = ""; + private static Vector listeners = new Vector(); + private static boolean IDisSet = false; + private static boolean quiet = false; - private static String getMessage () { - return message; - } + /** + * helper class to access the message + * @return a string containing the message + */ - /** - * helper class which sets the message - * and adds a prefix which can contain - * the id of the thread which uses this messagehandler - */ - private static void setMessage (String m) { - if (IDisSet) { - message = getID() + ":" + m; - } else { - message = m; + private static String getMessage () { + return message; } - } - /** - * informs the user of the message - * @param message the message for the user - */ - public static void log (String message) { - setMessage(message); - switch (outputMethod) { - case SCREEN: - System.out.print(getMessage ()); - break; - case FILE: - if (fileOpened) { - writer.print(getMessage ()); - writer.flush(); + /** + * helper class which sets the message + * and adds a prefix which can contain + * the id of the thread which uses this messagehandler + */ + private static void setMessage (String m) { + if (IDisSet) { + message = getID() + ":" + m; } else { - openFile(); - writer.print(getMessage ()); - writer.flush(); + message = m; } - break; - case EVENT: - setMessage(message); - Enumeration enum = listeners.elements(); - while (enum.hasMoreElements()) { - ((MessageListener) enum.nextElement()).processMessage(new MessageEvent(getMessage())); + } + + /** + * informs the user of the message + * @param message the message for the user + */ + public static void log (String message) { + if (!quiet) { + setMessage(message); + switch (outputMethod) { + case SCREEN: + System.out.print(getMessage ()); + break; + case FILE: + if (fileOpened) { + writer.print(getMessage ()); + writer.flush(); + } else { + openFile(); + writer.print(getMessage ()); + writer.flush(); + } + break; + case EVENT: + setMessage(message); + Enumeration enum = listeners.elements(); + while (enum.hasMoreElements()) { + ((MessageListener) enum.nextElement()). + processMessage( + new MessageEvent(getMessage())); + } + break; + case NONE: + //do nothing + break; + default: + System.out.print(message); + } } - break; - case NONE: - //do nothing - break; - default: - System.out.print(message); } - } - /** - * convenience method which adds a return to the message - * @param message the message for the user - */ - public static void logln (String message) { - log (message+"\n"); - } + /** + * convenience method which adds a return to the message + * @param message the message for the user + */ + public static void logln (String message) { + log (message + "\n"); + } - /** - * error warning for the user - * @param errorMessage contains the warning string - */ + /** + * error warning for the user + * @param errorMessage contains the warning string + */ - public static void error (String errorMessage) { - setMessage(errorMessage); - switch (outputMethod) { - case SCREEN: - System.err.print(getMessage()); - break; - case FILE: - if (fileOpened) { - writer.print(getMessage()); - writer.flush(); - } else { - openFile(); - writer.print(getMessage()); - writer.flush(); - } - break; - case EVENT: - setMessage(message); - Enumeration enum = listeners.elements(); - while (enum.hasMoreElements()) { - MessageEvent messEv = new MessageEvent(getMessage()); - messEv.setMessageType(MessageEvent.ERROR); - ((MessageListener) enum.nextElement()).processMessage(messEv); + public static void error (String errorMessage) { + setMessage(errorMessage); + switch (outputMethod) { + case SCREEN: + System.err.print(getMessage()); + break; + case FILE: + if (fileOpened) { + writer.print(getMessage()); + writer.flush(); + } else { + openFile(); + writer.print(getMessage()); + writer.flush(); + } + break; + case EVENT: + setMessage(message); + Enumeration enum = listeners.elements(); + while (enum.hasMoreElements()) { + MessageEvent messEv = new MessageEvent(getMessage()); + messEv.setMessageType(MessageEvent.ERROR); + ((MessageListener) enum.nextElement()). + processMessage(messEv); + } + break; + case NONE: + //do nothing + break; + default: + System.err.print(errorMessage); } - break; - case NONE: - //do nothing - break; - default: - System.err.print(errorMessage); } - } - /** - * convenience method which adds a return to the error message - * @param errorMessage the message for the user - */ - public static void errorln (String errorMessage) { - error (errorMessage+"\n"); - } + /** + * convenience method which adds a return to the error message + * @param errorMessage the message for the user + */ + public static void errorln (String errorMessage) { + error (errorMessage + "\n"); + } - /** - * adds a MessageListener which listens for MessageEvents - * @param MessageListener the listener to add - */ - public static void addListener(MessageListener listener) { - listeners.addElement(listener); - } + /** + * adds a MessageListener which listens for MessageEvents + * @param MessageListener the listener to add + */ + public static void addListener(MessageListener listener) { + listeners.addElement(listener); + } - /** - * removes a MessageListener - * @param MessageListener the listener to remove - */ - public static void removeListener(MessageListener listener) { - listeners.removeElement(listener); - } + /** + * removes a MessageListener + * @param MessageListener the listener to remove + */ + public static void removeListener(MessageListener listener) { + listeners.removeElement(listener); + } - /** - * sets the output method - * @param method the output method to use, allowed values are<br> - * MessageHandler.SCREEN, MessageHandler.FILE, MessageHandler.EVENT - * MessageHandler.NONE - */ - public static void setOutputMethod (int method) { - if (method > NONE) { - MessageHandler.error("Error: Unknown output method"); - } else { - outputMethod = method; + /** + * sets the output method + * @param method the output method to use, allowed values are<br> + * MessageHandler.SCREEN, MessageHandler.FILE, MessageHandler.EVENT + * MessageHandler.NONE + */ + public static void setOutputMethod (int method) { + if (method > NONE) { + MessageHandler.error("Error: Unknown output method"); + } else { + outputMethod = method; + } + } + + /** + * informs what output method is set + * @return the output method + */ + public static int getOutputMethod () { + return outputMethod; } - } - /** - * informs what output method is set - * @return the output method - */ - public static int getOutputMethod () { - return outputMethod; - } + /** + * sets the logfile name + * @param filename name of the logfile + * @param append if true, the logfile is appended + */ + public static void setLogfileName (String filename, boolean append) { + logfileName = filename; + appendToFile = append; + } - /** - * sets the logfile name - * @param filename name of the logfile - * @param append if true, the logfile is appended - */ - public static void setLogfileName (String filename, boolean append) { - logfileName = filename; - appendToFile = append; - } + /** + * returns the logfile name + * @return String containing the logfile name + */ + public static String getLogfileName () { + return logfileName; + } - /** - * returns the logfile name - * @return String containing the logfile name - */ - public static String getLogfileName () { - return logfileName; - } + /** + * helper file which opens the file for output method FILE + */ + private static void openFile () { + try { + writer = new PrintWriter ( + new FileWriter (logfileName, appendToFile), true); + writer.println("\n=============================================="); + fileOpened = true; + } catch (IOException ioe) { + System.err.println("Error: " + ioe); + } + } - /** - * helper file which opens the file for output method FILE - */ - private static void openFile () { - try { - writer = new PrintWriter (new FileWriter (logfileName,appendToFile),true); - writer.println("\n=============================================="); - fileOpened = true; - } catch (IOException ioe) { - System.err.println("Error: " + ioe); + /** + * if set to true an id string is prefixed to every message + * uses the thread info as an id for the message producer. Should be used if + * more than one instance of Fop is running in the same JVM + * this id becomes a prefix to every message + */ + private static String getID () { + return Thread.currentThread().toString(); } - } - /** - * if set to true an id string is prefixed to every message - * uses the thread info as an id for the message producer. Should be used if - * more than one instance of Fop is running in the same JVM - * this id becomes a prefix to every message - */ - private static String getID () { - return Thread.currentThread().toString() ; - } + /** + * if set to true an id string is prefixed to every message + * uses the thread info as an id for the message producer. Should be used if + * more than one instance of Fop is running in the same JVM + * this id becomes a prefix to every message + * + * @param id boolean (default is false) + */ - /** - * if set to true an id string is prefixed to every message - * uses the thread info as an id for the message producer. Should be used if - * more than one instance of Fop is running in the same JVM - * this id becomes a prefix to every message - * - * @param id boolean (default is false) - */ + public static void setID (boolean id) { + IDisSet = id; + } - public static void setID (boolean id) { - IDisSet = id; - } + /** + * if set to true all normal messages are suppressed. + * error messages are displayed allthesame + * + * @param quietMode boolean (default is false) + */ + public static void setQuiet(boolean quietMode) { + quiet = quietMode; + } } diff --git a/src/org/apache/fop/tools/anttasks/Fop.java b/src/org/apache/fop/tools/anttasks/Fop.java index a0eb542a0..ccdbfa8db 100644 --- a/src/org/apache/fop/tools/anttasks/Fop.java +++ b/src/org/apache/fop/tools/anttasks/Fop.java @@ -68,6 +68,8 @@ import java.net.URL; // FOP import org.apache.fop.messaging.MessageHandler; import org.apache.fop.apps.*; +import org.apache.fop.configuration.Configuration; + /** * extension to Ant which allows usage of Fop in the @@ -77,7 +79,7 @@ import org.apache.fop.apps.*; * containing org.w3c.dom.svg etc. for svg support */ -public class Fop { +public class Fop extends Starter { String fofile, pdffile; /** @@ -97,96 +99,27 @@ public class Fop { } - /** - * creates a SAX parser, using the value of org.xml.sax.parser - * defaulting to org.apache.xerces.parsers.SAXParser - * - * @return the created SAX parser - */ - static XMLReader createParser() { - String parserClassName = System.getProperty("org.xml.sax.parser"); - if (parserClassName == null) { - parserClassName = "org.apache.xerces.parsers.SAXParser"; - } - MessageHandler.logln("using SAX parser " + parserClassName); - - try { - return (XMLReader) Class.forName( - parserClassName).newInstance(); - } catch (ClassNotFoundException e) { - MessageHandler.errorln("Could not find " + parserClassName); - } - catch (InstantiationException e) { - MessageHandler.errorln("Could not instantiate " + - parserClassName); - } - catch (IllegalAccessException e) { - MessageHandler.errorln("Could not access " + parserClassName); - } - catch (ClassCastException e) { - MessageHandler.errorln(parserClassName + " is not a SAX driver"); - } - return null; - } // end: createParser - - /** - * create an InputSource from a file name - * - * @param filename the name of the file - * @return the InputSource created - */ - protected static InputSource fileInputSource(String filename) { - - /* this code adapted from James Clark's in XT */ - File file = new File(filename); - String path = file.getAbsolutePath(); - String fSep = System.getProperty("file.separator"); - if (fSep != null && fSep.length() == 1) - path = path.replace(fSep.charAt(0), '/'); - if (path.length() > 0 && path.charAt(0) != '/') - path = '/' + path; - try { - return new InputSource(new URL("file", null, path).toString()); - } catch (java.net.MalformedURLException e) { - throw new Error("unexpected MalformedURLException"); - } - } // end: fileInputSource - - /** - * main method, starts execution of this task - * - */ - public void execute () throws BuildException { + public void run () { Driver driver = new Driver(); - driver.setBaseDir(fofile); - boolean errors = false; + Options options = new Options(); + boolean errors = false; String version = Version.getVersion(); - MessageHandler.logln("=======================\nTask " + - version + "\nconverting file " + fofile + " to " + pdffile); - if (!(new File(fofile).exists())) { + File fofileF = new File (fofile); + Configuration.put("baseDir",new File(fofileF.getAbsolutePath()).getParent()); + if (!fofileF.exists()) { errors = true; MessageHandler.errorln( "Task Fop - ERROR: Formatting objects file " + fofile + " missing."); } - XMLReader parser = createParser(); + InputHandler inputHandler = new FOInputHandler(fofileF); + XMLReader parser = inputHandler.getParser(); + super.setParserFeatures(parser); - if (parser == null) { - MessageHandler.errorln("Task Fop - ERROR: Unable to create SAX parser"); - errors = true; - } - - // setting the parser features - try { - parser.setFeature("http://xml.org/sax/features/namespace-prefixes", - true); - } catch (SAXException e) { - MessageHandler.errorln("Error in setting up parser feature namespace-prefixes"); - MessageHandler.errorln("You need a parser which supports SAX version 2"); - System.exit(1); - } + MessageHandler.logln("=======================\nTask " + + version + "\nconverting file " + fofile + " to " + pdffile); if (!errors) { try { @@ -194,13 +127,12 @@ public class Fop { version); driver.addElementMapping("org.apache.fop.fo.StandardElementMapping"); driver.addElementMapping("org.apache.fop.svg.SVGElementMapping"); - driver.addElementMapping("org.apache.fop.extensions.ExtensionElementMapping"); + driver.addElementMapping("org.apache.fop.extensions.ExtensionElementMapping"); driver.addPropertyList("org.apache.fop.fo.StandardPropertyListMapping"); driver.addPropertyList("org.apache.fop.svg.SVGPropertyListMapping"); - driver.addPropertyList("org.apache.fop.extensions.ExtensionPropertyListMapping"); - + driver.addPropertyList("org.apache.fop.extensions.ExtensionPropertyListMapping"); driver.setOutputStream(new FileOutputStream(pdffile)); - driver.buildFOTree(parser, fileInputSource(fofile)); + driver.buildFOTree(parser, inputHandler.fileInputSource(fofileF)); driver.format(); driver.render(); } catch (Exception e) { @@ -210,6 +142,14 @@ public class Fop { } } MessageHandler.logln("=======================\n"); + } + + /** + * main method, starts execution of this task + * + */ + public void execute () throws BuildException { + run(); } // end: execute } |