KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > hivemind > impl > ElementImpl


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

15 package org.apache.hivemind.impl;
16
17 import java.util.ArrayList JavaDoc;
18 import java.util.Collections JavaDoc;
19 import java.util.HashMap JavaDoc;
20 import java.util.List JavaDoc;
21 import java.util.Map JavaDoc;
22
23 import org.apache.hivemind.Attribute;
24 import org.apache.hivemind.Element;
25 import org.apache.hivemind.util.ToStringBuilder;
26
27 /**
28  * Implementation of {@link org.apache.hivemind.Element}.
29  *
30  * @author Howard Lewis Ship
31  */

32 public final class ElementImpl extends BaseLocatable implements Element
33 {
34     private String JavaDoc _elementName;
35     private String JavaDoc _content;
36     private List JavaDoc _elements;
37     private List JavaDoc _safeElements;
38     private List JavaDoc _attributes;
39     private Map JavaDoc _attributesMap;
40     private List JavaDoc _safeAttributes;
41
42     public void setElementName(String JavaDoc elementName)
43     {
44         _elementName = elementName;
45     }
46
47     public String JavaDoc getElementName()
48     {
49         return _elementName;
50     }
51
52     public void addAttribute(Attribute attribute)
53     {
54         if (_attributes == null)
55         {
56             _attributes = new ArrayList JavaDoc();
57             _attributesMap = new HashMap JavaDoc();
58         }
59
60         _attributes.add(attribute);
61         _attributesMap.put(attribute.getName(), attribute);
62     }
63
64     public void addElement(Element element)
65     {
66         if (_elements == null)
67             _elements = new ArrayList JavaDoc();
68
69         _elements.add(element);
70     }
71
72     public synchronized List JavaDoc getAttributes()
73     {
74         if (_attributes == null)
75             return Collections.EMPTY_LIST;
76
77         if (_safeAttributes == null)
78             _safeAttributes = Collections.unmodifiableList(_attributes);
79
80         return _safeAttributes;
81     }
82
83     public String JavaDoc getContent()
84     {
85         if (_content == null)
86             return "";
87
88         return _content;
89     }
90
91     public synchronized List JavaDoc getElements()
92     {
93         if (_elements == null)
94             return Collections.EMPTY_LIST;
95
96         if (_safeElements == null)
97             _safeElements = Collections.unmodifiableList(_elements);
98
99         return _safeElements;
100     }
101
102     public String JavaDoc getAttributeValue(String JavaDoc attributeName)
103     {
104         if (_attributesMap == null)
105             return null;
106
107         Attribute a = (Attribute) _attributesMap.get(attributeName);
108
109         if (a == null)
110             return null;
111
112         return a.getValue();
113     }
114
115     public boolean isEmpty()
116     {
117         return _elements == null || _elements.size() == 0;
118     }
119
120     public void setContent(String JavaDoc string)
121     {
122         _content = string;
123     }
124
125     public String JavaDoc toString()
126     {
127         ToStringBuilder builder = new ToStringBuilder(this);
128
129         builder.append("elementName", _elementName);
130         builder.append("attributes", _attributes);
131         builder.append("elements", _elements);
132         builder.append("content", _content);
133
134         return builder.toString();
135     }
136 }
137
Popular Tags