annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentCityBean.java @ 89:a142159f09c1

working on better place editing.
author casties
date Mon, 10 Oct 2016 19:58:35 +0200
parents 2e911857a759
children d172201d24ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package de.mpiwg.itgroup.ismi.entry.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
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
7 import javax.faces.event.ActionEvent;
1
jurzua
parents:
diff changeset
8 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
9
jurzua
parents:
diff changeset
10 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
11 import org.apache.log4j.Logger;
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
12 import org.mpi.openmind.repository.bo.Attribute;
1
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
15 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
16
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
17 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
1
jurzua
parents:
diff changeset
18 import de.mpiwg.itgroup.ismi.utils.SelectableObject;
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
21 public class CurrentCityBean extends CodexEditorTemplate implements Serializable {
1
jurzua
parents:
diff changeset
22 private static final long serialVersionUID = -8609055286714729597L;
jurzua
parents:
diff changeset
23
jurzua
parents:
diff changeset
24 private static Logger logger = Logger.getLogger(CurrentCityBean.class);
jurzua
parents:
diff changeset
25
jurzua
parents:
diff changeset
26 private List<SelectItem> suggestedTypes;
jurzua
parents:
diff changeset
27
jurzua
parents:
diff changeset
28 private List<SelectableObject<Entity>> placesPartOfThis;
jurzua
parents:
diff changeset
29 private List<SelectableObject<Entity>> peopleLivedIn;
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 public CurrentCityBean() {
jurzua
parents:
diff changeset
32 this.reset();
jurzua
parents:
diff changeset
33
jurzua
parents:
diff changeset
34 }
jurzua
parents:
diff changeset
35
jurzua
parents:
diff changeset
36 @Override
jurzua
parents:
diff changeset
37 public void reset(){
jurzua
parents:
diff changeset
38 super.reset();
jurzua
parents:
diff changeset
39 this.entity = new Entity(Node.TYPE_ABOX, PLACE, false);
jurzua
parents:
diff changeset
40 this.suggestedTypes = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 this.placesPartOfThis = new ArrayList<SelectableObject<Entity>>();
jurzua
parents:
diff changeset
43 this.peopleLivedIn = new ArrayList<SelectableObject<Entity>>();
jurzua
parents:
diff changeset
44
jurzua
parents:
diff changeset
45 //setDefinition(getDefinition(PLACE));
jurzua
parents:
diff changeset
46 setDefObjectClass(PLACE);
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
47 // old types
1
jurzua
parents:
diff changeset
48 String[] types = new String[]{"city","institution", "city_part", "region"};
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
49 // get new types from definition
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
50 Attribute typeAtt = getWrapper().getDefAttributeByOwnValue(PLACE, "type");
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
51 if (typeAtt != null) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
52 types = typeAtt.getPossibleValuesList().toArray(types);
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
53 }
1
jurzua
parents:
diff changeset
54 fillList(suggestedTypes, types);
jurzua
parents:
diff changeset
55
jurzua
parents:
diff changeset
56 registerChecker(getCountryLo(), "Country not valid!");
jurzua
parents:
diff changeset
57 }
jurzua
parents:
diff changeset
58
jurzua
parents:
diff changeset
59 @Override
jurzua
parents:
diff changeset
60 public void setEntity(Entity city) {
jurzua
parents:
diff changeset
61 this.reset();
jurzua
parents:
diff changeset
62 this.entity = city;
jurzua
parents:
diff changeset
63
jurzua
parents:
diff changeset
64 if(this.entity.isPersistent()){
jurzua
parents:
diff changeset
65 if(city.isLightweight()){
jurzua
parents:
diff changeset
66 this.entity = getWrapper().getEntityContent(this.entity);
jurzua
parents:
diff changeset
67 }
jurzua
parents:
diff changeset
68
jurzua
parents:
diff changeset
69 this.loadAttributes(this.entity);
jurzua
parents:
diff changeset
70
jurzua
parents:
diff changeset
71 List<Entity> list = getWrapper().getTargetsForSourceRelation(city, is_part_of, PLACE, -1);
jurzua
parents:
diff changeset
72 if(list.size() > 0){
jurzua
parents:
diff changeset
73 this.setCountry(list.get(0));
jurzua
parents:
diff changeset
74 if(list.size() > 1){
jurzua
parents:
diff changeset
75 addErrorMsg("Ontological inconsistency. This place 'is part of' " + list.size() + " other places.");
jurzua
parents:
diff changeset
76 addErrorMsg("List:");
jurzua
parents:
diff changeset
77 for(Entity place : list){
jurzua
parents:
diff changeset
78 addErrorMsg(place.getOwnValue() + " [" + place.getId() + "]");
jurzua
parents:
diff changeset
79 }
jurzua
parents:
diff changeset
80 }
jurzua
parents:
diff changeset
81 }
jurzua
parents:
diff changeset
82
jurzua
parents:
diff changeset
83 for(Entity place : getWrapper().getSourcesForTargetRelation(city, is_part_of, PLACE, -1)){
jurzua
parents:
diff changeset
84 String label = place.getOwnValue() + " [" + place.getId() + "]";
jurzua
parents:
diff changeset
85 this.placesPartOfThis.add(new SelectableObject<Entity>(place, label));
jurzua
parents:
diff changeset
86 }
jurzua
parents:
diff changeset
87
jurzua
parents:
diff changeset
88 for(Entity person : getWrapper().getSourcesForTargetRelation(city, lived_in, PERSON, -1)){
jurzua
parents:
diff changeset
89 String label = person.getOwnValue() + " [" + person.getId() + "]";
jurzua
parents:
diff changeset
90 this.peopleLivedIn.add(new SelectableObject<Entity>(person, label));
jurzua
parents:
diff changeset
91 }
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 //this.loadReferences(this.entity);
jurzua
parents:
diff changeset
94 this.loadEndNoteRefs();
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
97 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
98 }
jurzua
parents:
diff changeset
99 }
jurzua
parents:
diff changeset
100
jurzua
parents:
diff changeset
101 @Override
jurzua
parents:
diff changeset
102 public String save(){
jurzua
parents:
diff changeset
103 super.save();
jurzua
parents:
diff changeset
104 try {
jurzua
parents:
diff changeset
105
jurzua
parents:
diff changeset
106 CheckResults cr = getCheckResults();
jurzua
parents:
diff changeset
107 if (cr.hasErrors){
jurzua
parents:
diff changeset
108 getSessionBean().setErrorMessages(cr);
jurzua
parents:
diff changeset
109 getSessionBean().setDisplayError(true);
jurzua
parents:
diff changeset
110 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
111 return "SAVE_ERROR";
jurzua
parents:
diff changeset
112 }
jurzua
parents:
diff changeset
113
jurzua
parents:
diff changeset
114 this.entity = this.updateEntityAttributes(this.entity);
jurzua
parents:
diff changeset
115
jurzua
parents:
diff changeset
116 String cityName = (this.entity.getAttributeByName(name) != null) ? this.entity.getAttributeByName(name).getValue() : "";
jurzua
parents:
diff changeset
117 if(StringUtils.isNotEmpty(cityName)){
jurzua
parents:
diff changeset
118 if(!checkUnityCity(cityName, (isSelectedSaveAsNew()) ? null : this.entity.getId(), this.getCountryLo().entity)){
jurzua
parents:
diff changeset
119 this.renderUnityCheckerDialog();
jurzua
parents:
diff changeset
120 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
121 return "SAVE_ERROR";
jurzua
parents:
diff changeset
122 }
jurzua
parents:
diff changeset
123 }else{
jurzua
parents:
diff changeset
124 this.addErrorMsg("Ths entity has not been saved, because its name was empty.");
jurzua
parents:
diff changeset
125 this.addErrorMsg("You must enter a name.");
jurzua
parents:
diff changeset
126 return "SAVE_ERROR";
jurzua
parents:
diff changeset
127 }
jurzua
parents:
diff changeset
128
jurzua
parents:
diff changeset
129 //this.entity.removeSourceRelation("is_part_of", this.getCountryLo().entity);
jurzua
parents:
diff changeset
130 //replaceSourceRelation(this.entity, this.getCountryLo().entity, "PLACE", "is_part_of");
jurzua
parents:
diff changeset
131 this.entity.replaceSourceRelation(this.getCountryLo().entity, PLACE, is_part_of);
jurzua
parents:
diff changeset
132
jurzua
parents:
diff changeset
133 this.entity.removeAllTargetRelationsByName(is_part_of);
jurzua
parents:
diff changeset
134 for(SelectableObject<Entity> so : this.placesPartOfThis){
jurzua
parents:
diff changeset
135 Entity place = getWrapper().getEntityByIdWithContent(so.getObj().getId());
jurzua
parents:
diff changeset
136 Relation isPartOf = new Relation(place, this.entity, is_part_of);
jurzua
parents:
diff changeset
137 }
jurzua
parents:
diff changeset
138
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
139 /*
1
jurzua
parents:
diff changeset
140 this.entity.removeAllTargetRelationsByName(lived_in);
jurzua
parents:
diff changeset
141 for(SelectableObject<Entity> so : this.peopleLivedIn){
jurzua
parents:
diff changeset
142 Entity person = getWrapper().getEntityByIdWithContent(so.getObj().getId());
jurzua
parents:
diff changeset
143 Relation livedIn = new Relation(person, this.entity, lived_in);
jurzua
parents:
diff changeset
144 }
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
145 */
1
jurzua
parents:
diff changeset
146
jurzua
parents:
diff changeset
147 //REFERENCE -> is_reference_of -> THIS
jurzua
parents:
diff changeset
148 //this.entity = this.prepareReferencesToSave(this.entity);
jurzua
parents:
diff changeset
149 this.prepareEndNoteRefs2Save();
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 //String lastAction = "";
jurzua
parents:
diff changeset
152 if(this.isSelectedSaveAsNew()){
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
153 //this.entity.removeAllTargetRelations(is_in, REPOSITORY);
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
154 //this.entity = getWrapper().saveEntityAsNew(this.entity, getSessionUser().getEmail());
1
jurzua
parents:
diff changeset
155 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
156 //lastAction = "Save place as new entity";
jurzua
parents:
diff changeset
157 }else{
jurzua
parents:
diff changeset
158 this.entity = getWrapper().saveEntity(this.entity, getSessionUser().getEmail());
jurzua
parents:
diff changeset
159 //lastAction = "Save place";
jurzua
parents:
diff changeset
160 }
jurzua
parents:
diff changeset
161 //setActionInfo(lastAction);
jurzua
parents:
diff changeset
162 this.generateSecundaryOW(this.entity, getSessionUser().getEmail());
jurzua
parents:
diff changeset
163 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
164
jurzua
parents:
diff changeset
165 logger.info("Entity saved - Time = " + (System.currentTimeMillis() - start) + ", " + entity);
jurzua
parents:
diff changeset
166 this.printSuccessSavingEntity();
jurzua
parents:
diff changeset
167
jurzua
parents:
diff changeset
168 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
169
jurzua
parents:
diff changeset
170 } catch (Exception e) {
jurzua
parents:
diff changeset
171 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
172 e.printStackTrace();
jurzua
parents:
diff changeset
173 this.printInternalError(e);
jurzua
parents:
diff changeset
174 }
jurzua
parents:
diff changeset
175 saveEnd();
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 return PAGE_EDITOR;
jurzua
parents:
diff changeset
178 }
jurzua
parents:
diff changeset
179
jurzua
parents:
diff changeset
180 public void listenerRemovePlacesPartOfThis(){
jurzua
parents:
diff changeset
181 for(SelectableObject<Entity> so : new ArrayList<SelectableObject<Entity>>(this.placesPartOfThis)){
jurzua
parents:
diff changeset
182 if(so.isSelected()){
jurzua
parents:
diff changeset
183 this.placesPartOfThis.remove(so);
jurzua
parents:
diff changeset
184 }
jurzua
parents:
diff changeset
185 }
jurzua
parents:
diff changeset
186 }
jurzua
parents:
diff changeset
187
jurzua
parents:
diff changeset
188 public void listenerRemovePeopleLivedIn(){
jurzua
parents:
diff changeset
189 for(SelectableObject<Entity> so : new ArrayList<SelectableObject<Entity>>(this.peopleLivedIn)){
jurzua
parents:
diff changeset
190 if(so.isSelected()){
jurzua
parents:
diff changeset
191 this.peopleLivedIn.remove(so);
jurzua
parents:
diff changeset
192 }
jurzua
parents:
diff changeset
193 }
jurzua
parents:
diff changeset
194 }
jurzua
parents:
diff changeset
195
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
196 public void removeThisCountryAction(ActionEvent event) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
197 if (this.getCountryLo().entity != null) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
198 this.setCountryLo(new ListenerObject());
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
199 }
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
200 }
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
201
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
202
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
203
1
jurzua
parents:
diff changeset
204 public String saveAsNewEntity(){
jurzua
parents:
diff changeset
205 this.setSelectedSaveAsNew(true);
jurzua
parents:
diff changeset
206 return save();
jurzua
parents:
diff changeset
207 }
jurzua
parents:
diff changeset
208 public List<SelectItem> getSuggestedTypes() {
jurzua
parents:
diff changeset
209 return suggestedTypes;
jurzua
parents:
diff changeset
210 }
jurzua
parents:
diff changeset
211 public void setSuggestedTypes(List<SelectItem> suggestedTypes) {
jurzua
parents:
diff changeset
212 this.suggestedTypes = suggestedTypes;
jurzua
parents:
diff changeset
213 }
jurzua
parents:
diff changeset
214
jurzua
parents:
diff changeset
215 public List<SelectableObject<Entity>> getPlacesPartOfThis() {
jurzua
parents:
diff changeset
216 return placesPartOfThis;
jurzua
parents:
diff changeset
217 }
jurzua
parents:
diff changeset
218
jurzua
parents:
diff changeset
219 public void setPlacesPartOfThis(List<SelectableObject<Entity>> placesPartOfThis) {
jurzua
parents:
diff changeset
220 this.placesPartOfThis = placesPartOfThis;
jurzua
parents:
diff changeset
221 }
jurzua
parents:
diff changeset
222
jurzua
parents:
diff changeset
223 public List<SelectableObject<Entity>> getPeopleLivedIn() {
jurzua
parents:
diff changeset
224 return peopleLivedIn;
jurzua
parents:
diff changeset
225 }
jurzua
parents:
diff changeset
226
jurzua
parents:
diff changeset
227 public void setPeopleLivedIn(List<SelectableObject<Entity>> peopleLivedIn) {
jurzua
parents:
diff changeset
228 this.peopleLivedIn = peopleLivedIn;
jurzua
parents:
diff changeset
229 }
jurzua
parents:
diff changeset
230 }