You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by pb...@apache.org on 2004/04/16 07:09:10 UTC
cvs commit: xml-fop/src/java/org/apache/fop/fo/flow FoPageSequence.java
pbwest 2004/04/15 22:09:10
Modified: src/java/org/apache/fop/fo/flow Tag: FOP_0-20-0_Alt-Design
FoPageSequence.java
Log:
Added HashMap of ArrayLists of static-content subtrees, indexed by flow-name
Provide access to umodifiable Map of above
Revision Changes Path
No revision
No revision
1.1.2.12 +58 -7 xml-fop/src/java/org/apache/fop/fo/flow/Attic/FoPageSequence.java
Index: FoPageSequence.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Attic/FoPageSequence.java,v
retrieving revision 1.1.2.11
retrieving revision 1.1.2.12
diff -u -r1.1.2.11 -r1.1.2.12
--- FoPageSequence.java 25 Feb 2004 23:40:28 -0000 1.1.2.11
+++ FoPageSequence.java 16 Apr 2004 05:09:10 -0000 1.1.2.12
@@ -21,9 +21,16 @@
package org.apache.fop.fo.flow;
// FOP
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.Set;
import org.apache.fop.apps.FOPException;
import org.apache.fop.datastructs.TreeException;
@@ -97,6 +104,20 @@
private int title = -1;
/** Child index of first fo:static-content child. */
private int firstStaticContent = -1;
+ /**
+ * Private map of <code>List</code>s of static-content subtrees hashed on
+ * flow-name. Note that there is no restriction on multiple
+ * <code>fo:static-content</code> elements being assigned to a single
+ * <code>flow-name</code>, so the objects keyed by <code>flow-name</code>
+ * must be able to hold more than one element; hence <code>List</code>s.
+ *
+ * Each element of the <code>HashMap</code>, keyed on the
+ * <code>flow-name</code> is an <code>ArrayList</code> containing one or
+ * more instances of <code>FoStaticContent</code>.
+ */
+ private HashMap staticSubtrees = null;
+ /** Unmodifiable version of <code>staticSubtrees</code> */
+ public Map staticContents = null;
/** Child index of fo:flow child. */
private int flowChild = -1;
@@ -127,18 +148,48 @@
namespaces.relinquishEvent(ev);
} // else ignore
- // Look for zero or more static-content
+ // Look for zero or more static-content subtrees
nowProcessing = "static-content";
while ((ev = xmlevents.expectStartElement
(FObjectNames.STATIC_CONTENT, XmlEvent.DISCARD_W_SPACE))
!= null) {
// Loop over remaining fo:static-content
- if (firstStaticContent == -1)
+ if (firstStaticContent == -1) {
firstStaticContent = numChildren();
- new FoStaticContent(getFOTree(), this, (FoXmlEvent)ev);
+ staticSubtrees = new HashMap();
+ }
+ FoStaticContent statContent =
+ new FoStaticContent(getFOTree(), this, (FoXmlEvent)ev);
namespaces.relinquishEvent(ev);
+ // Collect the static-content subtrees for this page-sequence
+ String flowname = statContent.getFlowName();
+ if (! staticSubtrees.containsKey(flowname)) {
+ // Create a new list for this key
+ staticSubtrees.put(flowname, new ArrayList(1));
+ }
+ // Add an entry to an existing List
+ ArrayList statconsList =
+ (ArrayList)(staticSubtrees.get(flowname));
+ statconsList.add(statContent);
+ }
+ // Create the unmodifiable map of unmodifiable lists
+ // TODO make the contents of the events buffer unmodifiable
+ // Each value in the Map is an ArrayList. Iterate over all of the
+ // entries, replacing the ArrayList value in each Map.Entry with an
+ // unmodifiableList constructed from the ArrayList
+ if (staticSubtrees != null) {
+ Set entries = staticSubtrees.entrySet();
+ Iterator iter = entries.iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = (Map.Entry)(iter.next());
+ entry.setValue(
+ Collections.unmodifiableList(
+ (List)(entry.getValue())));
+ }
+ // Now make an unmodifiableMap from the overall HashMap
+ // of flow-name indexed ArrayLists
+ staticContents = Collections.unmodifiableMap(staticSubtrees);
}
-
// Generate a null page for the flow(s)
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org