annotate src/main/java/de/mpiwg/itgroup/ismi/event/beans/StudyEvent.java @ 111:22a18bfc66b0

new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
author casties
date Fri, 09 Dec 2016 21:18:27 +0100
parents 2e911857a759
children 59f26a5ef2b3
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 import java.util.List;
jurzua
parents:
diff changeset
6
jurzua
parents:
diff changeset
7 import javax.faces.event.ActionEvent;
jurzua
parents:
diff changeset
8 import javax.faces.event.ValueChangeEvent;
jurzua
parents:
diff changeset
9 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
10
jurzua
parents:
diff changeset
11 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
12 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
15
jurzua
parents:
diff changeset
16 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
jurzua
parents:
diff changeset
17 import de.mpiwg.itgroup.ismi.auxObjects.lo.EventTextLO;
jurzua
parents:
diff changeset
18 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 public class StudyEvent extends AbstractEvent implements Serializable{
jurzua
parents:
diff changeset
21
jurzua
parents:
diff changeset
22 /**
jurzua
parents:
diff changeset
23 *
jurzua
parents:
diff changeset
24 */
jurzua
parents:
diff changeset
25 private static final long serialVersionUID = 2242991945890055323L;
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 public static String OC = "STUDY_EVENT";
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 private ListenerObject personLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
30 private ListenerObject advisorLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
31 private ListenerObject repositoryLo = new ListenerObject(REPOSITORY, name);
jurzua
parents:
diff changeset
32
jurzua
parents:
diff changeset
33 private List<SelectItem> suggestedEngagementOptions = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
34
jurzua
parents:
diff changeset
35 public StudyEvent(){
jurzua
parents:
diff changeset
36 super(new Entity(Node.TYPE_ABOX, OC, false));
jurzua
parents:
diff changeset
37 refreshEngagementOptions();
jurzua
parents:
diff changeset
38 }
jurzua
parents:
diff changeset
39
jurzua
parents:
diff changeset
40 public StudyEvent(Entity event){
jurzua
parents:
diff changeset
41 super(event);
jurzua
parents:
diff changeset
42 refreshEngagementOptions();
jurzua
parents:
diff changeset
43 }
jurzua
parents:
diff changeset
44
jurzua
parents:
diff changeset
45 public void listenerRefreshEngagementOptions(ActionEvent event){
jurzua
parents:
diff changeset
46 this.refreshEngagementOptions();
jurzua
parents:
diff changeset
47 }
jurzua
parents:
diff changeset
48
jurzua
parents:
diff changeset
49 private void refreshEngagementOptions(){
jurzua
parents:
diff changeset
50 this.suggestedEngagementOptions = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
51 suggestedEngagementOptions.add(new SelectItem(null, "--choose--"));
jurzua
parents:
diff changeset
52 Attribute binding = getWrapper().getDefAttributeByOwnValue(OC, "options_for_engagement");
jurzua
parents:
diff changeset
53 if(binding != null){
jurzua
parents:
diff changeset
54 for(String s : binding.getPossibleValuesList()){
jurzua
parents:
diff changeset
55 this.suggestedEngagementOptions.add(new SelectItem(s));
jurzua
parents:
diff changeset
56 }
jurzua
parents:
diff changeset
57 }
jurzua
parents:
diff changeset
58 }
jurzua
parents:
diff changeset
59
jurzua
parents:
diff changeset
60 @Override
jurzua
parents:
diff changeset
61 public void setEvent(Entity ev){
jurzua
parents:
diff changeset
62 reset();
jurzua
parents:
diff changeset
63 event = ev;
jurzua
parents:
diff changeset
64 if(event != null && event.isPersistent()){
jurzua
parents:
diff changeset
65 if(event.isLightweight()){
jurzua
parents:
diff changeset
66 event = getWrapper().getEntityContent(event);
jurzua
parents:
diff changeset
67 }
jurzua
parents:
diff changeset
68
jurzua
parents:
diff changeset
69 this.loadAttributes(this.event);
jurzua
parents:
diff changeset
70 this.date = updateCalendar(this.event.getAttributeByName("date"));
jurzua
parents:
diff changeset
71
jurzua
parents:
diff changeset
72 for (Relation rel : event.getSourceRelations()) {
jurzua
parents:
diff changeset
73 Entity target = null;
jurzua
parents:
diff changeset
74 if (rel.getOwnValue().equals(was_studied_by)) {
jurzua
parents:
diff changeset
75 //EVENT was_studied_by PERSON
jurzua
parents:
diff changeset
76 target = getTargetRelation(rel);
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 1
diff changeset
77 personLo.setEntityAndAttribute(target);
1
jurzua
parents:
diff changeset
78 }else if (rel.getOwnValue().equals(was_advised_by)) {
jurzua
parents:
diff changeset
79 //EVENT was_advised_by PERSON
jurzua
parents:
diff changeset
80 target = getTargetRelation(rel);
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 1
diff changeset
81 advisorLo.setEntityAndAttribute(target);
1
jurzua
parents:
diff changeset
82
jurzua
parents:
diff changeset
83 } else if (rel.getOwnValue().equals(was_studied_in)) {
jurzua
parents:
diff changeset
84 target = getTargetRelation(rel);
jurzua
parents:
diff changeset
85 if(target.getObjectClass().equals(PLACE)){
jurzua
parents:
diff changeset
86 //EVENT was_studied_in PLACE
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 1
diff changeset
87 placeLo.setEntityAndAttribute(target);
1
jurzua
parents:
diff changeset
88 }else if(target.getObjectClass().equals(REPOSITORY)){
jurzua
parents:
diff changeset
89 //EVENT was_studied_in REPOSITORY
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 1
diff changeset
90 repositoryLo.setEntityAndAttribute(target);
1
jurzua
parents:
diff changeset
91 }
jurzua
parents:
diff changeset
92 } else if (rel.getOwnValue().equals(is_a_study_of)) {
jurzua
parents:
diff changeset
93 //EVENT study_of WITNESS
jurzua
parents:
diff changeset
94 //WITNESS is_exemplar_of TEXT
jurzua
parents:
diff changeset
95 this.witness = getTargetRelation(rel);
jurzua
parents:
diff changeset
96 if(witness != null && witness.isPersistent()){
jurzua
parents:
diff changeset
97 witnessId = witness.getId();
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 1
diff changeset
98 this.textLo.setEntityAndAttribute( getTextOfWitness(witness));
1
jurzua
parents:
diff changeset
99 refreshWitnesses(textLo.entity);
jurzua
parents:
diff changeset
100 }
jurzua
parents:
diff changeset
101 }
jurzua
parents:
diff changeset
102 }
jurzua
parents:
diff changeset
103 }
jurzua
parents:
diff changeset
104 }
jurzua
parents:
diff changeset
105
jurzua
parents:
diff changeset
106 public void listenerSave(ActionEvent event) {
jurzua
parents:
diff changeset
107 this.save();
jurzua
parents:
diff changeset
108 }
jurzua
parents:
diff changeset
109
jurzua
parents:
diff changeset
110 @Override
jurzua
parents:
diff changeset
111 public String save(){
jurzua
parents:
diff changeset
112 super.save();
jurzua
parents:
diff changeset
113 if(!checkConsistency()){
jurzua
parents:
diff changeset
114 addGeneralMsg("Either the Witness, the Person or the Place is empty.");
jurzua
parents:
diff changeset
115 addGeneralMsg("The event could not be saved.");
jurzua
parents:
diff changeset
116 return null;
jurzua
parents:
diff changeset
117 }
jurzua
parents:
diff changeset
118
jurzua
parents:
diff changeset
119 try{
jurzua
parents:
diff changeset
120 getAttributes().put("date", this.date.toJSONString());
jurzua
parents:
diff changeset
121 event = updateEntityAttributes(event);
jurzua
parents:
diff changeset
122
jurzua
parents:
diff changeset
123 // EVENT -> was_studied_by -> PERSON
jurzua
parents:
diff changeset
124 event.replaceSourceRelation(personLo.entity, PERSON, was_studied_by);
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 // EVENT -> was_advised_by -> PERSON
jurzua
parents:
diff changeset
127 event.replaceSourceRelation(advisorLo.entity, PERSON, was_advised_by);
jurzua
parents:
diff changeset
128
jurzua
parents:
diff changeset
129 // EVENT -> was_studied_in -> REPOSITORY
jurzua
parents:
diff changeset
130 event.replaceSourceRelation(repositoryLo.entity, REPOSITORY, was_studied_in);
jurzua
parents:
diff changeset
131 //event.replaceSourceRelation(getRepositoryLo().entity, REPOSITORY, was_studied_in);
jurzua
parents:
diff changeset
132
jurzua
parents:
diff changeset
133 // EVENT -> was_studied_in -> PLACE
jurzua
parents:
diff changeset
134 event.replaceSourceRelation(placeLo.entity, PLACE, was_studied_in);
jurzua
parents:
diff changeset
135
jurzua
parents:
diff changeset
136 // EVENT -> was_studied_by -> WITNESS
jurzua
parents:
diff changeset
137 if(witness.isLightweight()){
jurzua
parents:
diff changeset
138 witness = getWrapper().getEntityByIdWithContent(witness.getId());
jurzua
parents:
diff changeset
139 }
jurzua
parents:
diff changeset
140 event.replaceSourceRelation(witness, WITNESS, is_a_study_of);
jurzua
parents:
diff changeset
141
jurzua
parents:
diff changeset
142 getWrapper().saveEntity(event, getSessionUserName());
jurzua
parents:
diff changeset
143
jurzua
parents:
diff changeset
144 printSuccessSavingEntity();
jurzua
parents:
diff changeset
145
jurzua
parents:
diff changeset
146 }catch (Exception e) {
jurzua
parents:
diff changeset
147 addGeneralMsg(e.getMessage());
jurzua
parents:
diff changeset
148 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
149 }
jurzua
parents:
diff changeset
150 saveEnd();
jurzua
parents:
diff changeset
151 return null;
jurzua
parents:
diff changeset
152 }
jurzua
parents:
diff changeset
153
jurzua
parents:
diff changeset
154 /*
jurzua
parents:
diff changeset
155 public void listenerChangePerson(ValueChangeEvent event) {
jurzua
parents:
diff changeset
156 this.person = changeListener(event, person, PERSON, name_translit);
jurzua
parents:
diff changeset
157 }
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 public void listenerChangeAdvisor(ValueChangeEvent event) {
jurzua
parents:
diff changeset
160 this.advisor = changeListener(event, advisor, PERSON, name_translit);
jurzua
parents:
diff changeset
161 }
jurzua
parents:
diff changeset
162
jurzua
parents:
diff changeset
163 public void listenerChangeRepository(ValueChangeEvent event) {
jurzua
parents:
diff changeset
164 this.repository = changeListener(event, repository, REPOSITORY, name);
jurzua
parents:
diff changeset
165 }
jurzua
parents:
diff changeset
166 */
jurzua
parents:
diff changeset
167 @Override
jurzua
parents:
diff changeset
168 public void reset(){
jurzua
parents:
diff changeset
169 super.reset();
jurzua
parents:
diff changeset
170 this.defObjectClass = OC;
jurzua
parents:
diff changeset
171 if(personLo != null){
jurzua
parents:
diff changeset
172 personLo.reset();
jurzua
parents:
diff changeset
173 }else{
jurzua
parents:
diff changeset
174 personLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
175 }
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 if(advisorLo != null){
jurzua
parents:
diff changeset
178 advisorLo.reset();
jurzua
parents:
diff changeset
179 }else{
jurzua
parents:
diff changeset
180 advisorLo = new ListenerObject(PERSON, name_translit);
jurzua
parents:
diff changeset
181 }
jurzua
parents:
diff changeset
182
jurzua
parents:
diff changeset
183 if(textLo != null){
jurzua
parents:
diff changeset
184 textLo.reset();
jurzua
parents:
diff changeset
185 }else{
jurzua
parents:
diff changeset
186 textLo = new EventTextLO(TEXT, full_title_translit, this);
jurzua
parents:
diff changeset
187 }
jurzua
parents:
diff changeset
188 if(placeLo != null){
jurzua
parents:
diff changeset
189 placeLo.reset();
jurzua
parents:
diff changeset
190 }else{
jurzua
parents:
diff changeset
191 placeLo = new ListenerObject(PLACE, name);
jurzua
parents:
diff changeset
192 }
jurzua
parents:
diff changeset
193
jurzua
parents:
diff changeset
194 if(repositoryLo != null){
jurzua
parents:
diff changeset
195 repositoryLo.reset();
jurzua
parents:
diff changeset
196 }else{
jurzua
parents:
diff changeset
197 repositoryLo = new ListenerObject(REPOSITORY, name);
jurzua
parents:
diff changeset
198 }
jurzua
parents:
diff changeset
199
jurzua
parents:
diff changeset
200 this.date = new Calendar();
jurzua
parents:
diff changeset
201 this.witnessList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
202 this.refreshEngagementOptions();
jurzua
parents:
diff changeset
203 }
jurzua
parents:
diff changeset
204
jurzua
parents:
diff changeset
205 public boolean checkConsistency(){
jurzua
parents:
diff changeset
206 if(this.witness == null || this.textLo.entity == null || this.repositoryLo.entity == null || this.personLo.entity == null){
jurzua
parents:
diff changeset
207 return false;
jurzua
parents:
diff changeset
208 }
jurzua
parents:
diff changeset
209 return true;
jurzua
parents:
diff changeset
210 }
jurzua
parents:
diff changeset
211
jurzua
parents:
diff changeset
212 public ListenerObject getPersonLo() {
jurzua
parents:
diff changeset
213 return personLo;
jurzua
parents:
diff changeset
214 }
jurzua
parents:
diff changeset
215
jurzua
parents:
diff changeset
216 public void setPersonLo(ListenerObject personLo) {
jurzua
parents:
diff changeset
217 this.personLo = personLo;
jurzua
parents:
diff changeset
218 }
jurzua
parents:
diff changeset
219
jurzua
parents:
diff changeset
220 public ListenerObject getAdvisorLo() {
jurzua
parents:
diff changeset
221 return advisorLo;
jurzua
parents:
diff changeset
222 }
jurzua
parents:
diff changeset
223
jurzua
parents:
diff changeset
224 public void setAdvisorLo(ListenerObject advisorLo) {
jurzua
parents:
diff changeset
225 this.advisorLo = advisorLo;
jurzua
parents:
diff changeset
226 }
jurzua
parents:
diff changeset
227
jurzua
parents:
diff changeset
228 public ListenerObject getRepositoryLo() {
jurzua
parents:
diff changeset
229 return repositoryLo;
jurzua
parents:
diff changeset
230 }
jurzua
parents:
diff changeset
231
jurzua
parents:
diff changeset
232 public void setRepositoryLo(ListenerObject repositoryLo) {
jurzua
parents:
diff changeset
233 this.repositoryLo = repositoryLo;
jurzua
parents:
diff changeset
234 }
jurzua
parents:
diff changeset
235
jurzua
parents:
diff changeset
236 public List<SelectItem> getSuggestedEngagementOptions() {
jurzua
parents:
diff changeset
237 return suggestedEngagementOptions;
jurzua
parents:
diff changeset
238 }
jurzua
parents:
diff changeset
239
jurzua
parents:
diff changeset
240 public void setSuggestedEngagementOptions(
jurzua
parents:
diff changeset
241 List<SelectItem> suggestedEngagementOptions) {
jurzua
parents:
diff changeset
242 this.suggestedEngagementOptions = suggestedEngagementOptions;
jurzua
parents:
diff changeset
243 }
jurzua
parents:
diff changeset
244
jurzua
parents:
diff changeset
245 }