001: /*--
002:
003: $Id: EntityRef.java,v 1.1 2005/04/27 09:32:38 wittek Exp $
004:
005: Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
006: All rights reserved.
007:
008: Redistribution and use in source and binary forms, with or without
009: modification, are permitted provided that the following conditions
010: are met:
011:
012: 1. Redistributions of source code must retain the above copyright
013: notice, this list of conditions, and the following disclaimer.
014:
015: 2. Redistributions in binary form must reproduce the above copyright
016: notice, this list of conditions, and the disclaimer that follows
017: these conditions in the documentation and/or other materials
018: provided with the distribution.
019:
020: 3. The name "JDOM" must not be used to endorse or promote products
021: derived from this software without prior written permission. For
022: written permission, please contact <request_AT_jdom_DOT_org>.
023:
024: 4. Products derived from this software may not be called "JDOM", nor
025: may "JDOM" appear in their name, without prior written permission
026: from the JDOM Project Management <request_AT_jdom_DOT_org>.
027:
028: In addition, we request (but do not require) that you include in the
029: end-user documentation provided with the redistribution and/or in the
030: software itself an acknowledgement equivalent to the following:
031: "This product includes software developed by the
032: JDOM Project (http://www.jdom.org/)."
033: Alternatively, the acknowledgment may be graphical using the logos
034: available at http://www.jdom.org/images/logos.
035:
036: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
040: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: SUCH DAMAGE.
048:
049: This software consists of voluntary contributions made by many
050: individuals on behalf of the JDOM Project and was originally
051: created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
052: Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
053: on the JDOM Project, please see <http://www.jdom.org/>.
054:
055: */
056:
057: package org.jdom;
058:
059: /**
060: * An XML entity reference. Methods allow the user to manage its name, public
061: * id, and system id.
062: *
063: * @version $Revision: 1.1 $, $Date: 2005/04/27 09:32:38 $
064: * @author Brett McLaughlin
065: * @author Jason Hunter
066: * @author Philip Nelson
067: */
068: public class EntityRef extends Content {
069:
070: private static final String CVS_ID = "@(#) $RCSfile: EntityRef.java,v $ $Revision: 1.1 $ $Date: 2005/04/27 09:32:38 $ $Name: $";
071:
072: /** The name of the <code>EntityRef</code> */
073: protected String name;
074:
075: /** The PublicID of the <code>EntityRef</code> */
076: protected String publicID;
077:
078: /** The SystemID of the <code>EntityRef</code> */
079: protected String systemID;
080:
081: /**
082: * Default, no-args constructor for implementations to use if needed.
083: */
084: protected EntityRef() {
085: }
086:
087: /**
088: * This will create a new <code>EntityRef</code> with the supplied name.
089: *
090: * @param name <code>String</code> name of element.
091: * @throws IllegalNameException if the given name is not a legal
092: * XML name.
093: */
094: public EntityRef(String name) {
095: this (name, null, null);
096: }
097:
098: /**
099: * This will create a new <code>EntityRef</code>
100: * with the supplied name and system id.
101: *
102: * @param name <code>String</code> name of element.
103: * @param systemID system id of the entity reference being constructed
104: * @throws IllegalNameException if the given name is not a legal
105: * XML name.
106: * @throws IllegalDataException if the given system ID is not a legal
107: * system literal.
108: */
109: public EntityRef(String name, String systemID) {
110: this (name, null, systemID);
111: }
112:
113: /**
114: * This will create a new <code>EntityRef</code>
115: * with the supplied name, public id, and system id.
116: *
117: * @param name <code>String</code> name of element.
118: * @param publicID public id of the entity reference being constructed
119: * @param systemID system id of the entity reference being constructed
120: * @throws IllegalDataException if the given system ID is not a legal
121: * system literal or the the given public ID is not a
122: * legal public ID
123: * @throws IllegalNameException if the given name is not a legal
124: * XML name.
125: */
126: public EntityRef(String name, String publicID, String systemID) {
127: setName(name);
128: setPublicID(publicID);
129: setSystemID(systemID);
130: }
131:
132: /**
133: * This returns the name of the <code>EntityRef</code>.
134: *
135: * @return <code>String</code> - entity name.
136: */
137: public String getName() {
138: return name;
139: }
140:
141: /**
142: * Returns the empty string since entity references don't have an XPath
143: * 1.0 string value.
144: * @return the empty string
145: */
146: public String getValue() {
147: return ""; // entity references don't have XPath string values
148: }
149:
150: /**
151: * This will return the publid ID of this <code>EntityRef</code>.
152: * If there is no public ID, then this returns <code>null</code>.
153: *
154: * @return public ID of this <code>EntityRef</code>
155: */
156: public String getPublicID() {
157: return publicID;
158: }
159:
160: /**
161: * This will return the system ID of this <code>EntityRef</code>.
162: * If there is no system ID, then this returns <code>null</code>.
163: *
164: * @return system ID of this <code>EntityRef</code>
165: */
166: public String getSystemID() {
167: return systemID;
168: }
169:
170: /**
171: * This will set the name of this <code>EntityRef</code>.
172: *
173: * @param name new name of the entity
174: * @return this <code>EntityRef</code> modified.
175: * @throws IllegalNameException if the given name is not a legal
176: * XML name.
177: */
178: public EntityRef setName(String name) {
179: // This can contain a colon so we use checkXMLName()
180: // instead of checkElementName()
181: String reason = Verifier.checkXMLName(name);
182: if (reason != null) {
183: throw new IllegalNameException(name, "EntityRef", reason);
184: }
185: this .name = name;
186: return this ;
187: }
188:
189: /**
190: * This will set the public ID of this <code>EntityRef</code>.
191: *
192: * @param publicID new public id
193: * @return this <code>EntityRef</code> modified.
194: * @throws IllegalDataException if the given public ID is not a legal
195: * public ID.
196: */
197: public EntityRef setPublicID(String publicID) {
198: String reason = Verifier.checkPublicID(publicID);
199: if (reason != null) {
200: throw new IllegalDataException(publicID, "EntityRef",
201: reason);
202: }
203: this .publicID = publicID;
204: return this ;
205: }
206:
207: /**
208: * This will set the system ID of this <code>EntityRef</code>.
209: *
210: * @param systemID new system id
211: * @throws IllegalDataException if the given system ID is not a legal
212: * system literal.
213: * @return this <code>EntityRef</code> modified.
214: */
215: public EntityRef setSystemID(String systemID) {
216: String reason = Verifier.checkSystemLiteral(systemID);
217: if (reason != null) {
218: throw new IllegalDataException(systemID, "EntityRef",
219: reason);
220: }
221: this .systemID = systemID;
222: return this ;
223: }
224:
225: /**
226: * This returns a <code>String</code> representation of the
227: * <code>EntityRef</code>, suitable for debugging.
228: *
229: * @return <code>String</code> - information about the
230: * <code>EntityRef</code>
231: */
232: public String toString() {
233: return new StringBuffer().append("[EntityRef: ").append("&")
234: .append(name).append(";").append("]").toString();
235: }
236: }
|