1
2
3
4
5
6
7 package org.asyrinx.joey.gen.model;
8
9 import java.util.ArrayList;
10 import java.util.Iterator;
11 import java.util.List;
12
13 import org.apache.commons.lang.StringUtils;
14
15 /***
16 * @author akima
17 */
18 public abstract class ElementSet extends Element {
19 /***
20 * @param name
21 */
22 public ElementSet(String name) {
23 this(null, name, null);
24 }
25
26 /***
27 * @param parent
28 */
29 public ElementSet(Element parent) {
30 this(parent, null, null);
31 }
32
33 /***
34 * @param parent
35 * @param name
36 */
37 public ElementSet(Element parent, String name) {
38 this(parent, name, null);
39 }
40
41 /***
42 * @param parent
43 * @param name
44 * @param label
45 * @param isEntity
46 */
47 public ElementSet(Element parent, String name, String label) {
48 super(parent, name, label);
49 }
50
51 protected final List elementList = new ArrayList();
52
53 /***
54 * @return Returns the entity.
55 */
56 abstract public boolean isEntity();
57
58 public void add(Element element) {
59 if (element == null)
60 throw new NullPointerException("element must not be null");
61 if (!elementList.contains(element))
62 elementList.add(element);
63 if (element.getParentElement() != this)
64 element.setParentElement(isEntity() ? this : this.getParentElement());
65 }
66
67 /***
68 *
69 */
70 public final void clear() {
71 elementList.clear();
72 }
73
74 /***
75 * @param key
76 * @return
77 */
78 public final boolean contains(String name) {
79 if (StringUtils.isEmpty(name))
80 return false;
81 for (int i = 0; i < elementList.size(); i++) {
82 final Element element = (Element) elementList.get(i);
83 if (name.equals(element.getName()))
84 return true;
85 }
86 return false;
87 }
88
89 /***
90 * @param value
91 * @return
92 */
93 protected boolean contains(Element element) {
94 return elementList.contains(element);
95 }
96
97 /***
98 * @param key
99 * @return
100 */
101 protected Element getElement(int index) {
102 return (index < 0) ? null : (Element) elementList.get(index);
103 }
104
105 /***
106 * @param key
107 * @return
108 */
109 protected Element getElement(String name) {
110 return getElement(indexOf(name));
111 }
112
113 /***
114 * @param key
115 * @return
116 */
117 public final int indexOf(String name) {
118 if (StringUtils.isEmpty(name))
119 return -1;
120 for (int i = 0; i < elementList.size(); i++) {
121 final Element element = (Element) elementList.get(i);
122 if (name.equals(element.getName()))
123 return i;
124 }
125 return -1;
126 }
127
128 /***
129 * @param key
130 * @return
131 */
132 public final int indexOf(Element element) {
133 return elementList.indexOf(element);
134 }
135
136 /***
137 * @return
138 */
139 public final boolean isEmpty() {
140 return elementList.isEmpty();
141 }
142
143 /***
144 * @return
145 */
146 public final Iterator iterator() {
147 return elementList.iterator();
148 }
149
150 /***
151 * @param key
152 * @return
153 */
154 protected Element removeElement(String name) {
155 final int index = indexOf(name);
156 return (index < 0) ? null : (Element) elementList.remove(index);
157 }
158
159 /***
160 * @return
161 */
162 public final int size() {
163 return elementList.size();
164 }
165
166 public List toList() {
167 return new ArrayList(this.elementList);
168 }
169 }