comparison src/main/java/de/mpiwg/itgroup/ismi/event/beans/TransferEvent.java @ 1:2e911857a759

(none)
author jurzua
date Wed, 29 Oct 2014 14:00:28 +0000
parents
children 12af756065b5
comparison
equal deleted inserted replaced
0:74df02964906 1:2e911857a759
1 package de.mpiwg.itgroup.ismi.event.beans;
2
3 import java.io.Serializable;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import javax.faces.event.ActionEvent;
8 import javax.faces.event.ValueChangeEvent;
9 import javax.faces.model.SelectItem;
10
11 import org.mpi.openmind.repository.bo.Attribute;
12 import org.mpi.openmind.repository.bo.Entity;
13 import org.mpi.openmind.repository.bo.Node;
14 import org.mpi.openmind.repository.bo.Relation;
15
16 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
17 import de.mpiwg.itgroup.ismi.auxObjects.lo.EventTextLO;
18 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
19
20 public class TransferEvent extends AbstractEvent implements Serializable{
21
22 private static final long serialVersionUID = -3606229569295260209L;
23
24 public static String OC = "TRANSFER_EVENT";
25
26 private boolean selectedPersonFrom;
27 private ListenerObject personFromLo = new ListenerObject(PERSON, name_translit);
28 private ListenerObject repositoryFromLo = new ListenerObject(REPOSITORY, name);
29
30 private boolean selectedPersonTo;
31 private ListenerObject personToLo = new ListenerObject(PERSON, name_translit);
32 private ListenerObject repositoryToLo = new ListenerObject(REPOSITORY, name);
33
34 private boolean selectedPlaceOriginalLocation;
35 private ListenerObject placeOriginalLocationLo = new ListenerObject(PLACE, name);
36 private ListenerObject repositoryOriginalLocationLo = new ListenerObject(REPOSITORY, name);
37
38 private boolean selectedPlaceNewLocation;
39 private ListenerObject placeNewLocationLo = new ListenerObject(PLACE, name);
40 private ListenerObject repositoryNewLocationLo = new ListenerObject(REPOSITORY, name);
41
42 private List<SelectItem> suggestedTransferOptions = new ArrayList<SelectItem>();
43
44 public TransferEvent(Entity event) {
45 super(event);
46 this.refreshTransferOptions();
47 }
48
49 public TransferEvent(){
50 super(new Entity(Node.TYPE_ABOX, OC, false));
51 this.refreshTransferOptions();
52 }
53
54 @Override
55 public void setEvent(Entity ev){
56 reset();
57 event = ev;
58 if(event != null && event.isPersistent()){
59 if(event.isLightweight()){
60 event = getWrapper().getEntityContent(event);
61 }
62
63 this.loadAttributes(this.event);
64 this.date = updateCalendar(this.event.getAttributeByName("date"));
65
66 for (Relation rel : event.getSourceRelations()) {
67 Entity target = null;
68 if (rel.getOwnValue().equals(was_transferred_from)) {
69 // EVENT -> was_transferred_from -> PERSON/REPOSITORY
70 target = getTargetRelation(rel);
71 if(target.getObjectClass().equals(PERSON)){
72 personFromLo.setEntityAndAttribute0(target);
73 selectedPersonFrom = true;
74 }else{
75 repositoryFromLo.setEntityAndAttribute0(target);
76 selectedPersonFrom = false;
77 }
78
79 }else if (rel.getOwnValue().equals(was_transferred_to)) {
80 // EVENT -> was_transferred_to -> PERSON/REPOSITORY
81 target = getTargetRelation(rel);
82 if(target.getObjectClass().equals(PERSON)){
83 personToLo.setEntityAndAttribute0(target);
84 selectedPersonTo = true;
85 }else{
86 repositoryToLo.setEntityAndAttribute0(target);
87 selectedPersonTo = false;
88 }
89 } else if (rel.getOwnValue().equals(has_original_location)) {
90 // EVENT -> has_original_location -> PLACE/REPOSITORY
91 target = getTargetRelation(rel);
92 if(target.getObjectClass().equals(PLACE)){
93 placeOriginalLocationLo.setEntityAndAttribute0(target);
94 selectedPlaceOriginalLocation = true;
95 }else{
96 repositoryOriginalLocationLo.setEntityAndAttribute0(target);
97 selectedPlaceOriginalLocation = false;
98 }
99 } else if (rel.getOwnValue().equals(has_new_location)) {
100 // EVENT -> has_new_location -> PLACE/REPOSITORY
101 target = getTargetRelation(rel);
102 if(target.getObjectClass().equals(PLACE)){
103 placeNewLocationLo.setEntityAndAttribute0(target);
104 selectedPlaceNewLocation = true;
105 }else{
106 repositoryNewLocationLo.setEntityAndAttribute0(target);
107 selectedPlaceNewLocation = false;
108 }
109 } else if (rel.getOwnValue().equals(is_a_transfer_of)) {
110 //EVENT study_of WITNESS
111 //WITNESS is_exemplar_of TEXT
112 this.witness = getTargetRelation(rel);
113 if(witness != null && witness.isPersistent()){
114 witnessId = witness.getId();
115 this.textLo.setEntityAndAttribute0( getTextOfWitness(witness));
116 refreshWitnesses(textLo.entity);
117 }
118 } else if (rel.getOwnValue().equals(was_transferred_in)) {
119 target = getTargetRelation(rel);
120 this.placeLo.setEntityAndAttribute0(target);
121 }
122 }
123 }
124 }
125
126 /*
127 public void listenerChangePersonFrom(ValueChangeEvent event) {
128 this.personFrom = changeListener(event, personFrom, PERSON, name_translit);
129 }
130
131 public void listenerChangePersonTo(ValueChangeEvent event) {
132 this.personTo = changeListener(event, personTo, PERSON, name_translit);
133 }
134
135 public void listenerChangeRepositoryFrom(ValueChangeEvent event) {
136 this.repositoryFrom = changeListener(event, repositoryFrom, REPOSITORY, name);
137 }
138
139 public void listenerChangeRepositoryTo(ValueChangeEvent event) {
140 this.repositoryTo = changeListener(event, repositoryTo, REPOSITORY, name);
141 }*/
142
143 public void listenerChangeSelectionFrom(ActionEvent event){
144 this.selectedPersonFrom = !selectedPersonFrom;
145 }
146
147 public void listenerChangeSelectionTo(ActionEvent event){
148 this.selectedPersonTo = !selectedPersonTo;
149 }
150 /*
151 public void listenerChangePlaceOriginalLocation(ValueChangeEvent event){
152 this.placeOriginalLocation = changeListener(event, placeOriginalLocation, PLACE, name);
153 }
154
155 public void listenerChangePlaceNewLocation(ValueChangeEvent event){
156 this.placeNewLocation = changeListener(event, placeNewLocation, PLACE, name);
157 }
158
159 public void listenerChangeRepositoryOriginalLocation(ValueChangeEvent event){
160 this.repositoryOriginalLocation = changeListener(event, repositoryOriginalLocation, REPOSITORY, name);
161 }
162
163 public void listenerChangeRepositoryNewLocation(ValueChangeEvent event){
164 this.repositoryNewLocation = changeListener(event, repositoryNewLocation, REPOSITORY, name);
165 }
166 */
167 public void listenerChangeSelectionNewLocation(ActionEvent event){
168 this.selectedPlaceNewLocation = !selectedPlaceNewLocation;
169 }
170
171 public void listenerChangeSelectionOriginalLocation(ActionEvent event){
172 this.selectedPlaceOriginalLocation = !selectedPlaceOriginalLocation;
173 }
174
175 @Override
176 public void reset(){
177 super.reset();
178 this.selectedPersonFrom = true;
179 this.selectedPersonTo = true;
180 this.selectedPlaceOriginalLocation = true;
181 this.selectedPlaceNewLocation = true;
182
183 this.defObjectClass = OC;
184 this.personFromLo = new ListenerObject(PERSON, name_translit);
185 this.repositoryFromLo = new ListenerObject(REPOSITORY, name);
186 this.personToLo = new ListenerObject(PERSON, name_translit);
187 this.repositoryToLo = new ListenerObject(REPOSITORY, name);
188
189 if(textLo != null){
190 textLo.reset();
191 }else{
192 textLo = new EventTextLO(TEXT, full_title_translit, this);
193 }
194
195 if(placeLo != null){
196 placeLo.reset();
197 }else{
198 placeLo = new ListenerObject(PLACE, name);
199 }
200
201
202 this.date = new Calendar();
203 this.witnessList = new ArrayList<SelectItem>();
204
205 this.placeNewLocationLo = new ListenerObject(PLACE, name);
206 this.repositoryNewLocationLo = new ListenerObject(REPOSITORY, name);
207 this.personToLo = new ListenerObject(PERSON, name_translit);
208 this.repositoryToLo = new ListenerObject(REPOSITORY, name);
209 this.placeOriginalLocationLo = new ListenerObject(PLACE, name);
210 this.repositoryOriginalLocationLo = new ListenerObject(REPOSITORY, name);
211 /*
212 this.repositoryFromLo.reset();
213 this.repositoryToLo.reset();
214 this.placeNewLocationLo.reset();
215 this.placeOriginalLocationLo.reset();
216 this.repositoryNewLocationLo.reset();
217 this.repositoryOriginalLocationLo.reset();
218 */
219 }
220
221
222 public void listenerRefreshTransferOptions(ActionEvent event){
223 this.refreshTransferOptions();
224 }
225
226 private void refreshTransferOptions(){
227 this.suggestedTransferOptions = new ArrayList<SelectItem>();
228 suggestedTransferOptions.add(new SelectItem(null, "--choose--"));
229 Attribute binding = getWrapper().getDefAttributeByOwnValue(OC, "options_for_transfer");
230 if(binding != null){
231 for(String s : binding.getPossibleValuesList()){
232 this.suggestedTransferOptions.add(new SelectItem(s));
233 }
234 }
235 }
236
237 public void listenerSave(ActionEvent event) {
238 this.save();
239 }
240
241 @Override
242 public String save(){
243 super.save();
244 if(!checkConsistency()){
245 addGeneralMsg("Either the Witness, the Person or the Place is empty.");
246 addGeneralMsg("The event could not be saved.");
247 return null;
248 }
249
250 try{
251 getAttributes().put("date", this.date.toJSONString());
252 event = updateEntityAttributes(event);
253
254 // EVENT -> was_studied_by -> WITNESS
255 if(witness.isLightweight()){
256 this.witness = getWrapper().getEntityByIdWithContent(witness.getId());
257 }
258 event.replaceSourceRelation(witness, WITNESS, is_a_transfer_of);
259
260 // EVENT -> was_transferred_from -> PERSON/REPOSITORY
261 if(isSelectedPersonFrom()){
262 event.replaceSourceRelation(personFromLo.entity, PERSON, was_transferred_from);
263 event.removeAllSourceRelations(was_transferred_from, REPOSITORY);
264 }else{
265 event.replaceSourceRelation(repositoryFromLo.entity, REPOSITORY, was_transferred_from);
266 event.removeAllSourceRelations(was_transferred_from, PERSON);
267 }
268
269 // EVENT -> was_transferred_to -> PERSON/REPOSITORY
270 if(isSelectedPersonTo()){
271 event.replaceSourceRelation(personToLo.entity, PERSON, was_transferred_to);
272 event.removeAllSourceRelations(was_transferred_to, REPOSITORY);
273 }else{
274 event.replaceSourceRelation(repositoryToLo.entity, REPOSITORY, was_transferred_to);
275 event.removeAllSourceRelations(was_transferred_to, PERSON);
276 }
277
278 // EVENT -> has_original_location -> PLACE/REPOSITORY
279 if(isSelectedPlaceOriginalLocation()){
280 event.replaceSourceRelation(placeOriginalLocationLo.entity, PLACE, has_original_location);
281 event.removeAllSourceRelations(has_original_location, REPOSITORY);
282 }else{
283 event.replaceSourceRelation(repositoryOriginalLocationLo.entity, REPOSITORY, has_original_location);
284 event.removeAllSourceRelations(has_original_location, PLACE);
285 }
286
287 // EVENT -> has_new_location -> PLACE/REPOSITORY
288 if(isSelectedPlaceNewLocation()){
289 event.replaceSourceRelation(placeNewLocationLo.entity, PLACE, has_new_location);
290 event.removeAllSourceRelations(has_new_location, REPOSITORY);
291 }else{
292 event.replaceSourceRelation(repositoryNewLocationLo.entity, REPOSITORY, has_new_location);
293 event.removeAllSourceRelations(has_new_location, PLACE);
294 }
295
296 // EVENT -> was_transferred_in -> PLACE
297 event.replaceSourceRelation(placeLo.entity, PLACE, was_transferred_in);
298
299 getWrapper().saveEntity(event, getSessionUserName());
300
301 printSuccessSavingEntity();
302
303 }catch (Exception e) {
304 addGeneralMsg(e.getMessage());
305 logger.error(e.getMessage(), e);
306 }
307 saveEnd();
308 return null;
309 }
310
311 public boolean checkConsistency(){
312 //TODO
313 if(this.witness == null || this.textLo.entity == null ){
314 return false;
315 }
316 return true;
317 }
318
319
320
321 public boolean isSelectedPersonFrom() {
322 return selectedPersonFrom;
323 }
324
325 public boolean isSelectedPersonTo() {
326 return selectedPersonTo;
327 }
328
329 public List<SelectItem> getSuggestedTransferOptions() {
330 return suggestedTransferOptions;
331 }
332
333 public void setSuggestedTransferOptions(
334 List<SelectItem> suggestedTransferOptions) {
335 this.suggestedTransferOptions = suggestedTransferOptions;
336 }
337
338 public boolean isSelectedPlaceOriginalLocation() {
339 return selectedPlaceOriginalLocation;
340 }
341
342
343
344 public boolean isSelectedPlaceNewLocation() {
345 return selectedPlaceNewLocation;
346 }
347
348 public ListenerObject getPersonFromLo() {
349 return personFromLo;
350 }
351
352 public void setPersonFromLo(ListenerObject personFromLo) {
353 this.personFromLo = personFromLo;
354 }
355
356 public ListenerObject getRepositoryFromLo() {
357 return repositoryFromLo;
358 }
359
360 public void setRepositoryFromLo(ListenerObject repositoryFromLo) {
361 this.repositoryFromLo = repositoryFromLo;
362 }
363
364 public ListenerObject getPersonToLo() {
365 return personToLo;
366 }
367
368 public void setPersonToLo(ListenerObject personToLo) {
369 this.personToLo = personToLo;
370 }
371
372 public ListenerObject getRepositoryToLo() {
373 return repositoryToLo;
374 }
375
376 public void setRepositoryToLo(ListenerObject repositoryToLo) {
377 this.repositoryToLo = repositoryToLo;
378 }
379
380 public ListenerObject getPlaceOriginalLocationLo() {
381 return placeOriginalLocationLo;
382 }
383
384 public void setPlaceOriginalLocationLo(ListenerObject placeOriginalLocationLo) {
385 this.placeOriginalLocationLo = placeOriginalLocationLo;
386 }
387
388 public ListenerObject getRepositoryOriginalLocationLo() {
389 return repositoryOriginalLocationLo;
390 }
391
392 public void setRepositoryOriginalLocationLo(
393 ListenerObject repositoryOriginalLocationLo) {
394 this.repositoryOriginalLocationLo = repositoryOriginalLocationLo;
395 }
396
397 public ListenerObject getPlaceNewLocationLo() {
398 return placeNewLocationLo;
399 }
400
401 public void setPlaceNewLocationLo(ListenerObject placeNewLocationLo) {
402 this.placeNewLocationLo = placeNewLocationLo;
403 }
404
405 public ListenerObject getRepositoryNewLocationLo() {
406 return repositoryNewLocationLo;
407 }
408
409 public void setRepositoryNewLocationLo(ListenerObject repositoryNewLocationLo) {
410 this.repositoryNewLocationLo = repositoryNewLocationLo;
411 }
412
413 public void setSelectedPersonFrom(boolean selectedPersonFrom) {
414 this.selectedPersonFrom = selectedPersonFrom;
415 }
416
417 public void setSelectedPersonTo(boolean selectedPersonTo) {
418 this.selectedPersonTo = selectedPersonTo;
419 }
420
421 public void setSelectedPlaceOriginalLocation(
422 boolean selectedPlaceOriginalLocation) {
423 this.selectedPlaceOriginalLocation = selectedPlaceOriginalLocation;
424 }
425
426 public void setSelectedPlaceNewLocation(boolean selectedPlaceNewLocation) {
427 this.selectedPlaceNewLocation = selectedPlaceNewLocation;
428 }
429
430
431
432 }