KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > org > apache > xerces > internal > impl > xs > opti > ElementImpl


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2001, 2002 The Apache Software Foundation. All rights
6  * 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 following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Xerces" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
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 APACHE SOFTWARE FOUNDATION OR
40  * ITS 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  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 2001, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package com.sun.org.apache.xerces.internal.impl.xs.opti;
59
60 import org.w3c.dom.Attr JavaDoc;
61 import org.w3c.dom.Document JavaDoc;
62 import org.w3c.dom.NamedNodeMap JavaDoc;
63 import org.w3c.dom.Node JavaDoc;
64
65 /**
66  * @author Rahul Srivastava, Sun Microsystems Inc.
67  * @author Sandy Gao, IBM
68  *
69  * @version $Id: ElementImpl.java,v 1.5 2003/07/24 15:14:42 neilg Exp $
70  */

71 public class ElementImpl extends DefaultElement {
72
73     SchemaDOM schemaDOM;
74     Attr JavaDoc[] attrs;
75     int row;
76     int col;
77     int parentRow;
78     
79     int line;
80     int column;
81
82     public ElementImpl(int line, int column) {
83         row = -1;
84         col = -1;
85         parentRow = -1;
86         nodeType = Node.ELEMENT_NODE;
87         
88         this.line = line;
89         this.column = column;
90     }
91     
92     
93     public ElementImpl(String JavaDoc prefix, String JavaDoc localpart, String JavaDoc rawname,
94                        String JavaDoc uri, int line, int column) {
95         super(prefix, localpart, rawname, uri, Node.ELEMENT_NODE);
96         row = -1;
97         col = -1;
98         parentRow = -1;
99
100         this.line = line;
101         this.column = column;
102     }
103
104
105     //
106
// org.w3c.dom.Node methods
107
//
108

109     public Document JavaDoc getOwnerDocument() {
110         return schemaDOM;
111     }
112     
113     
114     public Node JavaDoc getParentNode() {
115         return schemaDOM.relations[row][0];
116     }
117
118
119     public boolean hasChildNodes() {
120         if (parentRow == -1) {
121             return false;
122         }
123         else {
124             return true;
125         }
126     }
127
128
129     public Node JavaDoc getFirstChild() {
130         if (parentRow == -1) {
131             return null;
132         }
133         return schemaDOM.relations[parentRow][1];
134     }
135
136
137     public Node JavaDoc getLastChild() {
138         if (parentRow == -1) {
139             return null;
140         }
141         int i=1;
142         for (; i<schemaDOM.relations[parentRow].length; i++) {
143             if (schemaDOM.relations[parentRow][i] == null) {
144                 return schemaDOM.relations[parentRow][i-1];
145             }
146         }
147         if (i ==1) {
148             i++;
149         }
150         return schemaDOM.relations[parentRow][i-1];
151     }
152
153
154     public Node JavaDoc getPreviousSibling() {
155         if (col == 1) {
156             return null;
157         }
158         return schemaDOM.relations[row][col-1];
159     }
160
161
162     public Node JavaDoc getNextSibling() {
163         if (col == schemaDOM.relations[row].length-1) {
164             return null;
165         }
166         return schemaDOM.relations[row][col+1];
167     }
168
169
170     public NamedNodeMap JavaDoc getAttributes() {
171         return new NamedNodeMapImpl(attrs);
172     }
173
174
175     public boolean hasAttributes() {
176         return (attrs.length == 0 ? false : true);
177     }
178     
179
180     
181     //
182
// org.w3c.dom.Element methods
183
//
184

185     public String JavaDoc getTagName() {
186         return rawname;
187     }
188
189
190     public String JavaDoc getAttribute(String JavaDoc name) {
191     
192         for (int i=0; i<attrs.length; i++) {
193             if (attrs[i].getName().equals(name)) {
194                 return attrs[i].getValue();
195             }
196         }
197         return "";
198     }
199
200
201     public Attr JavaDoc getAttributeNode(String JavaDoc name) {
202         for (int i=0; i<attrs.length; i++) {
203             if (attrs[i].getName().equals(name)) {
204                 return attrs[i];
205             }
206         }
207         return null;
208     }
209
210
211     public String JavaDoc getAttributeNS(String JavaDoc namespaceURI, String JavaDoc localName) {
212         for (int i=0; i<attrs.length; i++) {
213             if (attrs[i].getLocalName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) {
214                 return attrs[i].getValue();
215             }
216         }
217         return "";
218     }
219
220
221     public Attr JavaDoc getAttributeNodeNS(String JavaDoc namespaceURI, String JavaDoc localName) {
222         for (int i=0; i<attrs.length; i++) {
223             if (attrs[i].getName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) {
224                 return attrs[i];
225             }
226         }
227         return null;
228     }
229
230
231     public boolean hasAttribute(String JavaDoc name) {
232         for (int i=0; i<attrs.length; i++) {
233             if (attrs[i].getName().equals(name)) {
234                 return true;
235             }
236         }
237         return false;
238     }
239
240
241     public boolean hasAttributeNS(String JavaDoc namespaceURI, String JavaDoc localName) {
242         for (int i=0; i<attrs.length; i++) {
243             if (attrs[i].getName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) {
244                 return true;
245             }
246         }
247         return false;
248     }
249     
250     
251     public void setAttribute(String JavaDoc name, String JavaDoc value) {
252         for (int i=0; i<attrs.length; i++) {
253             if (attrs[i].getName().equals(name)) {
254                 attrs[i].setValue(value);
255                 return;
256             }
257         }
258     }
259
260     /** Returns the line number. */
261     public int getLineNumber() {
262         return line;
263     }
264
265     /** Returns the column number. */
266     public int getColumnNumber() {
267         return column;
268     }
269
270 }
271
Popular Tags