pbwest 2003/01/20 06:46:51 Added: src/documentation/content/design/alt.design/properties FOAttributes.html Log: Code documentation Revision Changes Path 1.1 xml-fop/src/documentation/content/design/alt.design/properties/FOAttributes.html Index: FOAttributes.html =================================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <!-- Created by htmlize-0.67 in css mode. --> <html> <head> <title>FOAttributes.java</title> <style type="text/css"> <!-- body { color: #000000; background-color: #faf0e6; } /* default */ .jde-java-font-lock-number { color: #bc8f8f; background-color: #faf0e6; } /* jde-java-font-lock-number-face */ .function-name { color: #8b2323; background-color: #faf0e6; } /* font-lock-function-name-face */ .jde-java-font-lock-italic { background-color: #faf0e6; font-style: italic; } /* jde-java-font-lock-italic-face */ .jde-java-font-lock-modifier { color: #da70d6; background-color: #faf0e6; } /* jde-java-font-lock-modifier-face */ .keyword { color: #8b0000; background-color: #faf0e6; } /* font-lock-keyword-face */ .variable-name { color: #8b008b; background-color: #faf0e6; } /* font-lock-variable-name-face */ .string { color: #008b00; background-color: #faf0e6; } /* font-lock-string-face */ .jde-java-font-lock-package { color: #0000cd; background-color: #faf0e6; } /* jde-java-font-lock-package-face */ .jde-java-font-lock-constant { color: #5f9ea0; background-color: #faf0e6; } /* jde-java-font-lock-constant-face */ .type { color: #4682b4; background-color: #faf0e6; } /* font-lock-type-face */ .jde-java-font-lock-doc-tag { color: #008b00; background-color: #faf0e6; } /* jde-java-font-lock-doc-tag-face */ .comment { color: #00008b; background-color: #faf0e6; } /* font-lock-comment-face */ .reference { color: #cd0000; background-color: #faf0e6; } /* font-lock-reference-face */ a { color: inherit; background-color: inherit; font: inherit; text-decoration: inherit; } a:hover { text-decoration: underline; } --> </style> </head> <body> <pre> <span class="keyword">package</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">apps</span>.<span class="type">FOPException</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="jde-java-font-lock-package">expr</span>.<span class="type">PropertyException</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="type">PropertyConsts</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="type">FObjectNames</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datatypes</span>.<span class="type">Ints</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">messaging</span>.<span class="type">MessageHandler</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">xml</span>.<span class="type">FoXMLEvent</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">xml</span>.<span class="type">XMLNamespaces</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">xml</span>.<span class="jde-java-font-lock-package">sax</span>.<span class="type">Attributes</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Iterator</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">ArrayList</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">HashMap</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">List</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Map</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Collections</span>; <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Arrays</span>; <span class="comment">/* * FOAttributes.java * $Id: FOAttributes.html,v 1.1 2003/01/20 14:46:51 pbwest Exp $ * * Created: Wed Nov 14 15:19:51 2001 * 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. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter B. West</a> * @version $Revision: 1.1 $ $Name: $ */</span> <span class="comment">/** * The FO Attributes data structures and methods needed to manage the * Attributes associated with FO nodes. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="keyword">class</span> <span class="function-name" id="FOAttributesClass">FOAttributes</span> { <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">String</span> <span class="variable-name" id="tag">tag</span> = "<span class="string">$Name: $</span>"; <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">String</span> <span class="variable-name" id="revision">revision</span> = "<span class="string">$Revision: 1.1 $</span>"; <span class="comment">/** * <i></span><span class="jde-java-font-lock-italic">nSpaceAttrMaps</span><span class="comment"></i> is an <tt>ArrayList</tt> to hold the array of * <tt>HashMap</tt>s which contain the attribute lists for each * namespace which may be active for a particular FO element. The * <tt>ArrayList</tt> is indexed by the URIIndex for this namespace * which is maintained in an <tt>XMLNamespaces</tt> object by the * <tt>FOTree</tt> object which is processing the FO input. The * values in the <tt>HashMap</tt>s are indexed by the local name of the * attribute. * The <tt>ArrayList</tt> will not be created for a particular instance * of <tt>FOAttributes</tt> unless a namespace other than the standard * XSL namespace is activated for this instance. * See <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i>. */</span> <span class="jde-java-font-lock-modifier">private</span> <span class="type">ArrayList</span> <span class="variable-name" id="nSpaceAttrMaps">nSpaceAttrMaps</span>; <span class="comment">/** * <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i> is a <tt>HashMap</tt> to hold the FO namespace * attribute list specified in the FO element with which this list is * associated. The <tt>String</tt> attribute value is stored * indexed by the integer constant property identifier from * <tt>PropertyConsts</tt>. */</span> <span class="jde-java-font-lock-modifier">private</span> <span class="type">HashMap</span> <span class="variable-name" id="foAttrMap">foAttrMap</span> = <span class="keyword">new</span> <span class="type">HashMap</span>(<span class="jde-java-font-lock-number">0</span>); <span class="comment">/** * A sorted array of the keys (property indices) of the values in * <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i>. */</span> <span class="jde-java-font-lock-modifier">private</span> <span class="type">Integer</span>[] <span class="variable-name" id="foAttrKeys">foAttrKeys</span> = <span class="jde-java-font-lock-constant" id="null">null</span>; <span class="comment">/** * A static array of <tt>Integer</tt> as a template for the generation * of the <i></span><span class="jde-java-font-lock-italic">foAttrKeys</span><span class="comment"></i> array. */</span> <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">Integer</span>[] <span class="variable-name" id="integerArray">integerArray</span> = <span class="keyword">new</span> <span class="type">Integer</span>[] { Ints.consts.get(<span class="jde-java-font-lock-number">0</span>) }; <span class="comment">/** * Construct an <i></span><span class="jde-java-font-lock-italic">FOAttributes</span><span class="comment"></i> object. * <p>The <tt>Attributes</tt> object on the event is scanned, and each * attribute is examined. If the attribute is in the default namespace * for fo: attributes, it is an fo: property, and its value is entered * into the <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i> <tt>Hashmap</tt> indexed by the property * index. * <p>If the attribute does not belong to the default namespace, its * value is entered into the appropriate <tt>HashMap</tt> in the * <tt>ArrayList</tt> <i></span><span class="jde-java-font-lock-italic">nSpaceAttrMaps</span><span class="comment"></i>, indexed by the attribute's * local name. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="event">event</span><span class="comment"> - the FO XML event which triggered construction of the * parent <tt>FONode</tt>. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="foNode">foNode</span><span class="comment"> - the <tt>FONode</tt> with which these attributes are * associated. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="function-name" id="FOAttributes">FOAttributes</span>(<span class="type">FoXMLEvent</span> <span class="variable-name">event</span>, <span class="type">FONode</span> <span class="variable-name">foNode</span>) <span class="keyword">throws</span> <span class="type">FOPException</span> { <span class="comment">// If the event is null, there is no event associated with this </span> <span class="comment">// node, probably because this is a manufactured node; e.g., </span> <span class="comment">// an "invented" FopageSequenceMaster. The default initialisation </span> <span class="comment">// includes an empty foAttrMap HashMap. </span> <span class="keyword">if</span> (event == <span class="jde-java-font-lock-constant">null</span>) <span class="keyword">return</span>; <span class="keyword">if</span> (event.getFoType() == FObjectNames.<span class="jde-java-font-lock-constant" id="PCDATA">PCDATA</span>) <span class="keyword">return</span>; <span class="comment">// go with the empty foAttrMap </span> <span class="comment">// Create the foAttrMap. </span> <span class="type">Attributes</span> <span class="variable-name" id="attributes">attributes</span> = event.getAttributes(); <span class="keyword">if</span> (attributes == <span class="jde-java-font-lock-constant">null</span>) <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">FOPException</span> ("<span class="string">No Attributes in XMLEvent</span>"); <span class="type">int</span> <span class="variable-name" id="propIndex">propIndex</span>; <span class="type">HashMap</span> <span class="variable-name" id="tmpHash">tmpHash</span>; <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name" id="i">i</span> = <span class="jde-java-font-lock-number">0</span>; i < attributes.getLength(); i++) { <span class="type">String</span> <span class="variable-name" id="attrUri">attrUri</span> = attributes.getURI(i); <span class="type">String</span> <span class="variable-name" id="attrLocalname">attrLocalname</span> = attributes.getLocalName(i); <span class="type">String</span> <span class="variable-name" id="attrQName">attrQName</span> = attributes.getQName(i); <span class="type">int</span> <span class="variable-name" id="sep">sep</span> = attrQName.indexOf('<span class="string">:</span>'); <span class="type">String</span> <span class="variable-name" id="prefix">prefix</span> = attrQName.substring(<span class="jde-java-font-lock-number">0</span>, (sep == -<span class="jde-java-font-lock-number">1</span> ? <span class="jde-java-font-lock-number">0</span> : sep)); <span class="keyword">if</span> (prefix.equals("<span class="string">xmlns</span>")) <span class="keyword">break</span>; <span class="type">String</span> <span class="variable-name" id="attrValue">attrValue</span> = attributes.getValue(i); <span class="type">int</span> <span class="variable-name" id="attrUriIndex">attrUriIndex</span> = foNode.namespaces.getURIIndex(attrUri); <span class="comment">//System.out.println("FONode:" + event); </span> <span class="keyword">if</span> (attrUriIndex == XMLNamespaces.DefAttrNSIndex) { <span class="comment">// Standard FO namespace </span> <span class="comment">// Catch default namespace declaration here. </span> <span class="keyword">if</span> (attrLocalname.equals("<span class="string">xmlns</span>")) <span class="keyword">break</span>; <span class="comment">// Is this a known (valid) property? </span> propIndex = PropNames.getPropertyIndex(attrLocalname); <span class="comment">// Known attribute name </span> foAttrMap.put(Ints.consts.get(propIndex), attrValue); } <span class="keyword">else</span> { <span class="comment">// Not the XSL FO namespace </span> <span class="type">int</span> <span class="variable-name" id="j">j</span>; <span class="keyword">if</span> (nSpaceAttrMaps == <span class="jde-java-font-lock-constant">null</span>) { <span class="comment">//Create the list </span> System.out.println("<span class="string">Creating nSpaceAttrMaps</span>"); nSpaceAttrMaps = <span class="keyword">new</span> <span class="type">ArrayList</span>(attrUriIndex + <span class="jde-java-font-lock-number">1</span>); <span class="comment">// Add the fo list </span> <span class="keyword">for</span> (j = <span class="jde-java-font-lock-number">0</span>; j < XMLNamespaces.DefAttrNSIndex; j++) nSpaceAttrMaps.add(<span class="keyword">new</span> <span class="type">HashMap</span>(<span class="jde-java-font-lock-number">0</span>)); System.out.println("<span class="string">Adding foAttrMap</span>"); nSpaceAttrMaps.add(foAttrMap); } <span class="comment">// Make sure there are elements between the last current </span> <span class="comment">// and the one to be added </span> <span class="keyword">for</span> (j = nSpaceAttrMaps.size(); j <= attrUriIndex; j++) nSpaceAttrMaps.add(<span class="keyword">new</span> <span class="type">HashMap</span>(<span class="jde-java-font-lock-number">0</span>)); <span class="comment">// Does a HashMap exist for this namespace? </span> <span class="keyword">if</span> ((tmpHash = (<span class="type">HashMap</span>)nSpaceAttrMaps.get(attrUriIndex)) == <span class="jde-java-font-lock-constant">null</span>) { tmpHash = <span class="keyword">new</span> <span class="type">HashMap</span>(<span class="jde-java-font-lock-number">1</span>); nSpaceAttrMaps.set(attrUriIndex, tmpHash); } <span class="comment">// Now put this value in the HashMap </span> tmpHash.put(attrLocalname, attrValue); } } <span class="comment">// Set up the sorted array of the foAttr keys, if foAttrMap has </span> <span class="comment">// any entries. </span> <span class="keyword">if</span> (foAttrMap.size() > <span class="jde-java-font-lock-number">0</span>) { foAttrKeys = (<span class="type">Integer</span>[])(foAttrMap.keySet().toArray(integerArray)); Arrays.sort(foAttrKeys); } <span class="comment">// Finished with the Attributes object </span> event.setAttributes(<span class="jde-java-font-lock-constant">null</span>); } <span class="comment">/** * Get the default namespace attribute values as an unmodifiable * <tt>Map</tt>. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> a unmodifiable <tt>Map</tt> containing the the attribute * values for all of the default attribute namespace attributes in this * attribute list, indexed by the property name index from * <tt>PropNames</tt>. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">Map</span> <span class="function-name" id="getFixedFoAttrMap">getFixedFoAttrMap</span>() { <span class="keyword">return</span> Collections.unmodifiableMap((<span class="type">Map</span>)foAttrMap); } <span class="comment">/** * Get the <tt>HashMap</tt> of all default namespace attributes. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> <tt>HashMap</tt> <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i> containing the the attribute * values for all of the default attribute namespace attributes in this * attribute list, indexed by the property name index from * <tt>PropNames</tt>. This HashMap may be changed by the calling * process. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">HashMap</span> <span class="function-name" id="getFoAttrMap">getFoAttrMap</span>() { <span class="keyword">return</span> foAttrMap; } <span class="comment">/** * Get the sorted array of property index keys for the default namespace * attributes. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> <tt>Integer[]</tt> <i></span><span class="jde-java-font-lock-italic">foAttrKeys</span><span class="comment"></i> containing the the * sorted keys (the property indices from <tt>PropNames</tt>) of the * attribute values for all of the default attribute namespace attributes * in this attribute list. * Warning: This array may be changed by the calling process. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">Integer</span>[] <span class="function-name" id="getFoAttrKeys">getFoAttrKeys</span>() { <span class="keyword">return</span> foAttrKeys; } <span class="comment">/** * A convenience method for accessing attribute values from the default * attribute namespace. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="property">property</span><span class="comment"> an <tt>int</tt> containing the property name index * from <tt>PropNames</tt>. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> a <tt>String</tt> containing the associated property value. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">String</span> <span class="function-name" id="getFoAttrValue">getFoAttrValue</span>(<span class="type">int</span> <span class="variable-name">property</span>) { <span class="keyword">return</span> (<span class="type">String</span>)(foAttrMap.get(Ints.consts.get(property))); } <span class="comment">/** * A convenience method for accessing attribute values from the default * attribute namespace. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="propertyName">propertyName</span><span class="comment"> a <tt>String</tt> containing the property name. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> a <tt>String</tt> containing the associated property value. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">String</span> <span class="function-name">getFoAttrValue</span>(<span class="type">String</span> <span class="variable-name">propertyName</span>) <span class="keyword">throws</span> <span class="type">PropertyException</span> { <span class="keyword">return</span> getFoAttrValue(PropNames.getPropertyIndex(propertyName)); } <span class="comment">/** * Get an unmodifiable <tt>Map</tt> of the attribute values for a * particular namespace. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="uriIndex">uriIndex</span><span class="comment"> an <tt>int</tt> containing the index of the attribute * values namespace, maintained in an <tt>XMLEvent</tt> <tt>static</tt> * array. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> an unmodifiable <tt>Map</tt> of the attribute values * within the indexed namespace, for this attribute list, indexed by the * local name of the attribute. The <tt>Map</tt> returned is * derived from the one maintained in <i></span><span class="jde-java-font-lock-italic">nSpaceAttrMaps</span><span class="comment"></i>. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">Map</span> <span class="function-name" id="getAttrMap">getAttrMap</span>(<span class="type">int</span> <span class="variable-name">uriIndex</span>) { <span class="keyword">if</span> (uriIndex == XMLNamespaces.DefAttrNSIndex) <span class="keyword">return</span> Collections.unmodifiableMap((<span class="type">Map</span>)foAttrMap); <span class="keyword">if</span> (nSpaceAttrMaps != <span class="jde-java-font-lock-constant">null</span>) { <span class="keyword">if</span> (uriIndex >= nSpaceAttrMaps.size()) <span class="keyword">return</span> <span class="jde-java-font-lock-constant">null</span>; <span class="keyword">return</span> Collections.unmodifiableMap ((<span class="type">Map</span>)(nSpaceAttrMaps.get(uriIndex))); } <span class="keyword">else</span> { <span class="keyword">return</span> <span class="jde-java-font-lock-constant">null</span>; } } <span class="comment">/** * Get the value of an attribute in a particular namespace. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">uriIndex</span><span class="comment"> an <tt>int</tt> index of the URIs maintained * by <tt>XMLEvent</tt>. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="localName">localName</span><span class="comment"> a <tt>String</tt> with the local name of the * attribute. In the case of the default attribute namespace, this * will be the fo property name. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> a <tt>String</tt> containing the value of the attribute. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">String</span> <span class="function-name" id="getUriAttrValue">getUriAttrValue</span>(<span class="type">int</span> <span class="variable-name">uriIndex</span>, <span class="type">String</span> <span class="variable-name">localName</span>) <span class="keyword">throws</span> <span class="type">PropertyException</span> { <span class="keyword">if</span> (uriIndex == XMLNamespaces.DefAttrNSIndex) <span class="keyword">return</span> getFoAttrValue(PropNames.getPropertyIndex(localName)); <span class="keyword">return</span> (String) (((<span class="type">HashMap</span>)nSpaceAttrMaps.get(uriIndex)).get(localName)); } <span class="comment">/** * Get the size of the <i></span><span class="jde-java-font-lock-italic">foAttrMap</span><span class="comment"></i> <tt>HashMap</tt> * containing attributes for the default fo: namespace * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> an <tt>int</tt> containing the size. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">int</span> <span class="function-name" id="getFoAttrMapSize">getFoAttrMapSize</span>() { <span class="keyword">return</span> foAttrMap.size(); } <span class="comment">/** * Get the size of the <i></span><span class="jde-java-font-lock-italic">nSpaceAttrMaps</span><span class="comment"></i> <tt>ArrayList</tt> * containing attribute namespaces active in this set of attributes. * <i></span><span class="jde-java-font-lock-italic">N.B.</span><span class="comment"></i> this may be zero if only the default attribute * namespace has been seen in the attribute set. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> an <tt>int</tt> containing the size. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">int</span> <span class="function-name" id="getNSpaceAttrMapsSize">getNSpaceAttrMapsSize</span>() { <span class="keyword">if</span> (nSpaceAttrMaps == <span class="jde-java-font-lock-constant">null</span>) <span class="keyword">return</span> <span class="jde-java-font-lock-number">0</span>; <span class="keyword">return</span> nSpaceAttrMaps.size(); } <span class="comment">/** * Merge attributes from another <tt>FOAttributes</tt> into <i></span><span class="jde-java-font-lock-italic">this</span><span class="comment"></i>. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="foAttrs">foAttrs</span><span class="comment"> the <tt>FOAttributes</tt> containing the attributes * to merge. */</span> <span class="jde-java-font-lock-modifier">public</span> <span class="type">void</span> <span class="function-name" id="merge">merge</span>(<span class="type">FOAttributes</span> <span class="variable-name">foAttrs</span>) { foAttrMap.putAll(foAttrs.getFoAttrMap()); <span class="type">int</span> <span class="variable-name" id="attrLen">attrLen</span> = foAttrs.getNSpaceAttrMapsSize(); <span class="keyword">if</span> (attrLen != <span class="jde-java-font-lock-number">0</span>) { <span class="comment">// something to copy </span> <span class="keyword">if</span> (nSpaceAttrMaps == <span class="jde-java-font-lock-constant">null</span>) { <span class="comment">// no "foreign" attribute lists in this </span> <span class="comment">// copy the others in </span> nSpaceAttrMaps = <span class="keyword">new</span> <span class="type">ArrayList</span>(attrLen); } <span class="comment">// If the merging ArrayList of namespaces is larger, add the </span> <span class="comment">// extra elements and initialise each to an empty HashMap </span> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = nSpaceAttrMaps.size(); i < attrLen; i++) nSpaceAttrMaps.add(<span class="keyword">new</span> <span class="type">HashMap</span>(<span class="jde-java-font-lock-number">0</span>)); <span class="comment">// Except for foAttrs, which has already been merged, merge </span> <span class="comment">// the entries from the merging foAttrs </span> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i < attrLen; i++) { <span class="comment">// skip foAttrMap </span> <span class="keyword">if</span> (i == <span class="reference">XMLNamespaces</span>.<span class="type">DefAttrNSIndex</span>) <span class="keyword">continue</span>; ((<span class="type">HashMap</span>) nSpaceAttrMaps.get(i)) .putAll(foAttrs.getAttrMap(i)); } } } }<span class="comment">// FOAttributes </span></pre> </body> </html>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]