KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > person > PersonStructBlock


1 /*
2  * Created on 15.03.2004
3  */

4 package com.nightlabs.ipanema.person;
5
6 import java.io.Serializable JavaDoc;
7 import java.util.Collection JavaDoc;
8 import java.util.HashMap JavaDoc;
9 import java.util.Map JavaDoc;
10
11 import javax.jdo.InstanceCallbacks;
12
13 import com.nightlabs.ipanema.base.DuplicateKeyException;
14 import com.nightlabs.ipanema.person.i18n.PersonStructBlockName;
15 import com.nightlabs.ipanema.person.id.PersonStructBlockID;
16 import com.nightlabs.ipanema.person.id.PersonStructFieldID;
17
18 /**
19  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
20  * @author marco
21  */

22
23 /**
24  * @jdo.persistence-capable
25  * identity-type = "application"
26  * objectid-class = "com.nightlabs.ipanema.person.id.PersonStructBlockID"
27  * detachable = "true"
28  *
29  * @jdo.inheritance strategy = "new-table"
30  */

31 public class PersonStructBlock
32         implements Serializable JavaDoc, InstanceCallbacks, Comparable JavaDoc
33
34 // TODO: should implement Localizable and LocalizedDetachable
35
{
36
37     protected PersonStructBlock() { }
38     
39     public PersonStructBlock(PersonStruct personStruct, PersonStructBlockID personStructBlockID) {
40         this(
41             personStruct,
42             personStructBlockID.personStructBlockOrganisationID,
43             personStructBlockID.personStructBlockID
44         );
45     }
46     public PersonStructBlock(
47         PersonStruct personStruct,
48         String JavaDoc _personStructBlockOrganisationID,
49         String JavaDoc _personStructBlockID
50     )
51     {
52         this.personStruct = personStruct;
53         this.personStructBlockOrganisationID = _personStructBlockOrganisationID;
54         this.personStructBlockID = _personStructBlockID;
55         this.primaryKey = getPrimaryKey();
56     }
57     
58     
59     /**
60      * @jdo.field primary-key="true"
61      * @jdo.column length="100"
62      */

63     private String JavaDoc personStructBlockOrganisationID = null;
64
65     /**
66      * @jdo.field primary-key="true"
67      * @jdo.column length="100"
68      */

69     private String JavaDoc personStructBlockID = null;
70
71     /**
72      * @return Returns the personStructBlockOrganisationID.
73      */

74     public String JavaDoc getPersonStructBlockOrganisationID() {
75         return personStructBlockOrganisationID;
76     }
77
78     /**
79      * @return Returns the personStructBlockID.
80      */

81     public String JavaDoc getPersonStructBlockID() {
82         return personStructBlockID;
83     }
84
85     
86     public static String JavaDoc getPrimaryKey(String JavaDoc _personStructBlockOrganisatinID, String JavaDoc _personStructBlockID) {
87         return _personStructBlockOrganisatinID+"/"+_personStructBlockID;
88     }
89
90     public String JavaDoc getPrimaryKey() {
91         return getPrimaryKey(personStructBlockOrganisationID,personStructBlockID);
92     }
93     
94         
95     /**
96      * @param personStructBlockID The personStructBlockOrganisationID to set.
97      */

98     public void setPersonStructBlockOrganisationID(String JavaDoc personStructBlockOrganisationID) {
99         if (this.personStructBlockOrganisationID != null)
100             throw new IllegalStateException JavaDoc("personStructBlockOrganisationID immutable. Can not change it after it has been defined!");
101         
102         this.personStructBlockOrganisationID = personStructBlockOrganisationID;
103     }
104     
105     
106     /**
107      * @param personStructBlockID The personStructBlockID to set.
108      */

109     public void setPersonStructBlockID(String JavaDoc personStructBlockID) {
110         if (this.personStructBlockID != null)
111             throw new IllegalStateException JavaDoc("Cannot change personStructBlockID after it has been defined!");
112         
113         this.personStructBlockID = personStructBlockID;
114     }
115     
116     /**
117      * @jdo.field persistence-modifier="persistent"
118      */

119     private String JavaDoc primaryKey;
120
121     /**
122      * @jdo.field persistence-modifier="persistent"
123      */

124     private PersonStruct personStruct;
125     
126     /**
127      * Retuns the PersonStruct this StructBlock belongs to
128      * @return
129      */

130     public PersonStruct getPersonStruct() {
131         return personStruct;
132     }
133     
134
135     /**
136      * @jdo.field persistence-modifier="persistent"
137      */

138     private boolean global = false;
139
140     /**
141      * If the property global is true, the block is used system wide. Otherwise, it is used
142      * only within an organisationID.
143      *
144      * @return Returns the global.
145      */

146     public boolean isGlobal() {
147         return global;
148     }
149
150     /**
151      * @param global The global to set.
152      */

153     public void setGlobal(boolean _global) {
154         this.global = _global;
155     }
156     
157     /**
158      * @jdo.field persistence-modifier="persistent"
159      */

160     private int orderID;
161     
162     /**
163      * @return Returns the orderID.
164      */

165     public int getOrderID() {
166         return orderID;
167     }
168
169     /**
170      * @param _orderID The orderID to set.
171      */

172     public void setOrderID(int _orderID) {
173         this.orderID = _orderID;
174     }
175     
176     
177     /**
178      * Map of struct fields for this block.
179      * Holds subclasses of {@link AbstractPersonStructField}.
180      *
181      * key: String AbstractPersonStructField.getStructFieldKey(personStructFieldOrganisatinID,personStructFieldID)
182      * value: AbstractPersonStructField personStructField
183      *
184      * @jdo.field
185      * persistence-modifier="persistent"
186      * collection-type="map"
187      * key-type="java.lang.String"
188      * value-type="com.nightlabs.ipanema.person.AbstractPersonStructField"
189      * mapped-by="personStructBlock"
190      * dependent="true"
191      *
192      * @jdo.map-vendor-extension vendor-name="jpox" key="key-field" value="structFieldKey"
193      */

194     protected Map JavaDoc personStructFields = new HashMap JavaDoc();
195
196     public Collection JavaDoc getPersonStructFields()
197     {
198         return this.personStructFields.values();
199     }
200
201 // public static final byte GET_BEHAVIOUR_THROW_EXCEPTION_IF_NOT_EXISTENT = 0;
202
// public static final byte GET_BEHAVIOUR_RETURN_NULL_IF_NOT_EXISTENT = 1;
203
// public static final byte GET_BEHAVIOUR_CREATE_IF_NOT_EXISTENT = 2;
204

205
206     /**
207      * A shortcut to {@link #getPersonStructField(String, String)}
208      * @throws PersonStructFieldNotFoundException
209      */

210     public AbstractPersonStructField getPersonStructField(PersonStructFieldID personStructFieldID)
211     throws PersonStructFieldNotFoundException
212     {
213         return getPersonStructField(personStructFieldID.personStructFieldOrganisationID, personStructFieldID.personStructFieldID);
214     }
215     
216     /**
217      * Looks for the PersonStructField with the personStructField for the given
218      * personStructFieldOrganisationID and personStructFieldID and returns it when found.
219      * If not found a {@link PersonStructFieldNotFoundException} is thrown.
220      *
221      * @param personStructFieldOrganisationID
222      * @param personStructFieldID
223      * @return
224      * @throws PersonStructFieldNotFoundException
225      */

226     public AbstractPersonStructField getPersonStructField(String JavaDoc personStructFieldOrganisationID, String JavaDoc personStructFieldID)
227     throws PersonStructFieldNotFoundException
228     {
229         String JavaDoc structFieldKey = AbstractPersonStructField.getStructFieldKey(personStructFieldOrganisationID,personStructFieldID);
230         AbstractPersonStructField psf = (AbstractPersonStructField)personStructFields.get(structFieldKey);
231         if (psf == null) {
232             throw new PersonStructFieldNotFoundException("No PersonStructField with ID \""+structFieldKey+"\" existent in PersonStructBlock \""+getPersonStructBlockID()+"\"!");
233 // case GET_BEHAVIOUR_CREATE_IF_NOT_EXISTENT:
234
// psf = new AbstractPersonStructField(this, personStructFieldID);
235
// personStructFields.put(personStructFieldID, psf);
236
}
237         return psf;
238     }
239     
240 // public AbstractPersonStructField newPersonStructField(PersonStructFieldID personStructFieldID)
241
// throws DuplicateKeyException
242
// {
243
//// return newPersonStructField(personStructFieldID.personStructBlockOrganisationID,personStructBlockID);
244
//// }
245
////
246
//// public AbstractPersonStructField newPersonStructField(String personStructFieldOrganisationID, String personStructFieldID)
247
//// throws DuplicateKeyException
248
//// {
249
// AbstractPersonStructField psf = new AbstractPersonStructField(this, personStructFieldID.personStructBlockOrganisationID, personStructFieldID.personStructFieldID);
250
// addPersonStructField(psf);
251
// return psf;
252
// }
253

254     public void addPersonStructField(AbstractPersonStructField personStructField)
255     throws DuplicateKeyException
256     {
257         if (personStructField == null)
258             throw new IllegalStateException JavaDoc("Parameter personStructField must not be null!");
259         String JavaDoc structFieldKey = personStructField.getStructFieldKey();
260         if (personStructFields.containsKey(structFieldKey))
261             throw new DuplicateKeyException("PersonStructField with key "+structFieldKey+" is already part of this PersonStructBlock");
262         personStructFields.put(structFieldKey,personStructField);
263     }
264     
265     /**
266      * @jdo.field
267      * persistence-modifier="persistent"
268      */

269     protected PersonStructBlockName blockName = new PersonStructBlockName();
270     
271     public PersonStructBlockName getBlockName() {
272         return blockName;
273     }
274
275     
276     
277     /**
278      * @jdo.field
279      * persistence-modifier="persistent"
280      */

281     protected boolean unique = false;
282     // Uniuqe default value is false
283

284     public void setUnique(boolean unique) {
285         this.unique = unique;
286     }
287     public boolean isUnique() {
288         return unique;
289     }
290     
291     /**
292      * @jdo.field
293      * persistence-modifier="none"
294      */

295     private int priority = Integer.MAX_VALUE;
296     
297     public void setPriority(int priority) {
298         this.priority = priority;
299     }
300     
301     public int compareTo(Object JavaDoc o) {
302         if (!(o instanceof PersonStructBlock)) {
303             if (this.equals(o)) {
304                 // to be consistent with equals
305
return 0;
306             }
307             else return 1;
308         }
309         PersonStructBlock other = (PersonStructBlock)o;
310         if (other.priority < this.priority)
311             return 1;
312         else if (other.priority > this.priority)
313             return -1;
314         else {
315             if (this.equals(o)) {
316                 // to be consistent with equals
317
return 0;
318             }
319             else return 1;
320         }
321     }
322     
323     
324     /**
325      * @see javax.jdo.InstanceCallbacks#jdoPostLoad()
326      */

327     public void jdoPostLoad()
328     {
329 // System.out.println(this.getClass().getName()+": jdoPostLoad()");
330
}
331
332     /**
333      * @see javax.jdo.InstanceCallbacks#jdoPreStore()
334      */

335     public void jdoPreStore() {
336 // System.out.println(this.getClass().getName()+": jdoPreStore()");
337
}
338
339     /**
340      * @see javax.jdo.InstanceCallbacks#jdoPreClear()
341      */

342     public void jdoPreClear() {
343 // System.out.println(this.getClass().getName()+": jdoPreClear()");
344
}
345
346     /**
347      * @see javax.jdo.InstanceCallbacks#jdoPreDelete()
348      */

349     public void jdoPreDelete() {
350 // System.out.println(this.getClass().getName()+": jdoPreDelete()");
351
}
352
353 }
354
Popular Tags