KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > xml > CharacterDataImpl


1 package org.enhydra.xml;
2
3 import org.w3c.dom.CharacterData JavaDoc;
4 import org.w3c.dom.DOMException JavaDoc;
5 import org.w3c.dom.Node JavaDoc;
6
7 /**
8  * @author Tweety
9  *
10  * A class representing a node in a meta-data tree, which implements
11  * the <a HREF="../../../../api/org/w3c/dom/CharacterData.html">
12  *
13  * @version 1.0
14  */

15 public class CharacterDataImpl extends NodeImpl implements CharacterData JavaDoc {
16     
17     
18     /**
19      * Constructs an empty <code>CharacterDataImpl</code>.
20      */

21     public CharacterDataImpl() {
22     }
23     
24     /**
25      * Constructs a <code>CharacterDataImpl</code> from the
26      * given node as <code>Node</code>.
27      *
28      * @param node, as a <code>Node</code>.
29      */

30     public CharacterDataImpl(Node JavaDoc node) {
31         super(node);
32     }
33
34
35     /**
36      * Returns node value.
37      *
38      * @return node value, as <code>String</code>.
39      *
40      * @see org.w3c.dom.CharacterData#getData().
41      */

42     public String JavaDoc getData() throws DOMException JavaDoc {
43         return nodeValue;
44     }
45
46     /**
47      * Sets the new value of this node.
48      *
49      * @param data the new data
50      *
51      * @see org.w3c.dom.CharacterData#setData(String).
52      */

53     public void setData(String JavaDoc data) throws DOMException JavaDoc {
54         nodeValue = data;
55     }
56
57
58     /**
59      * Returns the substring from the node's value.
60      *
61      * @param offset the begin index of the substring.
62      * @param count the number of characters.
63      *
64      * @return substring of the node's value.
65      *
66      * @see org.w3c.dom.CharacterData#substringData(int, int).
67      */

68     public String JavaDoc substringData(int offset, int count) throws DOMException JavaDoc {
69         int length = nodeValue.length();
70         if (count < 0 || offset < 0 || offset > length - 1)
71             throw new DOMException JavaDoc(DOMException.INDEX_SIZE_ERR, "Index out of bounds");
72
73         int tailIndex = length;
74         if(offset + count < length)
75             tailIndex = offset + count;
76         return nodeValue.substring(offset, tailIndex);
77     }
78
79
80     /**
81      * Appends data to the node's value.
82      *
83      * @param arg the data to append to the node's value.
84      *
85      * @see org.w3c.dom.CharacterData#appendData(String).
86      */

87     public void appendData(String JavaDoc arg) {
88         nodeValue += arg;
89     }
90
91
92     /**
93      * Inserts substring into node's value string.
94      *
95      * @param offset the begin index of the substring.
96      * @param arg the <code>String</code> to insert.
97      *
98      * @see org.w3c.dom.CharacterData#insertData(int, String).
99      */

100     public void insertData(int offset, String JavaDoc arg) throws DOMException JavaDoc {
101         try {
102             nodeValue = new StringBuffer JavaDoc(nodeValue).insert(offset, arg).toString();
103         } catch (StringIndexOutOfBoundsException JavaDoc e) {
104             throw new DOMException JavaDoc(DOMException.INDEX_SIZE_ERR, "Index out of bounds");
105         }
106     }
107
108
109     /**
110      * Deletes characters from the node's value string.
111      *
112      * @param offset the begin index of the substring.
113      * @param count the number of characters.
114      *
115      * @see org.w3c.dom.CharacterData#deleteData(int, int).
116      */

117     public void deleteData(int offset, int count) throws DOMException JavaDoc {
118         int tailLength = nodeValue.length() - count - offset;
119         if(nodeValue.length() - count - offset < 0)
120             tailLength = 0;
121         try {
122             nodeValue = nodeValue.substring(0, offset) +
123                 (tailLength > 0 ? nodeValue.substring(offset + count, offset + count + tailLength) : "");
124         } catch (StringIndexOutOfBoundsException JavaDoc e) {
125             throw new DOMException JavaDoc(DOMException.INDEX_SIZE_ERR, "Index out of bounds");
126         }
127     }
128
129
130     /**
131      * Replaces characters in the node's value string.
132      *
133      * @param offset the begin index of the substring.
134      * @param count the number of characters.
135      * @param arg the <code>String</code> to insert.
136      *
137      * @see org.w3c.dom.CharacterData#replaceData(int, int, String).
138      */

139     public void replaceData(int offset, int count, String JavaDoc arg) throws DOMException JavaDoc {
140         deleteData(offset, count);
141         insertData(offset, arg);
142     }
143
144
145     /**
146      * Returns the namespace of the node.
147      *
148      * @return the namespace of the node.
149      *
150      * @see org.w3c.dom.Node#getNamespaceURI().
151      */

152     public String JavaDoc getNamespaceURI() {
153         return super.getNamespaceURI();
154     }
155     
156
157 }
158
Popular Tags