annotate src/main/java/de/mpiwg/itgroup/ismi/event/beans/CopyEvent.java @ 95:12af756065b5

better transaction logging and some cleanup.
author casties
date Thu, 20 Oct 2016 14:09:28 +0200
parents 2e911857a759
children 22a18bfc66b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package de.mpiwg.itgroup.ismi.event.beans;
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
jurzua
parents:
diff changeset
6 import javax.faces.event.ActionEvent;
jurzua
parents:
diff changeset
7 import javax.faces.event.ValueChangeEvent;
jurzua
parents:
diff changeset
8 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
9
jurzua
parents:
diff changeset
10 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
11 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
12 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
13
jurzua
parents:
diff changeset
14 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
jurzua
parents:
diff changeset
15 import de.mpiwg.itgroup.ismi.auxObjects.lo.EventTextLO;
jurzua
parents:
diff changeset
16 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
jurzua
parents:
diff changeset
17
jurzua
parents:
diff changeset
18 public class CopyEvent extends AbstractEvent implements Serializable{
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 /**
jurzua
parents:
diff changeset
21 *
jurzua
parents:
diff changeset
22 */
jurzua
parents:
diff changeset
23 private static final long serialVersionUID = 1545705063133894571L;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 public static String OC = "COPY_EVENT";
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 private ListenerObject personCopiedForLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
28 private ListenerObject personCopyingTextLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
29 private ListenerObject repositoryLo = new ListenerObject(REPOSITORY, name);
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 private Calendar date;
jurzua
parents:
diff changeset
32
jurzua
parents:
diff changeset
33 @Override
jurzua
parents:
diff changeset
34 public void setEvent(Entity ev){
jurzua
parents:
diff changeset
35 reset();
jurzua
parents:
diff changeset
36 event = ev;
jurzua
parents:
diff changeset
37 if(event != null && event.isPersistent()){
jurzua
parents:
diff changeset
38 if(event.isLightweight()){
jurzua
parents:
diff changeset
39 event = getWrapper().getEntityContent(event);
jurzua
parents:
diff changeset
40 }
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 this.loadAttributes(this.event);
jurzua
parents:
diff changeset
43 this.date = updateCalendar(this.event.getAttributeByName("date"));
jurzua
parents:
diff changeset
44
jurzua
parents:
diff changeset
45 for (Relation rel : event.getSourceRelations()) {
jurzua
parents:
diff changeset
46 Entity target = null;
jurzua
parents:
diff changeset
47 if (rel.getOwnValue().equals(was_copied_for)) {
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 1
diff changeset
48 //EVENT was_copied_for PERSON
1
jurzua
parents:
diff changeset
49 target = getTargetRelation(rel);
jurzua
parents:
diff changeset
50 personCopiedForLo.setEntityAndAttribute0(target);
jurzua
parents:
diff changeset
51 }else if (rel.getOwnValue().equals(has_person_copying_text)) {
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 1
diff changeset
52 //EVENT has_person_copying_text PERSON
1
jurzua
parents:
diff changeset
53 target = getTargetRelation(rel);
jurzua
parents:
diff changeset
54 personCopyingTextLo.setEntityAndAttribute0(target);
jurzua
parents:
diff changeset
55
jurzua
parents:
diff changeset
56 } else if (rel.getOwnValue().equals(was_copied_in)) {
jurzua
parents:
diff changeset
57 target = getTargetRelation(rel);
jurzua
parents:
diff changeset
58 if(target.getObjectClass().equals(PLACE)){
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 1
diff changeset
59 //EVENT was_copied_in PLACE
1
jurzua
parents:
diff changeset
60 placeLo.setEntityAndAttribute0(target);
jurzua
parents:
diff changeset
61 }else if(target.getObjectClass().equals(REPOSITORY)){
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 1
diff changeset
62 //EVENT was_copied_in REPOSITORY
1
jurzua
parents:
diff changeset
63 repositoryLo.setEntityAndAttribute0(target);
jurzua
parents:
diff changeset
64 }
jurzua
parents:
diff changeset
65 } else if (rel.getOwnValue().equals(is_a_copy_of)) {
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 1
diff changeset
66 //EVENT is_a_copy_of WITNESS
1
jurzua
parents:
diff changeset
67 //WITNESS is_exemplar_of TEXT
jurzua
parents:
diff changeset
68 this.witness = getTargetRelation(rel);
jurzua
parents:
diff changeset
69 if(witness != null && witness.isPersistent()){
jurzua
parents:
diff changeset
70 witnessId = witness.getId();
jurzua
parents:
diff changeset
71 this.textLo.setEntityAndAttribute0( getTextOfWitness(witness));
jurzua
parents:
diff changeset
72 refreshWitnesses(textLo.entity);
jurzua
parents:
diff changeset
73 }
jurzua
parents:
diff changeset
74 }
jurzua
parents:
diff changeset
75 }
jurzua
parents:
diff changeset
76 }
jurzua
parents:
diff changeset
77 }
jurzua
parents:
diff changeset
78
jurzua
parents:
diff changeset
79 @Override
jurzua
parents:
diff changeset
80 public void reset(){
jurzua
parents:
diff changeset
81 super.reset();
jurzua
parents:
diff changeset
82 this.defObjectClass = OC;
jurzua
parents:
diff changeset
83
jurzua
parents:
diff changeset
84 if(textLo != null){
jurzua
parents:
diff changeset
85 textLo.reset();
jurzua
parents:
diff changeset
86 }else{
jurzua
parents:
diff changeset
87 textLo = new EventTextLO(TEXT, full_title_translit, this);
jurzua
parents:
diff changeset
88 }
jurzua
parents:
diff changeset
89
jurzua
parents:
diff changeset
90 if(personCopiedForLo != null){
jurzua
parents:
diff changeset
91 personCopiedForLo.reset();
jurzua
parents:
diff changeset
92 }else{
jurzua
parents:
diff changeset
93 personCopiedForLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
94 }
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96 if(personCopyingTextLo != null){
jurzua
parents:
diff changeset
97 personCopyingTextLo.reset();
jurzua
parents:
diff changeset
98 }else{
jurzua
parents:
diff changeset
99 personCopyingTextLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
100 }
jurzua
parents:
diff changeset
101
jurzua
parents:
diff changeset
102 if(placeLo != null){
jurzua
parents:
diff changeset
103 placeLo.reset();
jurzua
parents:
diff changeset
104 }else{
jurzua
parents:
diff changeset
105 placeLo = new ListenerObject(PLACE, name);
jurzua
parents:
diff changeset
106 }
jurzua
parents:
diff changeset
107
jurzua
parents:
diff changeset
108
jurzua
parents:
diff changeset
109 if(repositoryLo != null){
jurzua
parents:
diff changeset
110 repositoryLo.reset();
jurzua
parents:
diff changeset
111 }else{
jurzua
parents:
diff changeset
112 repositoryLo = new ListenerObject(REPOSITORY, name);
jurzua
parents:
diff changeset
113 }
jurzua
parents:
diff changeset
114
jurzua
parents:
diff changeset
115
jurzua
parents:
diff changeset
116
jurzua
parents:
diff changeset
117 this.date = new Calendar();
jurzua
parents:
diff changeset
118 this.witnessList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
119 }
jurzua
parents:
diff changeset
120
jurzua
parents:
diff changeset
121 /*
jurzua
parents:
diff changeset
122 public void listenerChangePersonCopyingText(ValueChangeEvent event) {
jurzua
parents:
diff changeset
123 this.personCopyingText = changeListener(event, personCopyingText, PERSON, name_translit);
jurzua
parents:
diff changeset
124 }
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 public void listenerChangePersonCopiedFor(ValueChangeEvent event) {
jurzua
parents:
diff changeset
127 this.personCopiedFor = changeListener(event, personCopiedFor, PERSON, name_translit);
jurzua
parents:
diff changeset
128 }
jurzua
parents:
diff changeset
129
jurzua
parents:
diff changeset
130 public void listenerChangePlace(ValueChangeEvent event) {
jurzua
parents:
diff changeset
131 this.place = changeListener(event, place, PLACE, name);
jurzua
parents:
diff changeset
132 }
jurzua
parents:
diff changeset
133
jurzua
parents:
diff changeset
134 public void listenerChangeRepository(ValueChangeEvent event) {
jurzua
parents:
diff changeset
135 this.repository = changeListener(event, repository, REPOSITORY, name);
jurzua
parents:
diff changeset
136 }*/
jurzua
parents:
diff changeset
137
jurzua
parents:
diff changeset
138 public void listenerSave(ActionEvent event) {
jurzua
parents:
diff changeset
139 this.save();
jurzua
parents:
diff changeset
140 }
jurzua
parents:
diff changeset
141
jurzua
parents:
diff changeset
142 @Override
jurzua
parents:
diff changeset
143 public String save(){
jurzua
parents:
diff changeset
144 super.save();
jurzua
parents:
diff changeset
145 if(!checkConsistency()){
jurzua
parents:
diff changeset
146 addGeneralMsg("Either the Witness, the Person or the Place is empty.");
jurzua
parents:
diff changeset
147 addGeneralMsg("The event could not be saved.");
jurzua
parents:
diff changeset
148 return null;
jurzua
parents:
diff changeset
149 }
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 try{
jurzua
parents:
diff changeset
152 getAttributes().put("date", this.date.toJSONString());
jurzua
parents:
diff changeset
153 event = updateEntityAttributes(event);
jurzua
parents:
diff changeset
154
jurzua
parents:
diff changeset
155 // EVENT -> was_copied_for -> PERSON
jurzua
parents:
diff changeset
156 event.replaceSourceRelation(personCopiedForLo.entity, PERSON, was_copied_for);
jurzua
parents:
diff changeset
157
jurzua
parents:
diff changeset
158 // EVENT -> has_person_copying_text -> PERSON
jurzua
parents:
diff changeset
159 event.replaceSourceRelation(personCopyingTextLo.entity, PERSON, has_person_copying_text);
jurzua
parents:
diff changeset
160
jurzua
parents:
diff changeset
161 // EVENT -> was_copied_in -> REPOSITORY
jurzua
parents:
diff changeset
162 event.replaceSourceRelation(repositoryLo.entity, REPOSITORY, was_copied_in);
jurzua
parents:
diff changeset
163
jurzua
parents:
diff changeset
164 // EVENT -> was_copied_in -> PLACE
jurzua
parents:
diff changeset
165 event.replaceSourceRelation(placeLo.entity, PLACE, was_copied_in);
jurzua
parents:
diff changeset
166
jurzua
parents:
diff changeset
167 // EVENT -> is_a_copy_of -> WITNESS
jurzua
parents:
diff changeset
168 if(witness.isLightweight()){
jurzua
parents:
diff changeset
169 this.witness = getWrapper().getEntityByIdWithContent(witness.getId());
jurzua
parents:
diff changeset
170 }
jurzua
parents:
diff changeset
171 event.replaceSourceRelation(witness, WITNESS, is_a_copy_of);
jurzua
parents:
diff changeset
172
jurzua
parents:
diff changeset
173 getWrapper().saveEntity(event, getSessionUserName());
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175 printSuccessSavingEntity();
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 }catch (Exception e) {
jurzua
parents:
diff changeset
178 addGeneralMsg(e.getMessage());
jurzua
parents:
diff changeset
179 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
180 }
jurzua
parents:
diff changeset
181 saveEnd();
jurzua
parents:
diff changeset
182 return null;
jurzua
parents:
diff changeset
183 }
jurzua
parents:
diff changeset
184
jurzua
parents:
diff changeset
185 public boolean checkConsistency(){
jurzua
parents:
diff changeset
186 if(this.witness == null ||
jurzua
parents:
diff changeset
187 this.textLo.entity == null ||
jurzua
parents:
diff changeset
188 this.repositoryLo.entity == null ||
jurzua
parents:
diff changeset
189 this.personCopiedForLo.entity == null ||
jurzua
parents:
diff changeset
190 this.personCopyingTextLo.entity == null){
jurzua
parents:
diff changeset
191 return false;
jurzua
parents:
diff changeset
192 }
jurzua
parents:
diff changeset
193 return true;
jurzua
parents:
diff changeset
194 }
jurzua
parents:
diff changeset
195
jurzua
parents:
diff changeset
196 public CopyEvent(Entity event) {
jurzua
parents:
diff changeset
197 super(event);
jurzua
parents:
diff changeset
198 }
jurzua
parents:
diff changeset
199
jurzua
parents:
diff changeset
200 public CopyEvent(){
jurzua
parents:
diff changeset
201 super(new Entity(Node.TYPE_ABOX, OC, false));
jurzua
parents:
diff changeset
202 }
jurzua
parents:
diff changeset
203
jurzua
parents:
diff changeset
204 public ListenerObject getPersonCopiedForLo() {
jurzua
parents:
diff changeset
205 return personCopiedForLo;
jurzua
parents:
diff changeset
206 }
jurzua
parents:
diff changeset
207
jurzua
parents:
diff changeset
208 public void setPersonCopiedForLo(ListenerObject personCopiedForLo) {
jurzua
parents:
diff changeset
209 this.personCopiedForLo = personCopiedForLo;
jurzua
parents:
diff changeset
210 }
jurzua
parents:
diff changeset
211
jurzua
parents:
diff changeset
212 public ListenerObject getPersonCopyingTextLo() {
jurzua
parents:
diff changeset
213 return personCopyingTextLo;
jurzua
parents:
diff changeset
214 }
jurzua
parents:
diff changeset
215
jurzua
parents:
diff changeset
216 public void setPersonCopyingTextLo(ListenerObject personCopyingTextLo) {
jurzua
parents:
diff changeset
217 this.personCopyingTextLo = personCopyingTextLo;
jurzua
parents:
diff changeset
218 }
jurzua
parents:
diff changeset
219
jurzua
parents:
diff changeset
220 public ListenerObject getRepositoryLo() {
jurzua
parents:
diff changeset
221 return repositoryLo;
jurzua
parents:
diff changeset
222 }
jurzua
parents:
diff changeset
223
jurzua
parents:
diff changeset
224 public void setRepositoryLo(ListenerObject repositoryLo) {
jurzua
parents:
diff changeset
225 this.repositoryLo = repositoryLo;
jurzua
parents:
diff changeset
226 }
jurzua
parents:
diff changeset
227
jurzua
parents:
diff changeset
228 public Calendar getDate() {
jurzua
parents:
diff changeset
229 return date;
jurzua
parents:
diff changeset
230 }
jurzua
parents:
diff changeset
231
jurzua
parents:
diff changeset
232 public void setDate(Calendar date) {
jurzua
parents:
diff changeset
233 this.date = date;
jurzua
parents:
diff changeset
234 }
jurzua
parents:
diff changeset
235 }