pbwest 2004/03/14 03:18:47
Modified: src/java/org/apache/fop/apps Tag: FOP_0-20-0_Alt-Design
Fop.java Document.java
Removed: src/java/org/apache/fop/apps Tag: FOP_0-20-0_Alt-Design
Driver.java
Log:
Merged Driver into Fop
Revision Changes Path
No revision
No revision
1.1.2.14 +303 -49 xml-fop/src/java/org/apache/fop/apps/Fop.java
Index: Fop.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Fop.java,v
retrieving revision 1.1.2.13
retrieving revision 1.1.2.14
diff -u -r1.1.2.13 -r1.1.2.14
--- Fop.java 14 Mar 2004 03:12:36 -0000 1.1.2.13
+++ Fop.java 14 Mar 2004 11:18:47 -0000 1.1.2.14
@@ -29,29 +29,98 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.apache.fop.area.AreaTree;
import org.apache.fop.configuration.CLI_Options;
import org.apache.fop.configuration.ConfigurationResource;
import org.apache.fop.configuration.Configuration;
+import org.apache.fop.configuration.FOUserAgent;
import org.apache.fop.configuration.SystemOptions;
import org.apache.fop.configuration.UserOptions;
+import org.apache.fop.fo.FOTree;
+import org.apache.fop.render.Renderer;
+import org.apache.fop.render.awt.AWTRenderer;
+import org.apache.fop.version.Version;
+import org.apache.fop.xml.FoXmlSerialHandler;
+import org.apache.fop.xml.Namespaces;
+import org.apache.fop.xml.SyncedXmlEventsBuffer;
+import org.apache.fop.xml.XmlEventReader;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
public class Fop {
+ /** private constant to indicate renderer was not defined. */
+ private static final int NOT_SET = 0;
+ /** Render to PDF. OutputStream must be set */
+ public static final int RENDER_PDF = 1;
+ /** Render to a GUI window. No OutputStream neccessary */
+ public static final int RENDER_AWT = 2;
+ /** Render to MIF. OutputStream must be set */
+ public static final int RENDER_MIF = 3;
+ /** Render to XML. OutputStream must be set */
+ public static final int RENDER_XML = 4;
+ /** Render to PRINT. No OutputStream neccessary */
+ public static final int RENDER_PRINT = 5;
+ /** Render to PCL. OutputStream must be set */
+ public static final int RENDER_PCL = 6;
+ /** Render to Postscript. OutputStream must be set */
+ public static final int RENDER_PS = 7;
+ /** Render to Text. OutputStream must be set */
+ public static final int RENDER_TXT = 8;
+ /** Render to SVG. OutputStream must be set */
+ public static final int RENDER_SVG = 9;
+ /** Render to RTF. OutputStream must be set */
+ public static final int RENDER_RTF = 10;
+
+ private InputHandler inputHandler;
+ private XMLReader parser;
+ private InputSource saxSource;
+
+ private FoXmlSerialHandler xmlhandler;
+ private SyncedXmlEventsBuffer eventsBuffer;
+ private Namespaces namespaces;
+ private XmlEventReader eventReader;
+ private FOTree foTree;
+ private AreaTree areaTree = new AreaTree();
+
+ private Thread driverThread;
+ private Thread parserThread;
+ private Thread foThread;
+ private Thread areaThread;
+ private Thread renderThread;
+
+ /** the renderer type code given by setRenderer */
+ private int rendererType = NOT_SET;
+
+ /** the renderer to use to output the area tree */
+ private Renderer renderer;
+
public static Runtime runtime;
public static long startTotal;
public static long startFree;
public static long startTime;
public static long startPCi;
public static long endPCi;
+ private long endtotal, endfree, gctotal, gcfree;
- /**
- * The top-level package for FOP
- */
+ /** The top-level package for FOP */
public static final String fopPackage = "org.apache.fop";
-
+ /** The logging object */
private Logger logger;
-
+ /** Configuration data */
public Configuration configuration = null;
+ /** The version string */
+ public final String version = Version.getVersion();
+ /** The version revision string */
+ public final String revision = Version.getRevision();
+ /** The version name string */
+ public final String name = Version.getName();
+
+ protected Properties properties = null;
+ protected SystemOptions options = null;
+ protected UserOptions userOptions = null;
+ protected CLI_Options cliOptions = null;
+ protected FOUserAgent userAgent = null;
public static void main(String[] args) {
Fop fopInstance = new Fop(args);
@@ -80,17 +149,26 @@
String[] args = null;
public Fop() {
- run();
+ setup();
}
public Fop(String[] args) {
this.args = args;
- run();
+ setup();
}
-
- public void run() {
- long endtotal, endfree, gctotal, gcfree;
- Properties properties;
+
+ public Fop(Configuration config, SystemOptions options) {
+ configuration = config;
+ this.options = options;
+ if (options instanceof CLI_Options) {
+ cliOptions = (CLI_Options)options;
+ } else {
+ if (options instanceof UserOptions) {
+ userOptions = (UserOptions)options;
+ }
+ }
+ }
+ private void setup() {
try {
// Get the initial system properties
InputStream propsfile =
@@ -110,19 +188,55 @@
}
// Now that the Fop system properties have been added, set up logger
logger = Logger.getLogger(fopPackage);
+ logger.setLevel(Level.CONFIG);
+ logger.config(version);
// Then restrict to WARNING
logger.setLevel(Level.WARNING);
- Driver driver;
- SystemOptions options = null;
- UserOptions userOptions = null;
- CLI_Options cliOptions = null;
- Boolean bool = null;
+ }
+ private void setupRunStats() {
runtime = Runtime.getRuntime();
startTotal = runtime.totalMemory();
startFree = runtime.freeMemory();
startTime = System.currentTimeMillis();
+ }
+
+ private void printRunStats() {
+ System.out.println("Back from driver.run()");
+ System.out.println("Elapsed time: " +
+ (System.currentTimeMillis() - startTime));
+ endtotal = runtime.totalMemory();
+ endfree = runtime.freeMemory();
+ System.gc();
+ gctotal = runtime.totalMemory();
+ gcfree = runtime.freeMemory();
+ System.out.println("Total memory before run : " + startTotal);
+ System.out.println("Total memory after run : " + endtotal);
+ System.out.println("Total memory after GC : " + gctotal);
+ System.out.println("Diff before/after total : "
+ + (endtotal - startTotal));
+ System.out.println("Diff before/GC total : "
+ + (gctotal - startTotal));
+ System.out.println("Diff after/GC total : "
+ + (gctotal - endtotal));
+ System.out.println("Free memory before run : " + startFree);
+ System.out.println("Free memory after run : " + endfree);
+ System.out.println("Free memory after GC : " + gcfree);
+ System.out.println("Diff before/after free : "
+ + (endfree - startFree));
+ System.out.println("Diff before/GC free : "
+ + (gcfree - startFree));
+ System.out.println("Diff after/GC free : "
+ + (gcfree - endfree));
+ System.out.println("cg() freed : "
+ + (gcfree - endfree));
+ //System.out.println("PC time : " + (endPCi - startPCi));
+ }
+ public void run() {
+ setupRunStats();
+
+ Boolean bool = null;
try {
configuration = new Configuration();
if (args == null) {
@@ -142,44 +256,184 @@
throw new FOPException(e2);
}
}
- driver = new Driver(configuration, options);
- driver.run();
- System.out.println("Back from driver.run()");
- System.out.println("Elapsed time: " +
- (System.currentTimeMillis() - startTime));
- endtotal = runtime.totalMemory();
- endfree = runtime.freeMemory();
- System.gc();
- gctotal = runtime.totalMemory();
- gcfree = runtime.freeMemory();
- System.out.println("Total memory before run : " + startTotal);
- System.out.println("Total memory after run : " + endtotal);
- System.out.println("Total memory after GC : " + gctotal);
- System.out.println("Diff before/after total : "
- + (endtotal - startTotal));
- System.out.println("Diff before/GC total : "
- + (gctotal - startTotal));
- System.out.println("Diff after/GC total : "
- + (gctotal - endtotal));
- System.out.println("Free memory before run : " + startFree);
- System.out.println("Free memory after run : " + endfree);
- System.out.println("Free memory after GC : " + gcfree);
- System.out.println("Diff before/after free : "
- + (endfree - startFree));
- System.out.println("Diff before/GC free : "
- + (gcfree - startFree));
- System.out.println("Diff after/GC free : "
- + (gcfree - endfree));
- System.out.println("cg() freed : "
- + (gcfree - endfree));
- //System.out.println("PC time : " + (endPCi - startPCi));
-
+ setInputHandler(options.getInputHandler());
+ parser = inputHandler.getParser();
+ saxSource = inputHandler.getInputSource();
+ // Setting of namespace-prefixes feature no longer required
+ //setParserFeatures(parser);
+
+ namespaces = new Namespaces();
+ eventsBuffer = new SyncedXmlEventsBuffer(namespaces);
+ eventReader = new XmlEventReader(eventsBuffer, namespaces);
+ xmlhandler = new FoXmlSerialHandler(eventsBuffer, parser, saxSource);
+ foTree = new FOTree(eventReader);
+
+ driverThread = Thread.currentThread();
+ foThread = new Thread(foTree, "FOTreeBuilder");
+ foThread.setDaemon(true);
+ parserThread = new Thread(xmlhandler, "XMLSerialHandler");
+ parserThread.setDaemon(true);
+
+ xmlhandler.setFoThread(foThread);
+ foTree.setParserThread(parserThread);
+
+ System.out.println("Starting parserThread");
+ parserThread.start();
+ System.out.println("parserThread started");
+ foThread.start();
+ System.out.println("foThread started");
+ try {
+ parserThread.join();
+ } catch (InterruptedException e) {}
+ //System.out.println("Joined to parser.");
+ try {
+ foThread.join();
+ } catch (InterruptedException e) {}
} catch (FOPException e) {
logger.warning(e.getMessage());
if (options.isDebugMode()) {
e.printStackTrace();
}
}
+
+ printRunStats();
+
+ }
+
+ /**
+ * Sets the InputHandler for XML imput as specified in FOPOptions.
+ * @param inputHandler the InputHandler
+ */
+ public void setInputHandler(InputHandler inputHandler) {
+ this.inputHandler = inputHandler;
+ }
+
+ protected FOUserAgent getUserAgent() {
+ return userAgent;
+ }
+
+ /**
+ * Shortcut to set the rendering type to use. Must be one of
+ * <ul>
+ * <li>RENDER_PDF</li>
+ * <li>RENDER_AWT</li>
+ * <li>RENDER_PRINT</li>
+ * <li>RENDER_MIF</li>
+ * <li>RENDER_XML</li>
+ * <li>RENDER_PCL</li>
+ * <li>RENDER_PS</li>
+ * <li>RENDER_TXT</li>
+ * <li>RENDER_SVG</li>
+ * <li>RENDER_RTF</li>
+ * </ul>
+ * @param renderer the type of renderer to use
+ * @throws IllegalArgumentException if an unsupported renderer type was
required.
+ */
+ public void setRenderer(int renderer) throws IllegalArgumentException {
+ rendererType = renderer;
+ switch (renderer) {
+// case RENDER_PDF:
+// setRenderer("org.apache.fop.render.pdf.PDFRenderer");
+// break;
+ case RENDER_AWT:
+ throw new IllegalArgumentException("Use renderer form of setRenderer()
for AWT");
+// case RENDER_PRINT:
+// setRenderer("org.apache.fop.render.awt.AWTPrintRenderer");
+// break;
+// case RENDER_PCL:
+// setRenderer("org.apache.fop.render.pcl.PCLRenderer");
+// break;
+// case RENDER_PS:
+// setRenderer("org.apache.fop.render.ps.PSRenderer");
+// break;
+// case RENDER_TXT:
+// setRenderer("org.apache.fop.render.txt.TXTRenderer()");
+// break;
+// case RENDER_MIF:
+// //foInputHandler will be set later
+// break;
+// case RENDER_XML:
+// setRenderer("org.apache.fop.render.xml.XMLRenderer");
+// break;
+// case RENDER_SVG:
+// setRenderer("org.apache.fop.render.svg.SVGRenderer");
+// break;
+// case RENDER_RTF:
+// //foInputHandler will be set later
+// break;
+ default:
+ rendererType = NOT_SET;
+ throw new IllegalArgumentException("Unknown renderer type " + renderer);
+ }
+ }
+
+ /**
+ * Set the Renderer to use.
+ * @param renderer the renderer instance to use (Note: Logger must be set at
this point)
+ */
+ public void setRenderer(Renderer renderer) {
+ // AWTStarter calls this function directly
+ if (renderer instanceof AWTRenderer) {
+ rendererType = RENDER_AWT;
+ }
+ renderer.setProducer(Version.getVersion());
+ renderer.setUserAgent(getUserAgent());
+ this.renderer = renderer;
+ }
+
+ /**
+ * Returns the currently active renderer.
+ * @return the renderer
+ */
+ public Renderer getRenderer() {
+ return renderer;
+ }
+
+ /**
+ * Set the class name of the Renderer to use as well as the
+ * producer string for those renderers that can make use of it.
+ * @param rendererClassName classname of the renderer to use such as
+ * "org.apache.fop.render.pdf.PDFRenderer"
+ * @exception IllegalArgumentException if the classname was invalid.
+ * @see #setRenderer(int)
+ */
+ public void setRenderer(String rendererClassName)
+ throws IllegalArgumentException {
+ try {
+ renderer = (Renderer)Class.forName(rendererClassName).newInstance();
+ renderer.setProducer(Version.getVersion());
+ renderer.setUserAgent(getUserAgent());
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Could not find "
+ + rendererClassName);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException("Could not instantiate "
+ + rendererClassName);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException("Could not access "
+ + rendererClassName);
+ } catch (ClassCastException e) {
+ throw new IllegalArgumentException(rendererClassName
+ + " is not a renderer");
+ }
+ }
+
+ /**
+ * DOES NOTHING
+ * TODO Eliminate or actualise
+ */
+ public synchronized void reset() {
+ }
+
+ /**
+ * Render the FO document read by a SAX Parser from an InputHandler
+ * @param inputHandler the input handler containing the source and
+ * parser information.
+ * @throws FOPException if anything goes wrong.
+ */
+ public synchronized void render(InputHandler inputHandler)
+ throws FOPException {
+ throw new FOPException("Attempting to run null 'render' method");
}
}
1.11.2.3 +11 -11 xml-fop/src/java/org/apache/fop/apps/Document.java
Index: Document.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Document.java,v
retrieving revision 1.11.2.2
retrieving revision 1.11.2.3
diff -u -r1.11.2.2 -r1.11.2.3
--- Document.java 13 Mar 2004 08:44:23 -0000 1.11.2.2
+++ Document.java 14 Mar 2004 11:18:47 -0000 1.11.2.3
@@ -37,8 +37,8 @@
*/
public class Document {
- /** The parent Driver object */
- private Driver driver;
+ /** The parent Fop object */
+ private Fop fop;
/** Map containing fonts that have been used */
private Map usedFonts;
@@ -58,10 +58,10 @@
private Logger log;
/**
* Main constructor
- * @param driver the Driver object that is the "parent" of this Document
+ * @param fop the Fop object that is the "parent" of this Document
*/
- public Document(Driver driver) {
- this.driver = driver;
+ public Document(Fop fop) {
+ this.fop = fop;
this.triplets = new java.util.HashMap();
this.fonts = new java.util.HashMap();
this.usedFonts = new java.util.HashMap();
@@ -246,11 +246,11 @@
}
/**
- * Public accessor for the parent Driver of this Document
- * @return the parent Driver for this Document
+ * Public accessor for the parent Fop of this Document
+ * @return the parent Fop for this Document
*/
- public Driver getDriver() {
- return driver;
+ public Fop getFop() {
+ return fop;
}
/**
@@ -272,7 +272,7 @@
* @return the FOUserAgent used for processing this document
*/
public FOUserAgent getUserAgent() {
- return getDriver().getUserAgent();
+ return getFop().getUserAgent();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]