annotate src/main/java/org/mpi/openmind/repository/bo/Node.java @ 33:e52f593f9e0d

new transaction logger "openmind.transactionlog" logging entity save actions and their data. more comments in code.
author casties
date Fri, 26 Aug 2016 11:42:41 +0200
parents c23ae718fdd3
children 5737ab564b94
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package org.mpi.openmind.repository.bo;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.io.Serializable;
jurzua
parents:
diff changeset
4 import java.text.DateFormat;
jurzua
parents:
diff changeset
5 import java.text.SimpleDateFormat;
jurzua
parents:
diff changeset
6 import java.util.ArrayList;
jurzua
parents:
diff changeset
7 import java.util.Date;
jurzua
parents:
diff changeset
8 import java.util.List;
jurzua
parents:
diff changeset
9
jurzua
parents:
diff changeset
10 import javax.persistence.Column;
jurzua
parents:
diff changeset
11 import javax.persistence.DiscriminatorColumn;
jurzua
parents:
diff changeset
12 import javax.persistence.DiscriminatorType;
jurzua
parents:
diff changeset
13 import javax.persistence.DiscriminatorValue;
jurzua
parents:
diff changeset
14 import javax.persistence.Entity;
jurzua
parents:
diff changeset
15 import javax.persistence.GeneratedValue;
jurzua
parents:
diff changeset
16 import javax.persistence.GenerationType;
jurzua
parents:
diff changeset
17 import javax.persistence.Id;
jurzua
parents:
diff changeset
18 import javax.persistence.Inheritance;
jurzua
parents:
diff changeset
19 import javax.persistence.InheritanceType;
jurzua
parents:
diff changeset
20 import javax.persistence.Table;
jurzua
parents:
diff changeset
21 import javax.persistence.Transient;
jurzua
parents:
diff changeset
22
jurzua
parents:
diff changeset
23 import org.mpi.openmind.repository.utils.ArabicNormalizerUtils;
jurzua
parents:
diff changeset
24 import org.mpi.openmind.repository.utils.NormalizerUtils;
jurzua
parents:
diff changeset
25 import org.mpi.openmind.repository.utils.RomanizationLoC;
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 /**
jurzua
parents:
diff changeset
28 *
jurzua
parents:
diff changeset
29 * @author jurzua
jurzua
parents:
diff changeset
30 */
jurzua
parents:
diff changeset
31 @Entity
jurzua
parents:
diff changeset
32 @Table(name="node")
jurzua
parents:
diff changeset
33 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
jurzua
parents:
diff changeset
34 @DiscriminatorColumn(name="node_type", discriminatorType=DiscriminatorType.STRING)
jurzua
parents:
diff changeset
35 @DiscriminatorValue("NODE")
jurzua
parents:
diff changeset
36 public abstract class Node implements Serializable, Cloneable {
jurzua
parents:
diff changeset
37 private static final long serialVersionUID = 1L;
jurzua
parents:
diff changeset
38
jurzua
parents:
diff changeset
39 public static String TYPE_TBOX = "TBox";
jurzua
parents:
diff changeset
40 public static String TYPE_ABOX = "ABox";
jurzua
parents:
diff changeset
41 public static String TYPE_VARIABLE = "Variable";
jurzua
parents:
diff changeset
42 public static String TYPE_FORMULA = "Formula";
jurzua
parents:
diff changeset
43 public static String TYPE_LINK = "Link";
jurzua
parents:
diff changeset
44
jurzua
parents:
diff changeset
45 public static String SYS_STATUS_CURRENT_VERSION = "CURRENT_VERSION";
jurzua
parents:
diff changeset
46 public static String SYS_STATUS_PREVIOUS_VERSION = "PREVIOUS_VERSION";
jurzua
parents:
diff changeset
47
jurzua
parents:
diff changeset
48 private static SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss" );
jurzua
parents:
diff changeset
49
jurzua
parents:
diff changeset
50 @Id
jurzua
parents:
diff changeset
51 @GeneratedValue(strategy = GenerationType.AUTO)
jurzua
parents:
diff changeset
52 @Column(name="row_id")
jurzua
parents:
diff changeset
53 private Long rowId;
jurzua
parents:
diff changeset
54
jurzua
parents:
diff changeset
55 @Transient
jurzua
parents:
diff changeset
56 private Date dateModification;
jurzua
parents:
diff changeset
57
jurzua
parents:
diff changeset
58 public String getTimeStamp(){
jurzua
parents:
diff changeset
59 return DateFormat.getDateTimeInstance(
jurzua
parents:
diff changeset
60 DateFormat.MEDIUM, DateFormat.SHORT).format(getDateModification());
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 public Date getDateModification() {
jurzua
parents:
diff changeset
64 dateModification = new Date(this.modificationTime);
jurzua
parents:
diff changeset
65 return dateModification;
jurzua
parents:
diff changeset
66 }
jurzua
parents:
diff changeset
67
jurzua
parents:
diff changeset
68 public void setDateModification(Date dateModification) {
jurzua
parents:
diff changeset
69 this.dateModification = dateModification;
jurzua
parents:
diff changeset
70 }
jurzua
parents:
diff changeset
71
jurzua
parents:
diff changeset
72 @Transient
jurzua
parents:
diff changeset
73 private List<View> views = new ArrayList<View>();
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 public void addView(View view){
jurzua
parents:
diff changeset
76 if(view != null){
jurzua
parents:
diff changeset
77 this.views.add(view);
jurzua
parents:
diff changeset
78 }
jurzua
parents:
diff changeset
79 }
jurzua
parents:
diff changeset
80
jurzua
parents:
diff changeset
81 public List<View> getViews() {
jurzua
parents:
diff changeset
82 return views;
jurzua
parents:
diff changeset
83 }
jurzua
parents:
diff changeset
84
jurzua
parents:
diff changeset
85 public void setViews(List<View> views) {
jurzua
parents:
diff changeset
86 this.views = views;
jurzua
parents:
diff changeset
87 }
jurzua
parents:
diff changeset
88
jurzua
parents:
diff changeset
89 @Column(name="long_value")
jurzua
parents:
diff changeset
90 private Long longValue;
jurzua
parents:
diff changeset
91
jurzua
parents:
diff changeset
92 @Column(name="binary_value")
jurzua
parents:
diff changeset
93 private byte[] binaryValue;
jurzua
parents:
diff changeset
94
jurzua
parents:
diff changeset
95 @Column(name="object_class")
jurzua
parents:
diff changeset
96 private String objectClass;
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 @Column(name="user")
jurzua
parents:
diff changeset
99 private String user;
jurzua
parents:
diff changeset
100
jurzua
parents:
diff changeset
101 //@Type(type = "org.hibernate.type.NumericBooleanType")
jurzua
parents:
diff changeset
102 @Column(name="public")
jurzua
parents:
diff changeset
103 private Boolean isPublic = Boolean.FALSE;
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 public String getUser() {
jurzua
parents:
diff changeset
106 return user;
jurzua
parents:
diff changeset
107 }
jurzua
parents:
diff changeset
108
jurzua
parents:
diff changeset
109 public void setUser(String user) {
jurzua
parents:
diff changeset
110 this.user = user;
jurzua
parents:
diff changeset
111 }
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 public String getObjectClass() {
jurzua
parents:
diff changeset
114 return objectClass;
jurzua
parents:
diff changeset
115 }
jurzua
parents:
diff changeset
116
jurzua
parents:
diff changeset
117 public void setObjectClass(String objectClass) {
jurzua
parents:
diff changeset
118 this.objectClass = objectClass;
jurzua
parents:
diff changeset
119 }
jurzua
parents:
diff changeset
120
jurzua
parents:
diff changeset
121 public Long getLongValue() {
jurzua
parents:
diff changeset
122 return longValue;
jurzua
parents:
diff changeset
123 }
jurzua
parents:
diff changeset
124
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 public void setLongValue(Long longValue) {
jurzua
parents:
diff changeset
127 this.longValue = longValue;
jurzua
parents:
diff changeset
128 }
jurzua
parents:
diff changeset
129
jurzua
parents:
diff changeset
130 public byte[] getBinaryValue() {
jurzua
parents:
diff changeset
131 return binaryValue;
jurzua
parents:
diff changeset
132 }
jurzua
parents:
diff changeset
133
jurzua
parents:
diff changeset
134 public void setBinaryValue(byte[] binaryValue) {
jurzua
parents:
diff changeset
135 this.binaryValue = binaryValue;
jurzua
parents:
diff changeset
136 }
jurzua
parents:
diff changeset
137
jurzua
parents:
diff changeset
138 @Column(name="modification_time")
jurzua
parents:
diff changeset
139 private Long modificationTime;
jurzua
parents:
diff changeset
140
jurzua
parents:
diff changeset
141 @Column(name="id")
jurzua
parents:
diff changeset
142 private Long id;
jurzua
parents:
diff changeset
143
jurzua
parents:
diff changeset
144 //lenght 16777215= Medium text
jurzua
parents:
diff changeset
145 @Column(name="own_value", columnDefinition="mediumtext")
jurzua
parents:
diff changeset
146 private String ownValue;
jurzua
parents:
diff changeset
147
jurzua
parents:
diff changeset
148 //, length=16777215
jurzua
parents:
diff changeset
149 @Column(name="normalized_own_value", columnDefinition="mediumtext")
jurzua
parents:
diff changeset
150 private String normalizedOwnValue;
jurzua
parents:
diff changeset
151
jurzua
parents:
diff changeset
152 //, length=16777215
jurzua
parents:
diff changeset
153 @Column(name="normalized_arabic_own_value", columnDefinition="mediumtext")
jurzua
parents:
diff changeset
154 private String normalizedArabicOwnValue;
jurzua
parents:
diff changeset
155
jurzua
parents:
diff changeset
156 @Column(name="version")
jurzua
parents:
diff changeset
157 private Long version;
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 @Column(name="status")
jurzua
parents:
diff changeset
160 private String status;
jurzua
parents:
diff changeset
161
jurzua
parents:
diff changeset
162 @Column(name="system_status")
jurzua
parents:
diff changeset
163 private String systemStatus;
jurzua
parents:
diff changeset
164
jurzua
parents:
diff changeset
165 @Column(name="type")
jurzua
parents:
diff changeset
166 private String type;
jurzua
parents:
diff changeset
167
jurzua
parents:
diff changeset
168 @Column(name="content_type")
jurzua
parents:
diff changeset
169 private String contentType;
jurzua
parents:
diff changeset
170
jurzua
parents:
diff changeset
171 /**
jurzua
parents:
diff changeset
172 * Returns true if the entity was made persistent.
jurzua
parents:
diff changeset
173 * It means the fields 'id' and 'rowId' are not null.
jurzua
parents:
diff changeset
174 * @return
jurzua
parents:
diff changeset
175 */
jurzua
parents:
diff changeset
176 public boolean isPersistent(){
jurzua
parents:
diff changeset
177 if(this.getId() == null || this.getRowId() == null)
jurzua
parents:
diff changeset
178 return false;
jurzua
parents:
diff changeset
179 else
jurzua
parents:
diff changeset
180 return true;
jurzua
parents:
diff changeset
181 }
jurzua
parents:
diff changeset
182
jurzua
parents:
diff changeset
183 public void increaseVersion(){
jurzua
parents:
diff changeset
184 if(this.version == null){
jurzua
parents:
diff changeset
185 this.version = new Long(1);
jurzua
parents:
diff changeset
186 }else{
jurzua
parents:
diff changeset
187 this.version++;
jurzua
parents:
diff changeset
188 }
jurzua
parents:
diff changeset
189 }
jurzua
parents:
diff changeset
190
jurzua
parents:
diff changeset
191 public String getOwnValue() {
jurzua
parents:
diff changeset
192 return ownValue;
jurzua
parents:
diff changeset
193 }
jurzua
parents:
diff changeset
194
jurzua
parents:
diff changeset
195 public void setOwnValue(String ownValue) {
jurzua
parents:
diff changeset
196 this.ownValue = ownValue;
jurzua
parents:
diff changeset
197 this.normalizedOwnValue = NormalizerUtils.normalize(ownValue);
jurzua
parents:
diff changeset
198 this.normalizedArabicOwnValue = ArabicNormalizerUtils.normalize(ownValue);
jurzua
parents:
diff changeset
199 }
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201 public void autoNormalize(){
jurzua
parents:
diff changeset
202 this.normalizedOwnValue = NormalizerUtils.normalize(ownValue);
jurzua
parents:
diff changeset
203 this.normalizedArabicOwnValue = ArabicNormalizerUtils.normalize(ownValue);
jurzua
parents:
diff changeset
204 }
jurzua
parents:
diff changeset
205
jurzua
parents:
diff changeset
206 public String getRomanizationLoC(){
jurzua
parents:
diff changeset
207 return RomanizationLoC.convert(this.ownValue);
jurzua
parents:
diff changeset
208 }
jurzua
parents:
diff changeset
209
jurzua
parents:
diff changeset
210 public String getNormalizedOwnValue() {
jurzua
parents:
diff changeset
211 return normalizedOwnValue;
jurzua
parents:
diff changeset
212 }
jurzua
parents:
diff changeset
213
jurzua
parents:
diff changeset
214 public void setNormalizedOwnValue(String normalizedOwnValue) {
jurzua
parents:
diff changeset
215 this.normalizedOwnValue = normalizedOwnValue;
jurzua
parents:
diff changeset
216 }
jurzua
parents:
diff changeset
217
jurzua
parents:
diff changeset
218 public String getNormalizedArabicOwnValue() {
jurzua
parents:
diff changeset
219 return normalizedArabicOwnValue;
jurzua
parents:
diff changeset
220 }
jurzua
parents:
diff changeset
221
jurzua
parents:
diff changeset
222 public void setNormalizedArabicOwnValue(String normalizedArabicOwnValue) {
jurzua
parents:
diff changeset
223 this.normalizedArabicOwnValue = normalizedArabicOwnValue;
jurzua
parents:
diff changeset
224 }
jurzua
parents:
diff changeset
225
jurzua
parents:
diff changeset
226 public String getContentType() {
jurzua
parents:
diff changeset
227 return contentType;
jurzua
parents:
diff changeset
228 }
jurzua
parents:
diff changeset
229
jurzua
parents:
diff changeset
230 public void setContentType(String contentType) {
jurzua
parents:
diff changeset
231 this.contentType = contentType;
jurzua
parents:
diff changeset
232 }
jurzua
parents:
diff changeset
233
jurzua
parents:
diff changeset
234 public Long getRowId() {
jurzua
parents:
diff changeset
235 return rowId;
jurzua
parents:
diff changeset
236 }
jurzua
parents:
diff changeset
237
jurzua
parents:
diff changeset
238 public void setRowId(Long rowId) {
jurzua
parents:
diff changeset
239 this.rowId = rowId;
jurzua
parents:
diff changeset
240 }
jurzua
parents:
diff changeset
241
jurzua
parents:
diff changeset
242 public Long getId() {
jurzua
parents:
diff changeset
243 return id;
jurzua
parents:
diff changeset
244 }
jurzua
parents:
diff changeset
245
jurzua
parents:
diff changeset
246 public void setId(Long id) {
jurzua
parents:
diff changeset
247 this.id = id;
jurzua
parents:
diff changeset
248 }
jurzua
parents:
diff changeset
249
jurzua
parents:
diff changeset
250 public Long getModificationTime() {
jurzua
parents:
diff changeset
251 return modificationTime;
jurzua
parents:
diff changeset
252 }
jurzua
parents:
diff changeset
253
jurzua
parents:
diff changeset
254 public void setModificationTime(Long modificationTime) {
jurzua
parents:
diff changeset
255 this.modificationTime = modificationTime;
jurzua
parents:
diff changeset
256 }
jurzua
parents:
diff changeset
257
jurzua
parents:
diff changeset
258 public String getStatus() {
jurzua
parents:
diff changeset
259 return status;
jurzua
parents:
diff changeset
260 }
jurzua
parents:
diff changeset
261
jurzua
parents:
diff changeset
262 public void setStatus(String status) {
jurzua
parents:
diff changeset
263 this.status = status;
jurzua
parents:
diff changeset
264 }
jurzua
parents:
diff changeset
265
jurzua
parents:
diff changeset
266 public String getSystemStatus() {
jurzua
parents:
diff changeset
267 return systemStatus;
jurzua
parents:
diff changeset
268 }
jurzua
parents:
diff changeset
269
33
e52f593f9e0d new transaction logger "openmind.transactionlog" logging entity save actions and their data.
casties
parents: 25
diff changeset
270 /**
e52f593f9e0d new transaction logger "openmind.transactionlog" logging entity save actions and their data.
casties
parents: 25
diff changeset
271 * Set the system_status of this Node.
e52f593f9e0d new transaction logger "openmind.transactionlog" logging entity save actions and their data.
casties
parents: 25
diff changeset
272 *
e52f593f9e0d new transaction logger "openmind.transactionlog" logging entity save actions and their data.
casties
parents: 25
diff changeset
273 * @param systemStatus
e52f593f9e0d new transaction logger "openmind.transactionlog" logging entity save actions and their data.
casties
parents: 25
diff changeset
274 */
1
jurzua
parents:
diff changeset
275 public void setSystemStatus(String systemStatus) {
jurzua
parents:
diff changeset
276 this.systemStatus = systemStatus;
jurzua
parents:
diff changeset
277 }
jurzua
parents:
diff changeset
278
jurzua
parents:
diff changeset
279 public String getType() {
jurzua
parents:
diff changeset
280 return type;
jurzua
parents:
diff changeset
281 }
jurzua
parents:
diff changeset
282
jurzua
parents:
diff changeset
283 public void setType(String type) {
jurzua
parents:
diff changeset
284 this.type = type;
jurzua
parents:
diff changeset
285 }
jurzua
parents:
diff changeset
286
jurzua
parents:
diff changeset
287 public Long getVersion() {
jurzua
parents:
diff changeset
288 return version;
jurzua
parents:
diff changeset
289 }
jurzua
parents:
diff changeset
290
jurzua
parents:
diff changeset
291 public void setVersion(Long version) {
jurzua
parents:
diff changeset
292 this.version = version;
jurzua
parents:
diff changeset
293 }
jurzua
parents:
diff changeset
294
jurzua
parents:
diff changeset
295 /*
jurzua
parents:
diff changeset
296 @Override
jurzua
parents:
diff changeset
297 public int hashCode() {
jurzua
parents:
diff changeset
298 int hash = 0;
jurzua
parents:
diff changeset
299 hash += (rowId != null ? rowId.hashCode() : 0);
jurzua
parents:
diff changeset
300 return hash;
jurzua
parents:
diff changeset
301 }*/
jurzua
parents:
diff changeset
302 @Override
jurzua
parents:
diff changeset
303 public int hashCode() {
jurzua
parents:
diff changeset
304 if(this.rowId == null){
jurzua
parents:
diff changeset
305 return super.hashCode();
jurzua
parents:
diff changeset
306 }else{
jurzua
parents:
diff changeset
307 return rowId.hashCode();
jurzua
parents:
diff changeset
308 }
jurzua
parents:
diff changeset
309 }
jurzua
parents:
diff changeset
310
jurzua
parents:
diff changeset
311 /**
jurzua
parents:
diff changeset
312 * Clones this object and every object contained by it.
jurzua
parents:
diff changeset
313 * This method was implemented because the cache. The cache must return a cloned version of a object,
jurzua
parents:
diff changeset
314 * otherwise when the object is modified, it becomes dirty and the cache could not recognize the change of the state.
jurzua
parents:
diff changeset
315 */
jurzua
parents:
diff changeset
316 @Override
jurzua
parents:
diff changeset
317 public Object clone() {
jurzua
parents:
diff changeset
318 try {
jurzua
parents:
diff changeset
319 Node clone = (Node)super.clone();
jurzua
parents:
diff changeset
320 clone.setViews(new ArrayList<View>());
jurzua
parents:
diff changeset
321 for(View view : this.views){
jurzua
parents:
diff changeset
322 clone.addView((View)view.clone());
jurzua
parents:
diff changeset
323 }
jurzua
parents:
diff changeset
324 return clone;
jurzua
parents:
diff changeset
325 }
jurzua
parents:
diff changeset
326 catch (CloneNotSupportedException e) {
jurzua
parents:
diff changeset
327 throw new InternalError(e.toString());
jurzua
parents:
diff changeset
328 }
jurzua
parents:
diff changeset
329 }
jurzua
parents:
diff changeset
330
jurzua
parents:
diff changeset
331 public Boolean getIsPublic() {
jurzua
parents:
diff changeset
332 return isPublic;
jurzua
parents:
diff changeset
333 }
jurzua
parents:
diff changeset
334
jurzua
parents:
diff changeset
335 public void setIsPublic(Boolean isPublic) {
jurzua
parents:
diff changeset
336 this.isPublic = isPublic;
jurzua
parents:
diff changeset
337 }
jurzua
parents:
diff changeset
338
jurzua
parents:
diff changeset
339 public String getPrivacity(){
jurzua
parents:
diff changeset
340 if(isPublic != null)
jurzua
parents:
diff changeset
341 return (isPublic) ? "public" : "private";
jurzua
parents:
diff changeset
342 return "private";
jurzua
parents:
diff changeset
343 }
jurzua
parents:
diff changeset
344
jurzua
parents:
diff changeset
345 @Override
jurzua
parents:
diff changeset
346 public boolean equals(Object object) {
jurzua
parents:
diff changeset
347 // TODO: Warning - this method won't work in the case the id fields are not set
jurzua
parents:
diff changeset
348 if (!(object instanceof Node)) {
jurzua
parents:
diff changeset
349 return false;
jurzua
parents:
diff changeset
350 }
jurzua
parents:
diff changeset
351 Node other = (Node) object;
jurzua
parents:
diff changeset
352
jurzua
parents:
diff changeset
353 if(this.rowId != null && other.rowId != null && this.rowId.longValue() == other.rowId.longValue())
jurzua
parents:
diff changeset
354 return true;
jurzua
parents:
diff changeset
355
jurzua
parents:
diff changeset
356 /*
jurzua
parents:
diff changeset
357 if ((this.rowId == null && other.rowId != null) || (this.rowId != null && !this.rowId.equals(other.rowId))) {
jurzua
parents:
diff changeset
358 return false;
jurzua
parents:
diff changeset
359 }*/
jurzua
parents:
diff changeset
360 return false;
jurzua
parents:
diff changeset
361 }
jurzua
parents:
diff changeset
362
jurzua
parents:
diff changeset
363 @Override
jurzua
parents:
diff changeset
364 public String toString() {
25
c23ae718fdd3 clean up and more logging when saving attributes.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 1
diff changeset
365 String rowIdString = (this.getRowId() == null) ? "" : "rowId=" + this.getRowId() + ", ";
c23ae718fdd3 clean up and more logging when saving attributes.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 1
diff changeset
366 String idString = (this.getId() == null) ? "" : "id=" + getId() + ", ";
1
jurzua
parents:
diff changeset
367
25
c23ae718fdd3 clean up and more logging when saving attributes.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 1
diff changeset
368 return "Node[" + rowIdString + idString + "name=" + this.getObjectClass() + ", ownValue=" + this.getOwnValue() + ", sysStatus=" + this.getSystemStatus() + "]";
1
jurzua
parents:
diff changeset
369 }
jurzua
parents:
diff changeset
370 }