KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jxpath > ri > model > dom > DOMAttributePointer


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.jxpath.ri.model.dom;
17
18 import org.apache.commons.jxpath.ri.Compiler;
19 import org.apache.commons.jxpath.ri.QName;
20 import org.apache.commons.jxpath.ri.compiler.NodeTest;
21 import org.apache.commons.jxpath.ri.compiler.NodeTypeTest;
22 import org.apache.commons.jxpath.ri.model.NodePointer;
23 import org.apache.commons.jxpath.util.TypeUtils;
24 import org.w3c.dom.Attr JavaDoc;
25
26 /**
27  * A Pointer that points to a DOM node.
28  *
29  * @author Dmitri Plotnikov
30  * @version $Revision: 1.15 $ $Date: 2004/04/01 02:55:32 $
31  */

32 public class DOMAttributePointer extends NodePointer {
33     private Attr JavaDoc attr;
34
35     public DOMAttributePointer(NodePointer parent, Attr JavaDoc attr) {
36         super(parent);
37         this.attr = attr;
38     }
39
40     public QName getName() {
41         return new QName(
42             DOMNodePointer.getPrefix(attr),
43             DOMNodePointer.getLocalName(attr));
44     }
45
46     public String JavaDoc getNamespaceURI() {
47         String JavaDoc prefix = DOMNodePointer.getPrefix(attr);
48         if (prefix == null) {
49             return null;
50         }
51         return parent.getNamespaceURI(prefix);
52     }
53
54     public Object JavaDoc getValue() {
55         String JavaDoc value = attr.getValue();
56         if (value == null) {
57             return null;
58         }
59         if (value.equals("") && !attr.getSpecified()) {
60             return null;
61         }
62         return value;
63     }
64     
65     public Object JavaDoc getBaseValue() {
66         return attr;
67     }
68     
69     public boolean isCollection() {
70         return false;
71     }
72     
73     public int getLength() {
74         return 1;
75     }
76
77     public Object JavaDoc getImmediateNode() {
78         return attr;
79     }
80
81     public boolean isActual() {
82         return true;
83     }
84
85     public boolean isLeaf() {
86         return true;
87     }
88
89     public boolean testNode(NodeTest nodeTest) {
90         return nodeTest == null
91             || ((nodeTest instanceof NodeTypeTest)
92                 && ((NodeTypeTest) nodeTest).getNodeType()
93                     == Compiler.NODE_TYPE_NODE);
94     }
95
96     /**
97      * Sets the value of this attribute.
98      */

99     public void setValue(Object JavaDoc value) {
100         attr.setValue((String JavaDoc) TypeUtils.convert(value, String JavaDoc.class));
101     }
102
103     public void remove() {
104         attr.getOwnerElement().removeAttributeNode(attr);
105     }
106
107     /**
108      */

109     public String JavaDoc asPath() {
110         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
111         if (parent != null) {
112             buffer.append(parent.asPath());
113             if (buffer.length() == 0
114                 || buffer.charAt(buffer.length() - 1) != '/') {
115                 buffer.append('/');
116             }
117         }
118         buffer.append('@');
119         buffer.append(getName());
120         return buffer.toString();
121     }
122
123     public int hashCode() {
124         return System.identityHashCode(attr);
125     }
126
127     public boolean equals(Object JavaDoc object) {
128         if (object == this) {
129             return true;
130         }
131
132         if (!(object instanceof DOMAttributePointer)) {
133             return false;
134         }
135
136         DOMAttributePointer other = (DOMAttributePointer) object;
137         return attr == other.attr;
138     }
139
140     public int compareChildNodePointers(
141         NodePointer pointer1,
142         NodePointer pointer2)
143     {
144         // Won't happen - attributes don't have children
145
return 0;
146     }
147 }
Popular Tags