KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * Created on Nov 21, 2004
3  * by Alexander Bieber
4  *
5  */

6 package com.nightlabs.ipanema.person;
7
8 import java.io.Serializable JavaDoc;
9
10 import javax.jdo.InstanceCallbacks;
11 import javax.jdo.PersistenceManager;
12
13 import com.nightlabs.i18n.Localizable;
14 import com.nightlabs.ipanema.person.i18n.PersonStructFieldName;
15 import com.nightlabs.ipanema.person.id.PersonStructFieldID;
16 import com.nightlabs.jdo.LocalizedDetachable;
17
18 /**
19  * Basic class for all members of {@link com.nightlabs.ipanema.person.PersonStructBlock}.<br/>
20  * It holds the primary key and names for a PersonStructField. All other field data is
21  * handled by subclasses of this.<br/>
22  * Always a subclass of this should be used with {@link com.nightlabs.ipanema.person.PersonStructBlock#addPersonStructField(AbstractPersonStructField field)}
23  *
24  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
25  */

26 /**
27  * @jdo.persistence-capable
28  * identity-type = "application"
29  * objectid-class = "com.nightlabs.ipanema.person.id.PersonStructFieldID"
30  * detachable = "true"
31  *
32  * @jdo.inheritance strategy = "new-table"
33  */

