1 /*
2 * Created on 04.03.2004
3 */
4 package org.xpcards.model;
5
6 import java.io.Serializable;
7 import java.util.Date;
8 import java.util.Vector;
9
10 /***
11 * Base Domain Model Element
12 * @author galu02
13 */
14 public class ModelElement implements Serializable, IIDProvider {
15
16 private ModelElement parent = null;
17 private String id = null;
18 private String name = null;
19 private String description = null;
20 private Vector listenersCache = null;
21 private Date created = null;
22 private String createdBy = null;
23
24 // public ModelElement() {}
25 //
26 // public ModelElement(ModelElement parent) {
27 // this.parent = parent;
28 // }
29
30 /***
31 * Root Element mainatains linsteners: all children delegates listener maintenance
32 * @return
33 */
34 Vector getListeners() {
35 if (parent != null) {
36 // System.err.println("From parent");
37 return parent.getListeners();
38 } else if (listenersCache != null) {
39 // System.err.println("Listeners cache");
40 return listenersCache;
41 } else {
42 // System.err.println("Create" + this);
43 listenersCache = new Vector();
44 return listenersCache;
45 }
46 }
47
48 public void addModelElementListener(IModelElementListener listener) {
49 // System.err.println("addModelElementListener:" + listener);
50 if (listener == null)
51 return;
52 Vector l = getListeners();
53 synchronized (l) {
54 if (!l.contains(listener)) {
55 l.add(listener);
56 }
57 };
58 }
59
60 public void removeModelElementListener(IModelElementListener listener) {
61 if (listener == null)
62 return;
63 Vector l = getListeners();
64 synchronized (l) {
65 l.remove(listener);
66 };
67 }
68
69 void fireModelElementPropertyChanged(String propertyName, Object oldValue, Object newValue) {
70 Vector l = getListeners();
71 synchronized (l) {
72 for (int i = 0; i < l.size(); i++) {
73 IModelElementListener ll = (IModelElementListener) l.elementAt(i);
74 ll.propertyChanged(this, propertyName, oldValue, newValue);
75 }
76 }
77 }
78
79 void fireCollectionElementAdded(ModelElement element, String collectionName, boolean recursive) {
80 fireCollectionElementAdded(this, element, collectionName, recursive);
81 }
82
83 void fireCollectionElementAdded(
84 ModelElement parent,
85 ModelElement element,
86 String collectionName,
87 boolean recursive) {
88 // System.err.println(
89 // "fireCollectionElementAdded:"
90 // + parent
91 // + ", "
92 // + element
93 // + ","
94 // + collectionName);
95 Vector l = getListeners();
96 synchronized (l) {
97 for (int i = 0; i < l.size(); i++) {
98 IModelElementListener ll = (IModelElementListener) l.elementAt(i);
99 ll.collectionElementAdded(element, parent, collectionName, recursive);
100 }
101 }
102 }
103
104 void fireCollectionElementRemoved(ModelElement element, String collectionName) {
105 fireCollectionElementRemoved(this, element, collectionName);
106 }
107
108 void fireCollectionElementRemoved(ModelElement parent, ModelElement element, String collectionName) {
109 Vector l = getListeners();
110 synchronized (l) {
111 for (int i = 0; i < l.size(); i++) {
112 IModelElementListener ll = (IModelElementListener) l.elementAt(i);
113 ll.collectionElementRemoved(element, parent, collectionName);
114 }
115 }
116 }
117
118 /***
119 * @return
120 */
121 public String getId() {
122 return id;
123 }
124
125 /***
126 * @param string
127 */
128 public void setId(String string) {
129 if (id != string) {
130 String old = id;
131 id = string;
132 fireModelElementPropertyChanged("description", old, id);
133 }
134 }
135
136 /***
137 * @return
138 */
139 public String getName() {
140 return name;
141 }
142
143 /***
144 * @param string
145 */
146 public void setName(String string) {
147 if (name != string) {
148 String old = name;
149 name = string;
150 fireModelElementPropertyChanged("description", old, name);
151 }
152 }
153
154 /***
155 * @return
156 */
157 public String getDescription() {
158 return description;
159 }
160
161 /***
162 * @param string
163 */
164 public void setDescription(String string) {
165 if (description != string) {
166 String old = description;
167 description = string;
168 fireModelElementPropertyChanged("description", old, description);
169 }
170 }
171
172 /***
173 * @return
174 */
175 public ModelElement getParent() {
176 return parent;
177 }
178
179 /***
180 * @param element
181 */
182 public void setParent(ModelElement element) {
183 parent = element;
184 }
185
186 public ModelElementCollection[] getChildrenCollections() {
187 return null;
188 }
189
190 /***
191 * @return
192 */
193 public Date getCreated() {
194 return created;
195 }
196
197 /***
198 * @return
199 */
200 public String getCreatedBy() {
201 return createdBy;
202 }
203
204 /***
205 * @param date
206 */
207 public void setCreated(Date date) {
208 created = date;
209 }
210
211 /***
212 * @param string
213 */
214 public void setCreatedBy(String string) {
215 createdBy = string;
216 }
217
218 /***
219 * @see java.lang.Object#equals(java.lang.Object)
220 */
221 public boolean equals(Object obj) {
222 if (obj instanceof ModelElement) {
223 ModelElement o = (ModelElement) obj;
224 if (getName() != o.getName()) {
225 return false;
226 }
227 if (getCreated() != o.getCreated()) {
228 return false;
229 }
230 if (getCreatedBy() != o.getCreatedBy()) {
231 return false;
232 }
233 if (getDescription() != o.getDescription()) {
234 return false;
235 }
236 if (getId() != o.getId()) {
237 return false;
238 }
239 return true;
240 }
241 return false;
242 }
243
244 }
This page was automatically generated by Maven