annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentCityBean.java @ 121:6f0e9a333c15

misidentification of witness mostly works now.
author casties
date Mon, 09 Jan 2017 20:37:29 +0100
parents 99f9a55a4957
children 28a0c2726466
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;
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
18 import de.mpiwg.itgroup.ismi.util.guiComponents.EntityList;
1
jurzua
parents:
diff changeset
19 import de.mpiwg.itgroup.ismi.utils.SelectableObject;
jurzua
parents:
diff changeset
20
jurzua
parents:
diff changeset
21
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
22 public class CurrentCityBean extends CodexEditorTemplate implements Serializable {
1
jurzua
parents:
diff changeset
23 private static final long serialVersionUID = -8609055286714729597L;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 private static Logger logger = Logger.getLogger(CurrentCityBean.class);
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 private List<SelectItem> suggestedTypes;
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 private List<SelectableObject<Entity>> placesPartOfThis;
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
30 //private List<SelectableObject<Entity>> peopleLivedIn;
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
31 private EntityList aliasList;
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
32
1
jurzua
parents:
diff changeset
33 public CurrentCityBean() {
jurzua
parents:
diff changeset
34 this.reset();
jurzua
parents:
diff changeset
35 }
jurzua
parents:
diff changeset
36
jurzua
parents:
diff changeset
37 @Override
jurzua
parents:
diff changeset
38 public void reset(){
jurzua
parents:
diff changeset
39 super.reset();
jurzua
parents:
diff changeset
40 this.entity = new Entity(Node.TYPE_ABOX, PLACE, false);
jurzua
parents:
diff changeset
41 this.suggestedTypes = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
42
jurzua
parents:
diff changeset
43 this.placesPartOfThis = new ArrayList<SelectableObject<Entity>>();
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
44 //this.peopleLivedIn = new ArrayList<SelectableObject<Entity>>();
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
45 this.aliasList = new EntityList(ALIAS, "alias", getWrapper(), getUserName());
1
jurzua
parents:
diff changeset
46
jurzua
parents:
diff changeset
47 //setDefinition(getDefinition(PLACE));
jurzua
parents:
diff changeset
48 setDefObjectClass(PLACE);
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
49 // old types
1
jurzua
parents:
diff changeset
50 String[] types = new String[]{"city","institution", "city_part", "region"};
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
51 // get new types from definition
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
52 Attribute typeAtt = getWrapper().getDefAttributeByOwnValue(PLACE, "type");
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
53 if (typeAtt != null) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
54 types = typeAtt.getPossibleValuesList().toArray(types);
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
55 }
1
jurzua
parents:
diff changeset
56 fillList(suggestedTypes, types);
jurzua
parents:
diff changeset
57
jurzua
parents:
diff changeset
58 registerChecker(getCountryLo(), "Country not valid!");
jurzua
parents:
diff changeset
59 }
jurzua
parents:
diff changeset
60
jurzua
parents:
diff changeset
61 @Override
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
62 public void setEntity(Entity city) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
63 this.reset();
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
64 this.entity = city;
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
65
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
66 if (this.entity.isPersistent()) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
67 // load attributes and relations of Entity
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
68 if (city.isLightweight()) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
69 this.entity = getWrapper().getEntityContent(this.entity);
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
70 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
71 // load entity attributes into bean
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
72 this.loadAttributes(this.entity);
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
73
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
74 /*
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
75 * create list of places this place is part_of
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
76 */
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
77 List<Entity> list = getWrapper().getTargetsForSourceRelation(city, is_part_of, PLACE, -1);
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
78 if (list.size() > 0) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
79 this.setCountry(list.get(0));
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
80 // part_of more than one place
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
81 if (list.size() > 1) {
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
82 addErrorMsg("Inconsistency: this place 'is part of' " + list.size() + " other places!");
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
83 addErrorMsg("List:");
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
84 for (Entity place : list) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
85 addErrorMsg(place.getOwnValue() + " [" + place.getId() + "]");
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
86 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
87 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
88 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
89
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
90 /*
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
91 * create list of places that are part of this place
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
92 */
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
93 for (Entity place : getWrapper().getSourcesForTargetRelation(city, is_part_of, PLACE, -1)) {
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
94 String label = place.getOwnValue() + " [" + place.getId() + "]";
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
95 this.placesPartOfThis.add(new SelectableObject<Entity>(place, label));
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
96 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
97
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
98 /*
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
99 * create list of alias names of this place
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
100 */
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
101 for (Entity alias : getWrapper().getSourcesForTargetRelation(city, is_alias_name_of, ALIAS, -1)) {
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
102 this.aliasList.add(alias);
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
103 }
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
104
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
105 // load references
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
106 this.loadEndNoteRefs();
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
107
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
108 this.setCurrentId(this.entity.getId().toString());
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
109 // check consistency and set checkmark(s)
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
110 this.checkConsistencyFromCountryToCodex();
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
111 }
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
112 }
1
jurzua
parents:
diff changeset
113
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
114 /* (non-Javadoc)
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
115 * @see de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean#save()
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
116 */
1
jurzua
parents:
diff changeset
117 @Override
jurzua
parents:
diff changeset
118 public String save(){
jurzua
parents:
diff changeset
119 super.save();
jurzua
parents:
diff changeset
120 try {
jurzua
parents:
diff changeset
121
jurzua
parents:
diff changeset
122 CheckResults cr = getCheckResults();
jurzua
parents:
diff changeset
123 if (cr.hasErrors){
jurzua
parents:
diff changeset
124 getSessionBean().setErrorMessages(cr);
jurzua
parents:
diff changeset
125 getSessionBean().setDisplayError(true);
jurzua
parents:
diff changeset
126 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
127 return "SAVE_ERROR";
jurzua
parents:
diff changeset
128 }
jurzua
parents:
diff changeset
129
jurzua
parents:
diff changeset
130 this.entity = this.updateEntityAttributes(this.entity);
jurzua
parents:
diff changeset
131
jurzua
parents:
diff changeset
132 String cityName = (this.entity.getAttributeByName(name) != null) ? this.entity.getAttributeByName(name).getValue() : "";
jurzua
parents:
diff changeset
133 if(StringUtils.isNotEmpty(cityName)){
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
134 // check if name is unique
1
jurzua
parents:
diff changeset
135 if(!checkUnityCity(cityName, (isSelectedSaveAsNew()) ? null : this.entity.getId(), this.getCountryLo().entity)){
jurzua
parents:
diff changeset
136 this.renderUnityCheckerDialog();
jurzua
parents:
diff changeset
137 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
138 return "SAVE_ERROR";
jurzua
parents:
diff changeset
139 }
jurzua
parents:
diff changeset
140 }else{
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
141 this.addErrorMsg("This place has not been saved, because its name was empty.");
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
142 this.addErrorMsg("Please enter a name.");
1
jurzua
parents:
diff changeset
143 return "SAVE_ERROR";
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145
jurzua
parents:
diff changeset
146 this.entity.replaceSourceRelation(this.getCountryLo().entity, PLACE, is_part_of);
jurzua
parents:
diff changeset
147
jurzua
parents:
diff changeset
148 this.entity.removeAllTargetRelationsByName(is_part_of);
jurzua
parents:
diff changeset
149 for(SelectableObject<Entity> so : this.placesPartOfThis){
jurzua
parents:
diff changeset
150 Entity place = getWrapper().getEntityByIdWithContent(so.getObj().getId());
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
151 new Relation(place, this.entity, is_part_of);
1
jurzua
parents:
diff changeset
152 }
jurzua
parents:
diff changeset
153
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
154 /*
1
jurzua
parents:
diff changeset
155 this.entity.removeAllTargetRelationsByName(lived_in);
jurzua
parents:
diff changeset
156 for(SelectableObject<Entity> so : this.peopleLivedIn){
jurzua
parents:
diff changeset
157 Entity person = getWrapper().getEntityByIdWithContent(so.getObj().getId());
jurzua
parents:
diff changeset
158 Relation livedIn = new Relation(person, this.entity, lived_in);
jurzua
parents:
diff changeset
159 }
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
160 */
1
jurzua
parents:
diff changeset
161
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
162 //ALIAS -> is_alias_name_of -> PERSON
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
163 this.entity.removeAllTargetRelationsByName(is_alias_name_of);
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
164 for(Entity alias : this.aliasList.getEntities()){
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
165 Entity alias0 = getWrapper().getEntityByIdWithContent(alias.getId());
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
166 new Relation(alias0, this.entity, is_alias_name_of);
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
167 }
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
168
1
jurzua
parents:
diff changeset
169 //REFERENCE -> is_reference_of -> THIS
jurzua
parents:
diff changeset
170 //this.entity = this.prepareReferencesToSave(this.entity);
jurzua
parents:
diff changeset
171 this.prepareEndNoteRefs2Save();
jurzua
parents:
diff changeset
172
jurzua
parents:
diff changeset
173 //String lastAction = "";
jurzua
parents:
diff changeset
174 if(this.isSelectedSaveAsNew()){
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
175 //this.entity.removeAllTargetRelations(is_in, REPOSITORY);
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
176 //this.entity = getWrapper().saveEntityAsNew(this.entity, getSessionUser().getEmail());
1
jurzua
parents:
diff changeset
177 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
178 //lastAction = "Save place as new entity";
jurzua
parents:
diff changeset
179 }else{
jurzua
parents:
diff changeset
180 this.entity = getWrapper().saveEntity(this.entity, getSessionUser().getEmail());
jurzua
parents:
diff changeset
181 //lastAction = "Save place";
jurzua
parents:
diff changeset
182 }
jurzua
parents:
diff changeset
183 //setActionInfo(lastAction);
91
d172201d24ad more comments and refactorings.
casties
parents: 89
diff changeset
184 this.updateRelatedOW(this.entity, getSessionUser().getEmail());
1
jurzua
parents:
diff changeset
185 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
186
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
187 logger.debug("Place saved - Time = " + (System.currentTimeMillis() - start) + ", " + entity);
1
jurzua
parents:
diff changeset
188 this.printSuccessSavingEntity();
jurzua
parents:
diff changeset
189
jurzua
parents:
diff changeset
190 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
191
jurzua
parents:
diff changeset
192 } catch (Exception e) {
jurzua
parents:
diff changeset
193 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
194 this.printInternalError(e);
jurzua
parents:
diff changeset
195 }
jurzua
parents:
diff changeset
196 saveEnd();
jurzua
parents:
diff changeset
197
jurzua
parents:
diff changeset
198 return PAGE_EDITOR;
jurzua
parents:
diff changeset
199 }
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201 public void listenerRemovePlacesPartOfThis(){
jurzua
parents:
diff changeset
202 for(SelectableObject<Entity> so : new ArrayList<SelectableObject<Entity>>(this.placesPartOfThis)){
jurzua
parents:
diff changeset
203 if(so.isSelected()){
jurzua
parents:
diff changeset
204 this.placesPartOfThis.remove(so);
jurzua
parents:
diff changeset
205 }
jurzua
parents:
diff changeset
206 }
jurzua
parents:
diff changeset
207 }
jurzua
parents:
diff changeset
208
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
209 /* public void listenerRemovePeopleLivedIn(){
1
jurzua
parents:
diff changeset
210 for(SelectableObject<Entity> so : new ArrayList<SelectableObject<Entity>>(this.peopleLivedIn)){
jurzua
parents:
diff changeset
211 if(so.isSelected()){
jurzua
parents:
diff changeset
212 this.peopleLivedIn.remove(so);
jurzua
parents:
diff changeset
213 }
jurzua
parents:
diff changeset
214 }
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
215 } */
1
jurzua
parents:
diff changeset
216
89
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
217 public void removeThisCountryAction(ActionEvent event) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
218 if (this.getCountryLo().entity != null) {
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
219 this.setCountryLo(new ListenerObject());
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
220 }
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
221 }
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
222
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
223
a142159f09c1 working on better place editing.
casties
parents: 1
diff changeset
224
1
jurzua
parents:
diff changeset
225 public String saveAsNewEntity(){
jurzua
parents:
diff changeset
226 this.setSelectedSaveAsNew(true);
jurzua
parents:
diff changeset
227 return save();
jurzua
parents:
diff changeset
228 }
jurzua
parents:
diff changeset
229 public List<SelectItem> getSuggestedTypes() {
jurzua
parents:
diff changeset
230 return suggestedTypes;
jurzua
parents:
diff changeset
231 }
jurzua
parents:
diff changeset
232 public void setSuggestedTypes(List<SelectItem> suggestedTypes) {
jurzua
parents:
diff changeset
233 this.suggestedTypes = suggestedTypes;
jurzua
parents:
diff changeset
234 }
jurzua
parents:
diff changeset
235
jurzua
parents:
diff changeset
236 public List<SelectableObject<Entity>> getPlacesPartOfThis() {
jurzua
parents:
diff changeset
237 return placesPartOfThis;
jurzua
parents:
diff changeset
238 }
jurzua
parents:
diff changeset
239
jurzua
parents:
diff changeset
240 public void setPlacesPartOfThis(List<SelectableObject<Entity>> placesPartOfThis) {
jurzua
parents:
diff changeset
241 this.placesPartOfThis = placesPartOfThis;
jurzua
parents:
diff changeset
242 }
jurzua
parents:
diff changeset
243
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
244 /* public List<SelectableObject<Entity>> getPeopleLivedIn() {
1
jurzua
parents:
diff changeset
245 return peopleLivedIn;
jurzua
parents:
diff changeset
246 }
jurzua
parents:
diff changeset
247
jurzua
parents:
diff changeset
248 public void setPeopleLivedIn(List<SelectableObject<Entity>> peopleLivedIn) {
jurzua
parents:
diff changeset
249 this.peopleLivedIn = peopleLivedIn;
107
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
250 } */
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
251
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
252 /**
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
253 * @return the aliasList
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
254 */
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
255 public EntityList getAliasList() {
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
256 return aliasList;
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
257 }
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
258
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
259 /**
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
260 * @param aliasList the aliasList to set
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
261 */
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
262 public void setAliasList(EntityList aliasList) {
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
263 this.aliasList = aliasList;
99f9a55a4957 add alias to place entry form.
casties
parents: 106
diff changeset
264 }
1
jurzua
parents:
diff changeset
265 }