Mercurial > repos > pfrommolt > ngsrich
comparison NGSrich_0.5.5/src/org/jdom/output/NamespaceStack.java @ 0:89ad0a9cca52 default tip
Uploaded
author | pfrommolt |
---|---|
date | Mon, 21 Nov 2011 08:12:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:89ad0a9cca52 |
---|---|
1 /*-- | |
2 | |
3 $Id: NamespaceStack.java,v 1.14 2007/11/10 05:29:01 jhunter Exp $ | |
4 | |
5 Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin. | |
6 All rights reserved. | |
7 | |
8 Redistribution and use in source and binary forms, with or without | |
9 modification, are permitted provided that the following conditions | |
10 are met: | |
11 | |
12 1. Redistributions of source code must retain the above copyright | |
13 notice, this list of conditions, and the following disclaimer. | |
14 | |
15 2. Redistributions in binary form must reproduce the above copyright | |
16 notice, this list of conditions, and the disclaimer that follows | |
17 these conditions in the documentation and/or other materials | |
18 provided with the distribution. | |
19 | |
20 3. The name "JDOM" must not be used to endorse or promote products | |
21 derived from this software without prior written permission. For | |
22 written permission, please contact <request_AT_jdom_DOT_org>. | |
23 | |
24 4. Products derived from this software may not be called "JDOM", nor | |
25 may "JDOM" appear in their name, without prior written permission | |
26 from the JDOM Project Management <request_AT_jdom_DOT_org>. | |
27 | |
28 In addition, we request (but do not require) that you include in the | |
29 end-user documentation provided with the redistribution and/or in the | |
30 software itself an acknowledgement equivalent to the following: | |
31 "This product includes software developed by the | |
32 JDOM Project (http://www.jdom.org/)." | |
33 Alternatively, the acknowledgment may be graphical using the logos | |
34 available at http://www.jdom.org/images/logos. | |
35 | |
36 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |
37 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
38 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
39 DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT | |
40 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
41 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
42 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |
43 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
44 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
45 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |
46 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
47 SUCH DAMAGE. | |
48 | |
49 This software consists of voluntary contributions made by many | |
50 individuals on behalf of the JDOM Project and was originally | |
51 created by Jason Hunter <jhunter_AT_jdom_DOT_org> and | |
52 Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information | |
53 on the JDOM Project, please see <http://www.jdom.org/>. | |
54 | |
55 */ | |
56 package org.jdom.output; | |
57 | |
58 import java.util.*; | |
59 | |
60 import org.jdom.Namespace; | |
61 | |
62 /** | |
63 * A non-public utility class used by both <code>{@link XMLOutputter}</code> and | |
64 * <code>{@link SAXOutputter}</code> to manage namespaces in a JDOM Document | |
65 * during output. | |
66 * | |
67 * @version $Revision: 1.14 $, $Date: 2007/11/10 05:29:01 $ | |
68 * @author Elliotte Rusty Harolde | |
69 * @author Fred Trimble | |
70 * @author Brett McLaughlin | |
71 */ | |
72 class NamespaceStack { | |
73 | |
74 private static final String CVS_ID = | |
75 "@(#) $RCSfile: NamespaceStack.java,v $ $Revision: 1.14 $ $Date: 2007/11/10 05:29:01 $ $Name: jdom_1_1_1 $"; | |
76 | |
77 /** The prefixes available */ | |
78 private Stack prefixes; | |
79 | |
80 /** The URIs available */ | |
81 private Stack uris; | |
82 | |
83 /** | |
84 * This creates the needed storage. | |
85 */ | |
86 NamespaceStack() { | |
87 prefixes = new Stack(); | |
88 uris = new Stack(); | |
89 } | |
90 | |
91 /** | |
92 * This will add a new <code>{@link Namespace}</code> | |
93 * to those currently available. | |
94 * | |
95 * @param ns <code>Namespace</code> to add. | |
96 */ | |
97 public void push(Namespace ns) { | |
98 prefixes.push(ns.getPrefix()); | |
99 uris.push(ns.getURI()); | |
100 } | |
101 | |
102 /** | |
103 * This will remove the topmost (most recently added) | |
104 * <code>{@link Namespace}</code>, and return its prefix. | |
105 * | |
106 * @return <code>String</code> - the popped namespace prefix. | |
107 */ | |
108 public String pop() { | |
109 String prefix = (String)prefixes.pop(); | |
110 uris.pop(); | |
111 | |
112 return prefix; | |
113 } | |
114 | |
115 /** | |
116 * This returns the number of available namespaces. | |
117 * | |
118 * @return <code>int</code> - size of the namespace stack. | |
119 */ | |
120 public int size() { | |
121 return prefixes.size(); | |
122 } | |
123 | |
124 /** | |
125 * Given a prefix, this will return the namespace URI most | |
126 * rencently (topmost) associated with that prefix. | |
127 * | |
128 * @param prefix <code>String</code> namespace prefix. | |
129 * @return <code>String</code> - the namespace URI for that prefix. | |
130 */ | |
131 public String getURI(String prefix) { | |
132 int index = prefixes.lastIndexOf(prefix); | |
133 if (index == -1) { | |
134 return null; | |
135 } | |
136 String uri = (String)uris.elementAt(index); | |
137 return uri; | |
138 } | |
139 | |
140 /** | |
141 * This will print out the size and current stack, from the | |
142 * most recently added <code>{@link Namespace}</code> to | |
143 * the "oldest," all to <code>System.out</code>. | |
144 */ | |
145 public String toString() { | |
146 StringBuffer buf = new StringBuffer(); | |
147 String sep = System.getProperty("line.separator"); | |
148 buf.append("Stack: " + prefixes.size() + sep); | |
149 for (int i = 0; i < prefixes.size(); i++) { | |
150 buf.append(prefixes.elementAt(i) + "&" + uris.elementAt(i) + sep); | |
151 } | |
152 return buf.toString(); | |
153 } | |
154 } |