pbwest 2002/11/16 17:40:20
Modified: src/org/apache/fop/fo Tag: fop-0_20_2-maintain
FOTreeBuilder.java
Log:
Line ending fixes.
Revision Changes Path
No revision
No revision
1.30.2.6 +285 -285 xml-fop/src/org/apache/fop/fo/FOTreeBuilder.java
Index: FOTreeBuilder.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FOTreeBuilder.java,v
retrieving revision 1.30.2.5
retrieving revision 1.30.2.6
diff -u -r1.30.2.5 -r1.30.2.6
--- FOTreeBuilder.java 2 Aug 2002 20:28:47 -0000 1.30.2.5
+++ FOTreeBuilder.java 17 Nov 2002 01:40:19 -0000 1.30.2.6
@@ -1,285 +1,285 @@
-/*
- * $Id$
- * 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.fo;
-
-// FOP
-import org.apache.fop.layout.AreaTree;
-import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
-import org.apache.fop.fo.pagination.Root;
-import org.apache.fop.fo.pagination.PageSequence;
-import org.apache.fop.extensions.ExtensionObj;
-
-// Avalon
-import org.apache.avalon.framework.logger.Logger;
-
-// SAX
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.InputSource;
-import org.xml.sax.Attributes;
-
-// Java
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.io.IOException;
-
-/**
- * SAX Handler that builds the formatting object tree.
- *
- * Modified by Mark Lillywhite [EMAIL PROTECTED] Now uses
- * StreamRenderer to automagically render the document as
- * soon as it receives a page-sequence end-tag. Also,
- * calls methods to set up and shut down the renderer at
- * the beginning and end of the FO document. Finally,
- * supresses adding the PageSequence object to the Root,
- * since it is parsed immediately.
- */
-public class FOTreeBuilder extends DefaultHandler implements TreeBuilder {
-
- /**
- * table mapping element names to the makers of objects
- * representing formatting objects
- */
- protected HashMap fobjTable = new HashMap();
-
- protected ArrayList namespaces = new ArrayList();
-
- /**
- * class that builds a property list for each formatting object
- */
- protected HashMap propertylistTable = new HashMap();
-
- /**
- * current formatting object being handled
- */
- protected FObj currentFObj = null;
-
- /**
- * the root of the formatting object tree
- */
- protected FObj rootFObj = null;
-
- /**
- * set of names of formatting objects encountered but unknown
- */
- protected HashMap unknownFOs = new HashMap();
-
- /**
- *
- * The class that handles formatting and rendering to a stream
- * ([EMAIL PROTECTED])
- */
- private StreamRenderer streamRenderer;
-
- private Logger log;
-
- public FOTreeBuilder() {}
-
- public void setLogger(Logger logger) {
- log = logger;
- }
-
- public void setStreamRenderer(StreamRenderer streamRenderer) {
- this.streamRenderer = streamRenderer;
- }
-
- public StreamRenderer getStreamRenderer() {
- return this.streamRenderer;
- }
-
- /**
- * add a mapping from element name to maker.
- *
- * @param namespaceURI namespace URI of formatting object element
- * @param maker Maker for class representing formatting object
- */
- public void addMapping(String namespaceURI, HashMap table) {
- this.fobjTable.put(namespaceURI, table);
- this.namespaces.add(namespaceURI.intern());
- }
-
- /**
- * add a mapping from element name to maker.
- *
- * @param namespaceURI namespace URI of formatting object element
- * @param maker Maker for class representing formatting object
- */
- public void addPropertyList(String namespaceURI, HashMap list) {
- PropertyListBuilder plb;
- plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
- if (plb == null) {
- plb = new PropertyListBuilder();
- plb.addList(list);
- this.propertylistTable.put(namespaceURI, plb);
- } else {
- plb.addList(list);
- }
- }
-
- /**
- * add a mapping from element name to maker.
- *
- * @param namespaceURI namespace URI of formatting object element
- * @param localName local name of formatting object element
- * @param maker Maker for class representing formatting object
- */
- public void addElementPropertyList(String namespaceURI, String localName,
- HashMap list) {
- PropertyListBuilder plb;
- plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
- if (plb == null) {
- plb = new PropertyListBuilder();
- plb.addElementList(localName, list);
- this.propertylistTable.put(namespaceURI, plb);
- } else {
- plb.addElementList(localName, list);
- }
- }
-
- public void addPropertyListBuilder(String namespaceURI,
- PropertyListBuilder propbuilder) {
- PropertyListBuilder plb;
- plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
- if (plb == null) {
- this.propertylistTable.put(namespaceURI, propbuilder);
- } else {
- // Error already added
- }
- }
-
- /**
- * SAX Handler for characters
- */
- public void characters(char data[], int start, int length) {
- if(currentFObj != null) {
- currentFObj.addCharacters(data, start, length);
- }
- }
-
- /**
- * SAX Handler for the end of an element
- */
- public void endElement(String uri, String localName, String rawName)
- throws SAXException {
- currentFObj.end();
-
- //
- // [EMAIL PROTECTED] - tell the stream renderer to render
- // this page-sequence
- //
- if(currentFObj instanceof PageSequence) {
- streamRenderer.render((PageSequence) currentFObj);
- } else if(currentFObj instanceof ExtensionObj) {
- if(!(currentFObj.getParent() instanceof ExtensionObj)) {
- streamRenderer.addExtension((ExtensionObj)currentFObj);
- }
- }
-
- currentFObj = (FObj)currentFObj.getParent();
- }
-
- /**
- * SAX Handler for the start of the document
- */
- public void startDocument()
- throws SAXException {
- rootFObj = null; // allows FOTreeBuilder to be reused
- log.info("building formatting object tree");
- streamRenderer.startRenderer();
- }
-
- public void endDocument()
- throws SAXException {
- log.info("Parsing of document complete, stopping renderer");
- streamRenderer.stopRenderer();
- }
-
- /**
- * SAX Handler for the start of an element
- */
- public void startElement(String uri, String localName, String rawName,
- Attributes attlist) throws SAXException {
- /* the formatting object started */
- FObj fobj;
-
- /* the maker for the formatting object started */
- FObj.Maker fobjMaker = null;
-
- /* look up Maker for the element */
- HashMap table = (HashMap)fobjTable.get(uri);
- if(table != null) {
- fobjMaker = (FObj.Maker)table.get(localName);
- }
-
- PropertyListBuilder currentListBuilder =
- (PropertyListBuilder)this.propertylistTable.get(uri);
-
- boolean foreignXML = false;
- if (fobjMaker == null) {
- String fullName = uri + "^" + localName;
- if (!this.unknownFOs.containsKey(fullName)) {
- this.unknownFOs.put(fullName, "");
- log.error("Unknown formatting object "
- + fullName);
- }
- if(namespaces.contains(uri.intern())) {
- // fall back
- fobjMaker = new Unknown.Maker();
- } else {
- fobjMaker = new UnknownXMLObj.Maker(uri, localName);
- foreignXML = true;
- }
- }
-
- try {
- PropertyList list = null;
- if (currentListBuilder != null) {
- list =
- currentListBuilder.makeList(uri, localName, attlist,
- (currentFObj == null) ? null
- : currentFObj.properties,
currentFObj);
- } else if(foreignXML) {
- list = new DirectPropertyListBuilder.AttrPropertyList(attlist);
- } else {
- if(currentFObj == null) {
- throw new FOPException("Invalid XML or missing namespace");
- }
- list = currentFObj.properties;
- }
- fobj = fobjMaker.make(currentFObj, list);
- fobj.setLogger(log);
- } catch (FOPException e) {
- throw new SAXException(e);
- }
-
- if (rootFObj == null) {
- rootFObj = fobj;
- if (!fobj.getName().equals("fo:root")) {
- throw new SAXException(new FOPException("Root element must"
- + " be root, not "
- + fobj.getName()));
- }
- } else if(!(fobj instanceof org.apache.fop.fo.pagination.PageSequence)) {
- currentFObj.addChild(fobj);
- }
-
- currentFObj = fobj;
- }
-
- public void reset() {
- currentFObj = null;
- rootFObj = null;
- streamRenderer = null;
- }
-
- public boolean hasData() {
- return (rootFObj != null);
- }
-
-}
+/*
+ * $Id$
+ * 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.fo;
+
+// FOP
+import org.apache.fop.layout.AreaTree;
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.StreamRenderer;
+import org.apache.fop.fo.pagination.Root;
+import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.extensions.ExtensionObj;
+
+// Avalon
+import org.apache.avalon.framework.logger.Logger;
+
+// SAX
+import org.xml.sax.helpers.DefaultHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.InputSource;
+import org.xml.sax.Attributes;
+
+// Java
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.io.IOException;
+
+/**
+ * SAX Handler that builds the formatting object tree.
+ *
+ * Modified by Mark Lillywhite [EMAIL PROTECTED] Now uses
+ * StreamRenderer to automagically render the document as
+ * soon as it receives a page-sequence end-tag. Also,
+ * calls methods to set up and shut down the renderer at
+ * the beginning and end of the FO document. Finally,
+ * supresses adding the PageSequence object to the Root,
+ * since it is parsed immediately.
+ */
+public class FOTreeBuilder extends DefaultHandler implements TreeBuilder {
+
+ /**
+ * table mapping element names to the makers of objects
+ * representing formatting objects
+ */
+ protected HashMap fobjTable = new HashMap();
+
+ protected ArrayList namespaces = new ArrayList();
+
+ /**
+ * class that builds a property list for each formatting object
+ */
+ protected HashMap propertylistTable = new HashMap();
+
+ /**
+ * current formatting object being handled
+ */
+ protected FObj currentFObj = null;
+
+ /**
+ * the root of the formatting object tree
+ */
+ protected FObj rootFObj = null;
+
+ /**
+ * set of names of formatting objects encountered but unknown
+ */
+ protected HashMap unknownFOs = new HashMap();
+
+ /**
+ *
+ * The class that handles formatting and rendering to a stream
+ * ([EMAIL PROTECTED])
+ */
+ private StreamRenderer streamRenderer;
+
+ private Logger log;
+
+ public FOTreeBuilder() {}
+
+ public void setLogger(Logger logger) {
+ log = logger;
+ }
+
+ public void setStreamRenderer(StreamRenderer streamRenderer) {
+ this.streamRenderer = streamRenderer;
+ }
+
+ public StreamRenderer getStreamRenderer() {
+ return this.streamRenderer;
+ }
+
+ /**
+ * add a mapping from element name to maker.
+ *
+ * @param namespaceURI namespace URI of formatting object element
+ * @param maker Maker for class representing formatting object
+ */
+ public void addMapping(String namespaceURI, HashMap table) {
+ this.fobjTable.put(namespaceURI, table);
+ this.namespaces.add(namespaceURI.intern());
+ }
+
+ /**
+ * add a mapping from element name to maker.
+ *
+ * @param namespaceURI namespace URI of formatting object element
+ * @param maker Maker for class representing formatting object
+ */
+ public void addPropertyList(String namespaceURI, HashMap list) {
+ PropertyListBuilder plb;
+ plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
+ if (plb == null) {
+ plb = new PropertyListBuilder();
+ plb.addList(list);
+ this.propertylistTable.put(namespaceURI, plb);
+ } else {
+ plb.addList(list);
+ }
+ }
+
+ /**
+ * add a mapping from element name to maker.
+ *
+ * @param namespaceURI namespace URI of formatting object element
+ * @param localName local name of formatting object element
+ * @param maker Maker for class representing formatting object
+ */
+ public void addElementPropertyList(String namespaceURI, String localName,
+ HashMap list) {
+ PropertyListBuilder plb;
+ plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
+ if (plb == null) {
+ plb = new PropertyListBuilder();
+ plb.addElementList(localName, list);
+ this.propertylistTable.put(namespaceURI, plb);
+ } else {
+ plb.addElementList(localName, list);
+ }
+ }
+
+ public void addPropertyListBuilder(String namespaceURI,
+ PropertyListBuilder propbuilder) {
+ PropertyListBuilder plb;
+ plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
+ if (plb == null) {
+ this.propertylistTable.put(namespaceURI, propbuilder);
+ } else {
+ // Error already added
+ }
+ }
+
+ /**
+ * SAX Handler for characters
+ */
+ public void characters(char data[], int start, int length) {
+ if(currentFObj != null) {
+ currentFObj.addCharacters(data, start, length);
+ }
+ }
+
+ /**
+ * SAX Handler for the end of an element
+ */
+ public void endElement(String uri, String localName, String rawName)
+ throws SAXException {
+ currentFObj.end();
+
+ //
+ // [EMAIL PROTECTED] - tell the stream renderer to render
+ // this page-sequence
+ //
+ if(currentFObj instanceof PageSequence) {
+ streamRenderer.render((PageSequence) currentFObj);
+ } else if(currentFObj instanceof ExtensionObj) {
+ if(!(currentFObj.getParent() instanceof ExtensionObj)) {
+ streamRenderer.addExtension((ExtensionObj)currentFObj);
+ }
+ }
+
+ currentFObj = (FObj)currentFObj.getParent();
+ }
+
+ /**
+ * SAX Handler for the start of the document
+ */
+ public void startDocument()
+ throws SAXException {
+ rootFObj = null; // allows FOTreeBuilder to be reused
+ log.info("building formatting object tree");
+ streamRenderer.startRenderer();
+ }
+
+ public void endDocument()
+ throws SAXException {
+ log.info("Parsing of document complete, stopping renderer");
+ streamRenderer.stopRenderer();
+ }
+
+ /**
+ * SAX Handler for the start of an element
+ */
+ public void startElement(String uri, String localName, String rawName,
+ Attributes attlist) throws SAXException {
+ /* the formatting object started */
+ FObj fobj;
+
+ /* the maker for the formatting object started */
+ FObj.Maker fobjMaker = null;
+
+ /* look up Maker for the element */
+ HashMap table = (HashMap)fobjTable.get(uri);
+ if(table != null) {
+ fobjMaker = (FObj.Maker)table.get(localName);
+ }
+
+ PropertyListBuilder currentListBuilder =
+ (PropertyListBuilder)this.propertylistTable.get(uri);
+
+ boolean foreignXML = false;
+ if (fobjMaker == null) {
+ String fullName = uri + "^" + localName;
+ if (!this.unknownFOs.containsKey(fullName)) {
+ this.unknownFOs.put(fullName, "");
+ log.error("Unknown formatting object "
+ + fullName);
+ }
+ if(namespaces.contains(uri.intern())) {
+ // fall back
+ fobjMaker = new Unknown.Maker();
+ } else {
+ fobjMaker = new UnknownXMLObj.Maker(uri, localName);
+ foreignXML = true;
+ }
+ }
+
+ try {
+ PropertyList list = null;
+ if (currentListBuilder != null) {
+ list =
+ currentListBuilder.makeList(uri, localName, attlist,
+ (currentFObj == null) ? null
+ : currentFObj.properties,
currentFObj);
+ } else if(foreignXML) {
+ list = new DirectPropertyListBuilder.AttrPropertyList(attlist);
+ } else {
+ if(currentFObj == null) {
+ throw new FOPException("Invalid XML or missing namespace");
+ }
+ list = currentFObj.properties;
+ }
+ fobj = fobjMaker.make(currentFObj, list);
+ fobj.setLogger(log);
+ } catch (FOPException e) {
+ throw new SAXException(e);
+ }
+
+ if (rootFObj == null) {
+ rootFObj = fobj;
+ if (!fobj.getName().equals("fo:root")) {
+ throw new SAXException(new FOPException("Root element must"
+ + " be root, not "
+ + fobj.getName()));
+ }
+ } else if(!(fobj instanceof org.apache.fop.fo.pagination.PageSequence)) {
+ currentFObj.addChild(fobj);
+ }
+
+ currentFObj = fobj;
+ }
+
+ public void reset() {
+ currentFObj = null;
+ rootFObj = null;
+ streamRenderer = null;
+ }
+
+ public boolean hasData() {
+ return (rootFObj != null);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]