34 public abstract class AbstractPersonStructField
35 implements Serializable JavaDoc, InstanceCallbacks, Localizable, LocalizedDetachable{
36     
37     /**
38      * @jdo.field persistence-modifier="persistent"
39      */

40     private PersonStructBlock personStructBlock;
41     
42     /**
43      * @jdo.field primary-key="true"
44      * @jdo.column length="100"
45      */

46     private String JavaDoc personStructBlockOrganisationID;
47     
48     /**
49      * @jdo.field primary-key="true"
50      * @jdo.column length="100"
51      */

52     private String JavaDoc personStructBlockID;
53     
54     
55     /**
56      * @jdo.field primary-key="true"
57      * @jdo.column length="100"
58      */

59     private String JavaDoc personStructFieldOrganisationID;
60     
61     /**
62      * @jdo.field primary-key="true"
63      * @jdo.column length="100"
64      */

65     private String JavaDoc personStructFieldID;
66     
67     /**
68      * @return Returns the personStructBlockID.
69      */

70     public String JavaDoc getPersonStructBlockOrganisationID() {
71         return personStructBlockOrganisationID;
72     }
73
74     /**
75      * @return Returns the personStructBlockID.
76      */

77     public String JavaDoc getPersonStructBlockID() {
78         return personStructBlockID;
79     }
80
81     /**
82      * @return Returns the personStructBlockID.
83      */

84     public String JavaDoc getPersonStructFieldOrganisationID() {
85         return personStructFieldOrganisationID;
86     }
87
88     /**
89      * @return Returns the personStructFieldID.
90      */

91     public String JavaDoc getPersonStructFieldID() {
92         return personStructFieldID;
93     }
94     
95     
96     /**
97      * @jdo.field persistence-modifier="persistent"
98      */

99     private String JavaDoc structFieldKey;
100     
101     public static String JavaDoc getPrimaryKey(
102             String JavaDoc structBlockOrganisationID,
103             String JavaDoc structBlockID,
104             String JavaDoc structFieldOrganisationID,
105             String JavaDoc structFieldID) {
106         return structBlockOrganisationID+"/"+structBlockID+"/"+structFieldOrganisationID+"/"+structFieldID;
107     }
108     
109     public String JavaDoc getPrimaryKey() {
110         return getPrimaryKey(
111             this.personStructBlockOrganisationID,
112             this.personStructBlockID,
113             this.personStructFieldOrganisationID,
114             this.personStructFieldID
115         );
116     }
117     
118     public static String JavaDoc getStructFieldKey(String JavaDoc structFieldOrganisationID, String JavaDoc structFieldID) {
119         return structFieldOrganisationID+"/"+structFieldID;
120     }
121     public String JavaDoc getStructFieldKey() {
122         return getStructFieldKey(personStructFieldOrganisationID,personStructFieldID);
123     }
124     public String JavaDoc getStructBlockKey() {
125         return getPersonStructBlockOrganisationID()+"/"+personStructBlockID;
126     }
127
128     protected AbstractPersonStructField() { }
129     
130     protected AbstractPersonStructField(PersonStructBlock _personStructBlock, PersonStructFieldID personStructFieldID) {
131         this(_personStructBlock,personStructFieldID.personStructFieldOrganisationID,personStructFieldID.personStructFieldID);
132     }
133     
134     public AbstractPersonStructField(PersonStructBlock _personStructBlock, String JavaDoc _personStructFieldOrganisationID, String JavaDoc _personStructFieldID) {
135 // this.personStructBlock = _personStructBlock;
136
this.personStructBlockOrganisationID = _personStructBlock.getPersonStructBlockOrganisationID();
137         this.personStructBlockID = _personStructBlock.getPersonStructBlockID();
138         this.personStructFieldOrganisationID = _personStructFieldOrganisationID;
139         this.personStructFieldID = _personStructFieldID;
140 // this.structFieldKey = getStructFieldKey();
141
fieldName.setFallBackStructFieldName(this.getStructFieldKey());
142     }
143     
144     /**
145      * Implementors should add the appropriate subclass of {AbstractPersonDataField} to
146      * the passes PersonDataBlock and return the new instance.
147      * @param dataBlock
148      * @return
149      */

150     // DONE: Make this abstract again
151
public abstract AbstractPersonDataField addNewDataFieldInstance(PersonDataBlock dataBlock);
152 // {
153
// throw new UnsupportedOperationException("This method should be abstract and you should not be calling it");
154
// }
155

156     /**
157      * @jdo.field
158      * persistence-modifier="persistent"
159      */

160     protected PersonStructFieldName fieldName = new PersonStructFieldName();
161     
162     public PersonStructFieldName getFieldName() {
163         return fieldName;
164     }
165     
166     /**
167      * @param languageID
168      * @param livingInstance
169      */

170     protected void localize(String JavaDoc languageID, AbstractPersonStructField livingInstance)
171     {
172         livingInstance.getFieldName().localize(languageID);
173     }
174     
175     /**
176      * @see com.nightlabs.util.Localizable#localize(java.lang.String)
177      */

178     public void localize(String JavaDoc languageID) {
179         localize(languageID,this);
180     }
181
182     /**
183      * First copies detached then localizes the detached copy.
184      * @see com.nightlabs.jdo.LocalizedDetachable#detachCopyLocalized(java.lang.String, javax.jdo.PersistenceManager)
185      */

186     public LocalizedDetachable detachCopyLocalized(String JavaDoc languageID, PersistenceManager pm) {
187         AbstractPersonStructField abstractStructField = (AbstractPersonStructField) pm.detachCopy(this);
188         abstractStructField.localize(languageID, this);
189         return abstractStructField;
190     }
191     
192     /**
193      * @jdo.field
194      * persistence-modifier="none"
195      */

196     private int priority = Integer.MAX_VALUE;
197     
198     public void setPriority(int priority) {
199         this.priority = priority;
200     }
201     
202     /**
203      * @see java.lang.Comparable#compareTo(java.lang.Object)
204      */

205     public int compareTo(Object JavaDoc o) {
206         if (!(o instanceof AbstractPersonStructField)) {
207             if (this.equals(o)) {
208                 // to be consistent with equals
209
return 0;
210             }
211             else return 1;
212         }
213         AbstractPersonStructField other = (AbstractPersonStructField)o;
214         if (other.getStructBlockKey().equals(this.getStructBlockKey())) {
215             // within same structBlock
216
if (other.priority < this.priority)
217                 return 1;
218             else if (other.priority > this.priority)
219                 return -1;
220             else {
221                 if (this.equals(o)) {
222                     // to be consistent with equals
223
return 0;
224                 }
225                 else return 1;
226             }
227         }
228         else
229             return 1;
230     }
231     
232
233     /**
234      * @see javax.jdo.LoadCallback#jdoPostLoad()
235      */

236     public void jdoPostLoad() {
237 // System.out.println(this.getClass().getName()+"#jdoPostLoad()");
238
}
239
240     /**
241      * @see javax.jdo.StoreCallback#jdoPreStore()
242      */

243     public void jdoPreStore() {
244 // System.out.println(this.getClass().getName()+"#jdoPreStore()");
245
}
246
247     /**
248      * @see javax.jdo.ClearCallback#jdoPreClear()
249      */

250     public void jdoPreClear() {
251 // System.out.println(this.getClass().getName()+"#jdoPreClear()");
252
}
253
254     /**
255      * @see javax.jdo.DeleteCallback#jdoPreDelete()
256      */

257     public void jdoPreDelete() {
258 // System.out.println(this.getClass().getName()+"#jdoPreDelete()");
259
}
260 }
261
Popular Tags