aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/apps
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2005-08-23 14:06:25 +0000
committerJeremias Maerki <jeremias@apache.org>2005-08-23 14:06:25 +0000
commitd23dad3ac526243651ecfc64e5ba42f2b76c959c (patch)
tree52820c77727ad46685477114b339f33631d283b3 /src/java/org/apache/fop/apps
parentc4aa8acd9cffd99ba4858d54991a00e338fb1e5b (diff)
downloadxmlgraphics-fop-d23dad3ac526243651ecfc64e5ba42f2b76c959c.tar.gz
xmlgraphics-fop-d23dad3ac526243651ecfc64e5ba42f2b76c959c.zip
Moved CLI to its own package. New main class is org.apache.fop.cli.Main.
InputHandler is not passed through the FOUserAgent anymore. IMO it doesn't belong there. Instead I defined an interface "Renderable" in the AWT preview that InputHandler implements. This is used exclusively for reloading the document inside the preview dialog. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@239409 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/fop/apps')
-rw-r--r--src/java/org/apache/fop/apps/CommandLineOptions.java809
-rw-r--r--src/java/org/apache/fop/apps/FOUserAgent.java18
-rw-r--r--src/java/org/apache/fop/apps/Fop.java166
-rw-r--r--src/java/org/apache/fop/apps/InputHandler.java148
-rw-r--r--src/java/org/apache/fop/apps/package.html3
5 files changed, 2 insertions, 1142 deletions
diff --git a/src/java/org/apache/fop/apps/CommandLineOptions.java b/src/java/org/apache/fop/apps/CommandLineOptions.java
deleted file mode 100644
index 434fb8be1..000000000
--- a/src/java/org/apache/fop/apps/CommandLineOptions.java
+++ /dev/null
@@ -1,809 +0,0 @@
-/*
- * Copyright 1999-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.apps;
-
-// java
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Locale;
-import java.util.Vector;
-
-import org.apache.fop.fo.Constants;
-import org.apache.fop.util.CommandLineLogger;
-
-// commons logging
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-// SAX
-import org.xml.sax.XMLReader;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.SAXParserFactory;
-
-// avalon configuration
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-
-/**
- * Options parses the commandline arguments
- */
-public class CommandLineOptions implements Constants {
-
- /* show configuration information */
- private Boolean showConfiguration = Boolean.FALSE;
- /* for area tree XML output, only down to block area level */
- private Boolean suppressLowLevelAreas = Boolean.FALSE;
- /* user configuration file */
- private File userConfigFile = null;
- /* input fo file */
- private File fofile = null;
- /* xsltfile (xslt transformation as input) */
- private File xsltfile = null;
- /* xml file (xslt transformation as input) */
- private File xmlfile = null;
- /* output file */
- private File outfile = null;
- /* input mode */
- private int inputmode = NOT_SET;
- /* output mode */
- private int outputmode = NOT_SET;
-
- private FOUserAgent foUserAgent;
-
- private Log log;
-
- private Vector xsltParams = null;
-
- /**
- * Construct a command line option object.
- */
- public CommandLineOptions() {
- LogFactory logFactory = LogFactory.getFactory();
-
- // Enable the simple command line logging when no other logger is
- // defined.
- if (System.getProperty("org.apache.commons.logging.Log") == null) {
- logFactory.setAttribute("org.apache.commons.logging.Log",
- CommandLineLogger.class.getName());
- setLogLevel("info");
- }
-
- log = LogFactory.getLog("FOP");
- }
-
- /**
- * Parse the command line arguments.
- * @param args the command line arguments.
- * @throws FOPException for general errors
- * @throws FileNotFoundException if an input file wasn't found
- * @throws IOException if the the configuration file could not be loaded
- */
- public void parse(String[] args)
- throws FOPException, IOException {
- boolean optionsParsed = true;
-
- foUserAgent = new FOUserAgent();
-
- try {
- optionsParsed = parseOptions(args);
- if (optionsParsed) {
- if (showConfiguration == Boolean.TRUE) {
- dumpConfiguration();
- }
- checkSettings();
- createUserConfig();
- }
- } catch (FOPException e) {
- printUsage();
- throw e;
- } catch (java.io.FileNotFoundException e) {
- printUsage();
- throw e;
- }
-
- foUserAgent.setInputHandler(createInputHandler());
- }
-
- /**
- * Get the logger.
- * @return the logger
- */
- public Log getLogger() {
- return log;
- }
-
- /**
- * parses the commandline arguments
- * @return true if parse was successful and processing can continue, false
- * if processing should stop
- * @exception FOPException if there was an error in the format of the options
- */
- private boolean parseOptions(String[] args) throws FOPException {
- for (int i = 0; i < args.length; i++) {
- if (args[i].equals("-x")
- || args[i].equals("--dump-config")) {
- showConfiguration = Boolean.TRUE;
- } else if (args[i].equals("-c")) {
- i = i + parseConfigurationOption(args, i);
- } else if (args[i].equals("-l")) {
- i = i + parseLanguageOption(args, i);
- } else if (args[i].equals("-s")) {
- suppressLowLevelAreas = Boolean.TRUE;
- } else if (args[i].equals("-d")) {
- setLogLevel("debug");
- } else if (args[i].equals("-r")) {
- foUserAgent.setStrictValidation(false);
- } else if (args[i].equals("-dpi")) {
- i = i + parseResolution(args, i);
- } else if (args[i].equals("-q") || args[i].equals("--quiet")) {
- setLogLevel("error");
- } else if (args[i].equals("-fo")) {
- i = i + parseFOInputOption(args, i);
- } else if (args[i].equals("-xsl")) {
- i = i + parseXSLInputOption(args, i);
- } else if (args[i].equals("-xml")) {
- i = i + parseXMLInputOption(args, i);
- } else if (args[i].equals("-awt")) {
- i = i + parseAWTOutputOption(args, i);
- } else if (args[i].equals("-pdf")) {
- i = i + parsePDFOutputOption(args, i);
- } else if (args[i].equals("-mif")) {
- i = i + parseMIFOutputOption(args, i);
- } else if (args[i].equals("-rtf")) {
- i = i + parseRTFOutputOption(args, i);
- } else if (args[i].equals("-tiff")) {
- i = i + parseTIFFOutputOption(args, i);
- } else if (args[i].equals("-png")) {
- i = i + parsePNGOutputOption(args, i);
- } else if (args[i].equals("-print")) {
- i = i + parsePrintOutputOption(args, i);
- // show print help
- if (i + 1 < args.length) {
- if (args[i + 1].equals("help")) {
- printUsagePrintOutput();
- return false;
- }
- }
- } else if (args[i].equals("-pcl")) {
- i = i + parsePCLOutputOption(args, i);
- } else if (args[i].equals("-ps")) {
- i = i + parsePostscriptOutputOption(args, i);
- } else if (args[i].equals("-txt")) {
- i = i + parseTextOutputOption(args, i);
- } else if (args[i].equals("-svg")) {
- i = i + parseSVGOutputOption(args, i);
- } else if (args[i].charAt(0) != '-') {
- i = i + parseUnknownOption(args, i);
- } else if (args[i].equals("-at")) {
- i = i + parseAreaTreeOption(args, i);
- } else if (args[i].equals("-v")) {
- System.out.println("FOP Version " + Fop.getVersion());
- } else if (args[i].equals("-param")) {
- if (i + 2 < args.length) {
- if (xsltParams == null) {
- xsltParams = new Vector();
- }
- String name = args[++i];
- xsltParams.addElement(name);
- String expression = args[++i];
- xsltParams.addElement(expression);
- } else {
- throw new FOPException("invalid param usage: use -param <name> <value>");
- }
- } else {
- printUsage();
- return false;
- }
- }
- return true;
- } // end parseOptions
-
- private int parseConfigurationOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("if you use '-c', you must specify "
- + "the name of the configuration file");
- } else {
- userConfigFile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseLanguageOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("if you use '-l', you must specify a language");
- } else {
- Locale.setDefault(new Locale(args[i + 1], ""));
- return 1;
- }
- }
-
- private int parseResolution(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException(
- "if you use '-dpi', you must specify a resolution (dots per inch)");
- } else {
- foUserAgent.setResolution(Integer.parseInt(args[i + 1]));
- return 1;
- }
- }
-
- private int parseFOInputOption(String[] args, int i) throws FOPException {
- inputmode = FO_INPUT;
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the fo file for the '-fo' option");
- } else {
- fofile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseXSLInputOption(String[] args, int i) throws FOPException {
- inputmode = XSLT_INPUT;
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the stylesheet "
- + "file for the '-xsl' option");
- } else {
- xsltfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseXMLInputOption(String[] args, int i) throws FOPException {
- inputmode = XSLT_INPUT;
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the input file "
- + "for the '-xml' option");
- } else {
- xmlfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseAWTOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_AWT);
- return 0;
- }
-
- private int parsePDFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_PDF);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the pdf output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseMIFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_MIF);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the mif output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseRTFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_RTF);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the rtf output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseTIFFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_TIFF);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the tiff output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePNGOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_PNG);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the png output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePrintOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_PRINT);
- return 0;
- }
-
- private int parsePCLOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_PCL);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the pdf output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePostscriptOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_PS);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the PostScript output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseTextOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_TXT);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the text output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseSVGOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_SVG);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the svg output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseUnknownOption(String[] args, int i) throws FOPException {
- if (inputmode == NOT_SET) {
- inputmode = FO_INPUT;
- fofile = new File(args[i]);
- } else if (outputmode == NOT_SET) {
- outputmode = RENDER_PDF;
- outfile = new File(args[i]);
- } else {
- throw new FOPException("Don't know what to do with "
- + args[i]);
- }
- return 0;
- }
-
- private int parseAreaTreeOption(String[] args, int i) throws FOPException {
- setOutputMode(RENDER_XML);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the area-tree output file");
- } else {
- outfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private void setOutputMode(int mode) throws FOPException {
- if (outputmode == NOT_SET) {
- outputmode = mode;
- } else {
- throw new FOPException("you can only set one output method");
- }
- }
-
- private void setLogLevel(String level) {
- // Set the evel for future loggers.
- LogFactory.getFactory().setAttribute("level", level);
- if (log instanceof CommandLineLogger) {
- // Set the level for the logger creates already.
- ((CommandLineLogger) log).setLogLevel(level);
- }
- }
-
- /**
- * checks whether all necessary information has been given in a consistent way
- */
- private void checkSettings() throws FOPException, FileNotFoundException {
- if (inputmode == NOT_SET) {
- throw new FOPException("No input file specified");
- }
-
- if (outputmode == NOT_SET) {
- throw new FOPException("No output file specified");
- }
-
- if ((outputmode == RENDER_AWT || outputmode == RENDER_PRINT) && outfile != null) {
- throw new FOPException("Output file may not be specified "
- + "for AWT or PRINT output");
- }
-
- if (inputmode == XSLT_INPUT) {
- // check whether xml *and* xslt file have been set
- if (xmlfile == null) {
- throw new FOPException("XML file must be specified for the transform mode");
- }
- if (xsltfile == null) {
- throw new FOPException("XSLT file must be specified for the transform mode");
- }
-
- // warning if fofile has been set in xslt mode
- if (fofile != null) {
- log.warn("Can't use fo file with transform mode! Ignoring.\n"
- + "Your input is " + "\n xmlfile: "
- + xmlfile.getAbsolutePath()
- + "\nxsltfile: "
- + xsltfile.getAbsolutePath()
- + "\n fofile: "
- + fofile.getAbsolutePath());
- }
- if (!xmlfile.exists()) {
- throw new FileNotFoundException("Error: xml file "
- + xmlfile.getAbsolutePath()
- + " not found ");
- }
- if (!xsltfile.exists()) {
- throw new FileNotFoundException("Error: xsl file "
- + xsltfile.getAbsolutePath()
- + " not found ");
- }
-
- } else if (inputmode == FO_INPUT) {
- if (xmlfile != null || xsltfile != null) {
- log.warn("fo input mode, but xmlfile or xslt file are set:");
- log.error("xml file: " + xmlfile.toString());
- log.error("xslt file: " + xsltfile.toString());
- }
- if (!fofile.exists()) {
- throw new FileNotFoundException("Error: fo file "
- + fofile.getAbsolutePath()
- + " not found ");
- }
-
- }
- } // end checkSettings
-
- /**
- * Create the user configuration.
- * @throws FOPException if creating the user configuration fails
- * @throws IOException
- */
- private void createUserConfig() throws FOPException, IOException {
- if (userConfigFile == null) {
- return;
- }
- XMLReader parser = createParser();
- DefaultConfigurationBuilder configBuilder
- = new DefaultConfigurationBuilder(parser);
- Configuration userConfig = null;
- try {
- userConfig = configBuilder.buildFromFile(userConfigFile);
- } catch (SAXException e) {
- throw new FOPException(e);
- } catch (ConfigurationException e) {
- throw new FOPException(e);
- }
- foUserAgent.setUserConfig(userConfig);
- }
-
- /**
- * @return the type chosen renderer
- * @throws FOPException for invalid output modes
- */
- protected int getRenderer() throws FOPException {
- switch (outputmode) {
- case RENDER_PDF:
- case RENDER_AWT:
- case RENDER_MIF:
- case RENDER_PRINT:
- case RENDER_PCL:
- case RENDER_PS:
- case RENDER_TXT:
- case RENDER_SVG:
- case RENDER_RTF:
- case RENDER_TIFF:
- case RENDER_PNG:
- return outputmode;
- case RENDER_XML:
- foUserAgent.getRendererOptions().put("fineDetail", isCoarseAreaXml());
- return RENDER_XML;
- case NOT_SET:
- throw new FOPException("Renderer has not been set!");
- default:
- throw new FOPException("Invalid Renderer setting!");
- }
- }
-
- /**
- * Create an InputHandler object based on command-line parameters
- * @return a new InputHandler instance
- * @throws IllegalArgumentException if invalid/missing parameters
- */
- private InputHandler createInputHandler() throws IllegalArgumentException {
- switch (inputmode) {
- case FO_INPUT:
- return new InputHandler(fofile);
- case XSLT_INPUT:
- return new InputHandler(xmlfile, xsltfile, xsltParams);
- default:
- throw new IllegalArgumentException("Error creating InputHandler object.");
- }
- }
-
- /**
- * Get the FOUserAgent for this Command-Line run
- * @return FOUserAgent instance
- */
- protected FOUserAgent getFOUserAgent() {
- return foUserAgent;
- }
-
- /**
- * Returns the output mode (output format, ex. NOT_SET or RENDER_PDF)
- * @return the output mode
- */
- public int getOutputMode() {
- return outputmode;
- }
-
- /**
- * Returns the XSL-FO file if set.
- * @return the XSL-FO file, null if not set
- */
- public File getFOFile() {
- return fofile;
- }
-
- /**
- * Returns the input XML file if set.
- * @return the input XML file, null if not set
- */
- public File getXMLFile() {
- return xmlfile;
- }
-
- /**
- * Returns the stylesheet to be used for transformation to XSL-FO.
- * @return stylesheet
- */
- public File getXSLFile() {
- return xsltfile;
- }
-
- /**
- * Returns the output file
- * @return the output file
- */
- public File getOutputFile() {
- return outfile;
- }
-
- /**
- * Returns the user configuration file to be used.
- * @return the userconfig.xml file
- */
- public File getUserConfigFile() {
- return userConfigFile;
- }
-
- /**
- * Indicates whether the XML renderer should generate coarse area XML
- * @return true if coarse area XML is desired
- */
- public Boolean isCoarseAreaXml() {
- return suppressLowLevelAreas;
- }
-
- /**
- * Returns the input file.
- * @return either the fofile or the xmlfile
- */
- public File getInputFile() {
- switch (inputmode) {
- case FO_INPUT:
- return fofile;
- case XSLT_INPUT:
- return xmlfile;
- default:
- return fofile;
- }
- }
-
- /**
- * shows the commandline syntax including a summary of all available options and some examples
- */
- public static void printUsage() {
- System.err.println(
- "\nUSAGE\nFop [options] [-fo|-xml] infile [-xsl file] "
- + "[-awt|-pdf|-mif|-rtf|-tiff|-png|-pcl|-ps|-txt|-at|-print] <outfile>\n"
- + " [OPTIONS] \n"
- + " -d debug mode \n"
- + " -x dump configuration settings \n"
- + " -q quiet mode \n"
- + " -c cfg.xml use additional configuration file cfg.xml\n"
- + " -l lang the language to use for user information \n"
- + " -r relaxed/less strict validation (where available)\n"
- + " -dpi xxx resolution in dots per inch (dpi) where xxx is a number\n"
- + " -s for area tree XML, down to block areas only\n"
- + " -v to show FOP version being used\n\n"
- + " [INPUT] \n"
- + " infile xsl:fo input file (the same as the next) \n"
- + " -fo infile xsl:fo input file \n"
- + " -xml infile xml input file, must be used together with -xsl \n"
- + " -xsl stylesheet xslt stylesheet \n \n"
- + " -param name value <value> to use for parameter <name> in xslt stylesheet\n"
- + " (repeat '-param name value' for each parameter)\n \n"
- + " [OUTPUT] \n"
- + " outfile input will be rendered as pdf file into outfile \n"
- + " -pdf outfile input will be rendered as pdf file (outfile req'd) \n"
- + " -awt input will be displayed on screen \n"
- + " -mif outfile input will be rendered as mif file (outfile req'd)\n"
- + " -rtf outfile input will be rendered as rtf file (outfile req'd)\n"
- + " -tiff outfile input will be rendered as tiff file (outfile req'd)\n"
- + " -png outfile input will be rendered as png file (outfile req'd)\n"
- + " -pcl outfile input will be rendered as pcl file (outfile req'd) \n"
- + " -ps outfile input will be rendered as PostScript file (outfile req'd) \n"
- + " -txt outfile input will be rendered as text file (outfile req'd) \n"
- + " -svg outfile input will be rendered as an svg slides file (outfile req'd) \n"
- + " -at outfile representation of area tree as XML (outfile req'd) \n"
- + " -print input file will be rendered and sent to the printer \n"
- + " see options with \"-print help\" \n\n"
- + " [Examples]\n" + " Fop foo.fo foo.pdf \n"
- + " Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n"
- + " Fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf\n"
- + " Fop foo.fo -mif foo.mif\n"
- + " Fop foo.fo -rtf foo.rtf\n"
- + " Fop foo.fo -print or Fop -print foo.fo \n"
- + " Fop foo.fo -awt \n");
- }
-
- /**
- * shows the options for print output
- */
- private void printUsagePrintOutput() {
- System.err.println("USAGE: -print [-Dstart=i] [-Dend=i] [-Dcopies=i] [-Deven=true|false] "
- + " org.apache.fop.apps.Fop (..) -print \n"
- + "Example:\n"
- + "java -Dstart=1 -Dend=2 org.apache.Fop.apps.Fop infile.fo -print ");
- }
-
- /**
- * Outputs all commandline settings
- */
- private void dumpConfiguration() {
- log.info("Input mode: ");
- switch (inputmode) {
- case NOT_SET:
- log.info("not set");
- break;
- case FO_INPUT:
- log.info("FO ");
- log.info("fo input file: " + fofile.toString());
- break;
- case XSLT_INPUT:
- log.info("xslt transformation");
- log.info("xml input file: " + xmlfile.toString());
- log.info("xslt stylesheet: " + xsltfile.toString());
- break;
- default:
- log.info("unknown input type");
- }
- log.info("Output mode: ");
- switch (outputmode) {
- case NOT_SET:
- log.info("not set");
- break;
- case RENDER_PDF:
- log.info("pdf");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_AWT:
- log.info("awt on screen");
- if (outfile != null) {
- log.error("awt mode, but outfile is set:");
- log.info("out file: " + outfile.toString());
- }
- break;
- case RENDER_MIF:
- log.info("mif");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_RTF:
- log.info("rtf");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_TIFF:
- log.info("tiff");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_PNG:
- log.info("png");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_PRINT:
- log.info("print directly");
- if (outfile != null) {
- log.error("print mode, but outfile is set:");
- log.error("out file: " + outfile.toString());
- }
- break;
- case RENDER_PCL:
- log.info("pcl");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_PS:
- log.info("PostScript");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_TXT:
- log.info("txt");
- log.info("output file: " + outfile.toString());
- break;
- case RENDER_SVG:
- log.info("svg");
- log.info("output file: " + outfile.toString());
- break;
- default:
- log.info("unknown input type");
- }
-
- log.info("OPTIONS");
-
- if (userConfigFile != null) {
- log.info("user configuration file: "
- + userConfigFile.toString());
- } else {
- log.info("no user configuration file is used [default]");
- }
- }
-
- /**
- * Creates <code>XMLReader</code> object using default
- * <code>SAXParserFactory</code>
- * @return the created <code>XMLReader</code>
- * @throws FOPException if the parser couldn't be created or configured for proper operation.
- */
- private XMLReader createParser() throws FOPException {
- try {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(true);
- return factory.newSAXParser().getXMLReader();
- } catch (Exception e) {
- throw new FOPException("Couldn't create XMLReader", e);
- }
- }
-}
-
diff --git a/src/java/org/apache/fop/apps/FOUserAgent.java b/src/java/org/apache/fop/apps/FOUserAgent.java
index c371a42b6..328087f3b 100644
--- a/src/java/org/apache/fop/apps/FOUserAgent.java
+++ b/src/java/org/apache/fop/apps/FOUserAgent.java
@@ -81,7 +81,6 @@ public class FOUserAgent {
private PDFEncryptionParams pdfEncryptionParams;
private float px2mm = DEFAULT_PX2MM;
private Map rendererOptions = new java.util.HashMap();
- private InputHandler inputHandler = null;
private File outputFile = null;
private Renderer rendererOverride = null;
private FOEventHandler foEventHandlerOverride = null;
@@ -123,23 +122,6 @@ public class FOUserAgent {
protected String keywords = null;
/**
- * Sets the InputHandler object for this process
- * @param inputHandler holding input file name information
- */
- public void setInputHandler(InputHandler inputHandler) {
- this.inputHandler = inputHandler;
- }
-
- /**
- * Returns the apps.InputHandler object created during command-line
- * processing
- * @return InputHandler object
- */
- public InputHandler getInputHandler() {
- return inputHandler;
- }
-
- /**
* Add the element mapping with the given class name.
* @param elementMapping the class name representing the element mapping.
*/
diff --git a/src/java/org/apache/fop/apps/Fop.java b/src/java/org/apache/fop/apps/Fop.java
index b359e23b7..bef2b4a3e 100644
--- a/src/java/org/apache/fop/apps/Fop.java
+++ b/src/java/org/apache/fop/apps/Fop.java
@@ -19,15 +19,7 @@
package org.apache.fop.apps;
// Java
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileOutputStream;
import java.io.OutputStream;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
// XML
import org.xml.sax.helpers.DefaultHandler;
@@ -37,8 +29,7 @@ import org.apache.fop.fo.Constants;
import org.apache.fop.fo.FOTreeBuilder;
/**
- * Primary class that activates the FOP process for both command line
- * and embedded usage.
+ * Primary class that activates the FOP process for embedded usage.
* <P>
* JAXP is the standard method of embedding FOP in Java programs.
* Please check our embedding page (http://xml.apache.org/fop/embedding.html)
@@ -161,161 +152,6 @@ public class Fop implements Constants {
}
/**
- * @return the list of URLs to all libraries.
- * @throws MalformedURLException In case there is a problem converting java.io.File
- * instances to URLs.
- */
- public static URL[] getJARList() throws MalformedURLException {
- File baseDir = new File(".").getAbsoluteFile().getParentFile();
- File buildDir;
- if ("build".equals(baseDir.getName())) {
- buildDir = baseDir;
- baseDir = baseDir.getParentFile();
- } else {
- buildDir = new File(baseDir, "build");
- }
- File fopJar = new File(buildDir, "fop.jar");
- if (!fopJar.exists()) {
- fopJar = new File(baseDir, "fop.jar");
- }
- if (!fopJar.exists()) {
- throw new RuntimeException("fop.jar not found in directory: "
- + baseDir.getAbsolutePath() + " (or below)");
- }
- List jars = new java.util.ArrayList();
- jars.add(fopJar.toURL());
- File[] files;
- FileFilter filter = new FileFilter() {
- public boolean accept(File pathname) {
- return pathname.getName().endsWith(".jar");
- }
- };
- File libDir = new File(baseDir, "lib");
- if (!libDir.exists()) {
- libDir = baseDir;
- }
- files = libDir.listFiles(filter);
- if (files != null) {
- for (int i = 0, size = files.length; i < size; i++) {
- jars.add(files[i].toURL());
- }
- }
- String optionalLib = System.getProperty("fop.optional.lib");
- if (optionalLib != null) {
- files = new File(optionalLib).listFiles(filter);
- if (files != null) {
- for (int i = 0, size = files.length; i < size; i++) {
- jars.add(files[i].toURL());
- }
- }
- }
- URL[] urls = (URL[])jars.toArray(new URL[jars.size()]);
- /*
- for (int i = 0, c = urls.length; i < c; i++) {
- System.out.println(urls[i]);
- }*/
- return urls;
- }
-
- /**
- * @return true if FOP's dependecies are available in the current ClassLoader setup.
- */
- public static boolean checkDependencies() {
- try {
- //System.out.println(Thread.currentThread().getContextClassLoader());
- Class clazz = Class.forName("org.apache.batik.Version");
- if (clazz != null) {
- clazz = Class.forName("org.apache.avalon.framework.configuration.Configuration");
- }
- return (clazz != null);
- } catch (Exception e) {
- return false;
- }
- }
-
- /**
- * Dynamically builds a ClassLoader and executes FOP.
- * @param args command-line arguments
- */
- public static void startFOPWithDynamicClasspath(String[] args) {
- try {
- URL[] urls = getJARList();
- //System.out.println("CCL: "
- // + Thread.currentThread().getContextClassLoader().toString());
- ClassLoader loader = new java.net.URLClassLoader(urls, null);
- Thread.currentThread().setContextClassLoader(loader);
- Class clazz = Class.forName("org.apache.fop.apps.Fop", true, loader);
- //System.out.println("CL: " + clazz.getClassLoader().toString());
- Method mainMethod = clazz.getMethod("startFOP", new Class[] {String[].class});
- mainMethod.invoke(null, new Object[] {args});
- } catch (Exception e) {
- System.err.println("Unable to start FOP:");
- e.printStackTrace();
- System.exit(-1);
- }
- }
-
- /**
- * Executes FOP with the given ClassLoader setup.
- * @param args command-line arguments
- */
- public static void startFOP(String[] args) {
- //System.out.println("static CCL: "
- // + Thread.currentThread().getContextClassLoader().toString());
- //System.out.println("static CL: " + Fop.class.getClassLoader().toString());
- CommandLineOptions options = null;
- FOUserAgent foUserAgent = null;
- BufferedOutputStream bos = null;
-
- try {
- options = new CommandLineOptions();
- options.parse(args);
- foUserAgent = options.getFOUserAgent();
-
- Fop fop = new Fop(options.getRenderer(), foUserAgent);
-
- try {
- if (options.getOutputFile() != null) {
- bos = new BufferedOutputStream(new FileOutputStream(
- options.getOutputFile()));
- fop.setOutputStream(bos);
- foUserAgent.setOutputFile(options.getOutputFile());
- }
- foUserAgent.getInputHandler().render(fop);
- } finally {
- if (bos != null) {
- bos.close();
- }
- }
-
- // System.exit(0) called to close AWT/SVG-created threads, if any.
- // AWTRenderer closes with window shutdown, so exit() should not
- // be called here
- if (options.getOutputMode() != CommandLineOptions.RENDER_AWT) {
- System.exit(0);
- }
- } catch (Exception e) {
- if (options != null) {
- options.getLogger().error("Exception", e);
- }
- System.exit(1);
- }
- }
-
- /**
- * The main routine for the command line interface
- * @param args the command line parameters
- */
- public static void main(String[] args) {
- if (checkDependencies()) {
- startFOP(args);
- } else {
- startFOPWithDynamicClasspath(args);
- }
- }
-
-
- /**
* Get the version of FOP
* @return the version string
*/
diff --git a/src/java/org/apache/fop/apps/InputHandler.java b/src/java/org/apache/fop/apps/InputHandler.java
deleted file mode 100644
index ec4daa5e7..000000000
--- a/src/java/org/apache/fop/apps/InputHandler.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.apps;
-
-// Imported java.io classes
-import java.io.File;
-import java.util.Vector;
-
-// Imported TraX classes
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Class for handling files input from command line
- * either with XML and XSLT files (and optionally xsl
- * parameters) or FO File input alone
- */
-public class InputHandler implements ErrorListener {
- private File sourcefile = null; // either FO or XML/XSLT usage
- private File stylesheet = null; // for XML/XSLT usage
- private Vector xsltParams = null; // for XML/XSLT usage
-
- protected Log log = LogFactory.getLog(InputHandler.class);
-
- /**
- * Constructor for XML->XSLT->FO input
- * @param xmlfile XML file
- * @param xsltfile XSLT file
- * @param params Vector of command-line parameters (name, value,
- * name, value, ...) for XSL stylesheet, null if none
- */
- public InputHandler(File xmlfile, File xsltfile, Vector params) {
- sourcefile = xmlfile;
- stylesheet = xsltfile;
- xsltParams = params;
- }
-
- /**
- * Constructor for FO input
- * @param fofile the file to read the FO document.
- */
- public InputHandler(File fofile) {
- sourcefile = fofile;
- }
-
- /**
- * Generate a document, given an initialized Fop object
- * @param fop -- Fop object
- * @throws FOPException in case of an error during processing
- */
- public void render(Fop fop) throws FOPException {
-
- // if base URL was not explicitly set in FOUserAgent, obtain here
- if (fop.getUserAgent().getBaseURL() == null) {
- String baseURL = null;
-
- try {
- baseURL =
- new File(sourcefile.getAbsolutePath()).
- getParentFile().toURL().toExternalForm();
- } catch (Exception e) {
- baseURL = "";
- }
- fop.getUserAgent().setBaseURL(baseURL);
- }
-
- try {
- // Setup XSLT
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer;
-
- if (stylesheet == null) { // FO Input
- transformer = factory.newTransformer();
- } else { // XML/XSLT input
- transformer = factory.newTransformer(new StreamSource(
- stylesheet));
-
- // Set the value of parameters, if any, defined for stylesheet
- if (xsltParams != null) {
- for (int i = 0; i < xsltParams.size(); i += 2) {
- transformer.setParameter((String) xsltParams.elementAt(i),
- (String) xsltParams.elementAt(i + 1));
- }
- }
- }
- transformer.setErrorListener(this);
-
- // Create a SAXSource from the input Source file
- Source src = new StreamSource(sourcefile);
-
- // Resulting SAX events (the generated FO) must be piped through to FOP
- Result res = new SAXResult(fop.getDefaultHandler());
-
- // Start XSLT transformation and FOP processing
- transformer.transform(src, res);
-
- } catch (Exception e) {
- throw new FOPException(e);
- }
- }
-
- /**
- * Implementation of the ErrorListener interface.
- */
- public void warning(TransformerException exc) {
- log.warn(exc.toString());
- }
-
- /**
- * Implementation of the ErrorListener interface.
- */
- public void error(TransformerException exc) {
- log.error(exc.toString());
- }
-
- /**
- * Implementation of the ErrorListener interface.
- */
- public void fatalError(TransformerException exc)
- throws TransformerException {
- throw exc;
- }
-}
diff --git a/src/java/org/apache/fop/apps/package.html b/src/java/org/apache/fop/apps/package.html
index c8a9798d5..2bf75de3f 100644
--- a/src/java/org/apache/fop/apps/package.html
+++ b/src/java/org/apache/fop/apps/package.html
@@ -1,7 +1,6 @@
<HTML>
<TITLE>org.apache.fop.apps Package</TITLE>
<BODY>
-<P>Application classes used for running FOP both on the command line and
-embedded in other applications.</P>
+<P>Application classes used for running FOP embedded in other applications.</P>
</BODY>
</HTML> \ No newline at end of file