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 } |
