annotate src/main/java/org/mpi/openmind/repository/bo/Relation.java @ 25:c23ae718fdd3

clean up and more logging when saving attributes.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Thu, 04 Aug 2016 21:16:08 +0200
parents 615d27dce9b3
children e52f593f9e0d
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.util.ArrayList;
jurzua
parents:
diff changeset
5 import java.util.List;
jurzua
parents:
diff changeset
6
jurzua
parents:
diff changeset
7 import javax.persistence.Column;
jurzua
parents:
diff changeset
8 import javax.persistence.DiscriminatorValue;
jurzua
parents:
diff changeset
9 import javax.persistence.Transient;
jurzua
parents:
diff changeset
10
jurzua
parents:
diff changeset
11 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
12 import org.hibernate.annotations.Cache;
jurzua
parents:
diff changeset
13 import org.hibernate.annotations.CacheConcurrencyStrategy;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.cache.WrapperService;
jurzua
parents:
diff changeset
15 import org.mpi.openmind.repository.utils.OMUtils;
jurzua
parents:
diff changeset
16
jurzua
parents:
diff changeset
17 import cl.maps.penta.PentaKey;
jurzua
parents:
diff changeset
18 import cl.maps.utils.RelKey;
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 /**
jurzua
parents:
diff changeset
21 *
jurzua
parents:
diff changeset
22 * @author jurzua
jurzua
parents:
diff changeset
23 */
jurzua
parents:
diff changeset
24 @javax.persistence.Entity
jurzua
parents:
diff changeset
25 @DiscriminatorValue("RELATION")
jurzua
parents:
diff changeset
26 @Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
jurzua
parents:
diff changeset
27 public class Relation extends Node implements Serializable, Comparable<Relation> {
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 public Relation(){
jurzua
parents:
diff changeset
30 this.setSystemStatus(SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
31 }
jurzua
parents:
diff changeset
32
jurzua
parents:
diff changeset
33
jurzua
parents:
diff changeset
34 public static Relation defRelation(Relation other, WrapperService ws) throws Exception{
jurzua
parents:
diff changeset
35
jurzua
parents:
diff changeset
36 Relation rel = new Relation();
jurzua
parents:
diff changeset
37
jurzua
parents:
diff changeset
38 rel.setOwnValue(other.getOwnValue());
jurzua
parents:
diff changeset
39 rel.setObjectClass(other.getObjectClass());
jurzua
parents:
diff changeset
40 rel.setType(other.getType());
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 Entity src = ws.getDefinitionById(other.getSourceId());
jurzua
parents:
diff changeset
43 Entity tar = ws.getDefinitionById(other.getTargetId());
jurzua
parents:
diff changeset
44 if(src == null || tar == null){
jurzua
parents:
diff changeset
45 throw new Exception("src and/or target not found!");
jurzua
parents:
diff changeset
46 }
jurzua
parents:
diff changeset
47 rel.setSource(src);
jurzua
parents:
diff changeset
48 rel.setTarget(tar);
jurzua
parents:
diff changeset
49 return rel;
jurzua
parents:
diff changeset
50 }
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 public static Relation entRelation(Relation other, WrapperService ws) throws Exception{
jurzua
parents:
diff changeset
53
jurzua
parents:
diff changeset
54 Relation rel = new Relation();
jurzua
parents:
diff changeset
55
jurzua
parents:
diff changeset
56 rel.setOwnValue(other.getOwnValue());
jurzua
parents:
diff changeset
57 rel.setObjectClass(other.getOwnValue());
jurzua
parents:
diff changeset
58 rel.setType(Node.TYPE_ABOX);
jurzua
parents:
diff changeset
59
jurzua
parents:
diff changeset
60 Entity src = ws.getEntityById(other.getSourceId());
jurzua
parents:
diff changeset
61 Entity tar = ws.getEntityById(other.getTargetId());
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 if(src == null || tar == null){
jurzua
parents:
diff changeset
64 throw new Exception("src and/or target not found!");
jurzua
parents:
diff changeset
65 }
jurzua
parents:
diff changeset
66
jurzua
parents:
diff changeset
67 rel.setSource(src);
jurzua
parents:
diff changeset
68 rel.setTarget(tar);
jurzua
parents:
diff changeset
69 return rel;
jurzua
parents:
diff changeset
70 }
jurzua
parents:
diff changeset
71
jurzua
parents:
diff changeset
72 public Relation(Entity source, Entity target){
jurzua
parents:
diff changeset
73 this.setSource(source);
jurzua
parents:
diff changeset
74 this.setTarget(target);
jurzua
parents:
diff changeset
75 source.addSourceRelation(this);
jurzua
parents:
diff changeset
76 target.addTargetRelation(this);
jurzua
parents:
diff changeset
77 this.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
78 }
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 public Relation(Entity srcNonLW, Entity tarNonLW, String ownValue){
jurzua
parents:
diff changeset
81 this.setSource(srcNonLW);
jurzua
parents:
diff changeset
82 this.setTarget(tarNonLW);
jurzua
parents:
diff changeset
83 srcNonLW.addSourceRelation(this);
jurzua
parents:
diff changeset
84 tarNonLW.addTargetRelation(this);
jurzua
parents:
diff changeset
85 this.setOwnValue(ownValue);
jurzua
parents:
diff changeset
86 this.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
87 }
jurzua
parents:
diff changeset
88
jurzua
parents:
diff changeset
89 @Column(name="source_id")
jurzua
parents:
diff changeset
90 private Long sourceId;
jurzua
parents:
diff changeset
91
jurzua
parents:
diff changeset
92 @Column(name="source_modif")
jurzua
parents:
diff changeset
93 private Long sourceModif;
jurzua
parents:
diff changeset
94
jurzua
parents:
diff changeset
95 @Column(name="source_obj_class")
jurzua
parents:
diff changeset
96 private String sourceObjectClass;
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 @Column(name="target_id")
jurzua
parents:
diff changeset
99 private Long targetId;
jurzua
parents:
diff changeset
100
jurzua
parents:
diff changeset
101 @Column(name="target_modif")
jurzua
parents:
diff changeset
102 private Long targetModif;
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104 @Column(name="target_obj_class")
jurzua
parents:
diff changeset
105 private String targetObjectClass;
jurzua
parents:
diff changeset
106
jurzua
parents:
diff changeset
107 @Transient
jurzua
parents:
diff changeset
108 private Entity source;
jurzua
parents:
diff changeset
109
jurzua
parents:
diff changeset
110 @Transient
jurzua
parents:
diff changeset
111 private Entity target;
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 @Transient
jurzua
parents:
diff changeset
114 private List<Attribute> attributes = new ArrayList<Attribute>();
jurzua
parents:
diff changeset
115
jurzua
parents:
diff changeset
116 public Attribute getAttributeByName(String name) {
jurzua
parents:
diff changeset
117 for (Attribute attribute : this.getAttributes()) {
jurzua
parents:
diff changeset
118 if (attribute.getObjectClass().equals(name)) {
jurzua
parents:
diff changeset
119 return attribute;
jurzua
parents:
diff changeset
120 }
jurzua
parents:
diff changeset
121 }
jurzua
parents:
diff changeset
122 return null;
jurzua
parents:
diff changeset
123 }
jurzua
parents:
diff changeset
124
jurzua
parents:
diff changeset
125 public void addAttribute(Attribute att){
jurzua
parents:
diff changeset
126 if(att != null){
jurzua
parents:
diff changeset
127 att.setSourceId(this.getId());
jurzua
parents:
diff changeset
128 att.setSourceModif(this.getModificationTime());
jurzua
parents:
diff changeset
129 att.setSystemStatus(this.getSystemStatus());
jurzua
parents:
diff changeset
130 this.attributes.add(att);
jurzua
parents:
diff changeset
131 }
jurzua
parents:
diff changeset
132 }
jurzua
parents:
diff changeset
133
jurzua
parents:
diff changeset
134 @Override
jurzua
parents:
diff changeset
135 public void setSystemStatus(String status) {
jurzua
parents:
diff changeset
136 super.setSystemStatus(status);
jurzua
parents:
diff changeset
137 if(this.attributes != null){
jurzua
parents:
diff changeset
138 for(Attribute att : this.attributes){
jurzua
parents:
diff changeset
139 att.setSystemStatus(status);
jurzua
parents:
diff changeset
140 }
jurzua
parents:
diff changeset
141 }
jurzua
parents:
diff changeset
142
jurzua
parents:
diff changeset
143 }
jurzua
parents:
diff changeset
144
jurzua
parents:
diff changeset
145 public List<Attribute> getAttributes() {
jurzua
parents:
diff changeset
146 return attributes;
jurzua
parents:
diff changeset
147 }
jurzua
parents:
diff changeset
148
jurzua
parents:
diff changeset
149 public void setAttributes(List<Attribute> attributes) {
jurzua
parents:
diff changeset
150 this.attributes = attributes;
jurzua
parents:
diff changeset
151 }
jurzua
parents:
diff changeset
152
jurzua
parents:
diff changeset
153 public String getSourceObjectClass() {
jurzua
parents:
diff changeset
154 return sourceObjectClass;
jurzua
parents:
diff changeset
155 }
jurzua
parents:
diff changeset
156
jurzua
parents:
diff changeset
157 public void setSourceObjectClass(String sourceObjectClass) {
jurzua
parents:
diff changeset
158 this.sourceObjectClass = sourceObjectClass;
jurzua
parents:
diff changeset
159 }
jurzua
parents:
diff changeset
160
jurzua
parents:
diff changeset
161 public String getTargetObjectClass() {
jurzua
parents:
diff changeset
162 return targetObjectClass;
jurzua
parents:
diff changeset
163 }
jurzua
parents:
diff changeset
164
jurzua
parents:
diff changeset
165 public void setTargetObjectClass(String targetObjectClass) {
jurzua
parents:
diff changeset
166 this.targetObjectClass = targetObjectClass;
jurzua
parents:
diff changeset
167 }
jurzua
parents:
diff changeset
168
jurzua
parents:
diff changeset
169 public Long getSourceModif() {
jurzua
parents:
diff changeset
170 return sourceModif;
jurzua
parents:
diff changeset
171 }
jurzua
parents:
diff changeset
172
jurzua
parents:
diff changeset
173 public void setSourceModif(Long sourceModif) {
jurzua
parents:
diff changeset
174 this.sourceModif = sourceModif;
jurzua
parents:
diff changeset
175 }
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 public Long getTargetModif() {
jurzua
parents:
diff changeset
178 return targetModif;
jurzua
parents:
diff changeset
179 }
jurzua
parents:
diff changeset
180
jurzua
parents:
diff changeset
181 public void setTargetModif(Long targetModif) {
jurzua
parents:
diff changeset
182 this.targetModif = targetModif;
jurzua
parents:
diff changeset
183 }
jurzua
parents:
diff changeset
184
jurzua
parents:
diff changeset
185 public Entity getSource() {
jurzua
parents:
diff changeset
186 return source;
jurzua
parents:
diff changeset
187 }
jurzua
parents:
diff changeset
188
jurzua
parents:
diff changeset
189 public void setSource(Entity src) {
jurzua
parents:
diff changeset
190 this.source = src;
jurzua
parents:
diff changeset
191 if(src != null){
jurzua
parents:
diff changeset
192 this.setSourceId(src.getId());
jurzua
parents:
diff changeset
193 this.setSourceModif(src.getModificationTime());
jurzua
parents:
diff changeset
194 this.setSourceObjectClass(src.getObjectClass());
jurzua
parents:
diff changeset
195 }
jurzua
parents:
diff changeset
196 }
jurzua
parents:
diff changeset
197
jurzua
parents:
diff changeset
198 public Entity getTarget() {
jurzua
parents:
diff changeset
199 return target;
jurzua
parents:
diff changeset
200 }
jurzua
parents:
diff changeset
201
jurzua
parents:
diff changeset
202 public void setTarget(Entity target) {
jurzua
parents:
diff changeset
203 this.target = target;
jurzua
parents:
diff changeset
204 if(target != null){
jurzua
parents:
diff changeset
205 this.setTargetId(target.getId());
jurzua
parents:
diff changeset
206 this.setTargetModif(target.getModificationTime());
jurzua
parents:
diff changeset
207 this.setTargetObjectClass(target.getObjectClass());
jurzua
parents:
diff changeset
208 }
jurzua
parents:
diff changeset
209 }
jurzua
parents:
diff changeset
210
jurzua
parents:
diff changeset
211
jurzua
parents:
diff changeset
212 public Long getSourceId() {
jurzua
parents:
diff changeset
213 return sourceId;
jurzua
parents:
diff changeset
214 }
jurzua
parents:
diff changeset
215
jurzua
parents:
diff changeset
216 public void setSourceId(Long sourceId) {
jurzua
parents:
diff changeset
217 this.sourceId = sourceId;
jurzua
parents:
diff changeset
218 }
jurzua
parents:
diff changeset
219
jurzua
parents:
diff changeset
220 public Long getTargetId() {
jurzua
parents:
diff changeset
221 return targetId;
jurzua
parents:
diff changeset
222 }
jurzua
parents:
diff changeset
223
jurzua
parents:
diff changeset
224 public void setTargetId(Long targetId) {
jurzua
parents:
diff changeset
225 this.targetId = targetId;
jurzua
parents:
diff changeset
226 }
jurzua
parents:
diff changeset
227
jurzua
parents:
diff changeset
228 public boolean equalsContent(Relation other){
jurzua
parents:
diff changeset
229 if(other == null){
jurzua
parents:
diff changeset
230 return false;
jurzua
parents:
diff changeset
231 }
jurzua
parents:
diff changeset
232
jurzua
parents:
diff changeset
233 if(StringUtils.equals(getOwnValue(), other.getOwnValue()) &&
jurzua
parents:
diff changeset
234 OMUtils.equals(getSourceId(), other.getSourceId()) &&
jurzua
parents:
diff changeset
235 OMUtils.equals(getTargetId(), other.getTargetId())){
jurzua
parents:
diff changeset
236 return true;
jurzua
parents:
diff changeset
237 }
jurzua
parents:
diff changeset
238
jurzua
parents:
diff changeset
239 return false;
jurzua
parents:
diff changeset
240 }
jurzua
parents:
diff changeset
241
jurzua
parents:
diff changeset
242
jurzua
parents:
diff changeset
243 @Override
jurzua
parents:
diff changeset
244 public String toString() {
jurzua
parents:
diff changeset
245 String source = ", Src[id=" + sourceId;
jurzua
parents:
diff changeset
246 if(getSource() != null)
jurzua
parents:
diff changeset
247 source += ", src=" + getSource().getOwnValue();
jurzua
parents:
diff changeset
248 source +="] ";
jurzua
parents:
diff changeset
249 String target = ", Tar[id=" + targetId;
jurzua
parents:
diff changeset
250 if(getTarget() != null)
jurzua
parents:
diff changeset
251 target += ", tar=" + getTarget().getOwnValue();
jurzua
parents:
diff changeset
252 target +="] ";
jurzua
parents:
diff changeset
253 return "Relation[" +
jurzua
parents:
diff changeset
254 "rowId=" + this.getRowId() + ", " +
jurzua
parents:
diff changeset
255 "id=" + getId() +", " +
jurzua
parents:
diff changeset
256 "ownValue=" + getOwnValue() + source + target + ", " +
jurzua
parents:
diff changeset
257 "sysStatus=" + this.getSystemStatus() + "]";
jurzua
parents:
diff changeset
258 }
jurzua
parents:
diff changeset
259
jurzua
parents:
diff changeset
260 @Override
jurzua
parents:
diff changeset
261 public int compareTo(Relation e) {
jurzua
parents:
diff changeset
262 if(e == null)
jurzua
parents:
diff changeset
263 return 1;
jurzua
parents:
diff changeset
264 if(StringUtils.isNotEmpty(this.getOwnValue()))
jurzua
parents:
diff changeset
265 return this.getOwnValue().compareTo(e.getOwnValue());
jurzua
parents:
diff changeset
266 else return 0;
jurzua
parents:
diff changeset
267 }
jurzua
parents:
diff changeset
268
jurzua
parents:
diff changeset
269 public PentaKey<RelKey, Long, Long, String, Long> getKey(){
jurzua
parents:
diff changeset
270 return new PentaKey<RelKey, Long, Long, String, Long>(
jurzua
parents:
diff changeset
271 new RelKey(this.getSourceId(), this.getTargetId(), this.getOwnValue()),
jurzua
parents:
diff changeset
272 this.getSourceId(),
jurzua
parents:
diff changeset
273 this.getTargetId(),
jurzua
parents:
diff changeset
274 this.getOwnValue(),
jurzua
parents:
diff changeset
275 this.getId());
jurzua
parents:
diff changeset
276 }
jurzua
parents:
diff changeset
277 }