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

misidentification of witness mostly works now.
author casties
date Mon, 09 Jan 2017 20:37:29 +0100
parents 22a18bfc66b0
children
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.util.ArrayList;
jurzua
parents:
diff changeset
4 import java.util.Collections;
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.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
12 import org.apache.log4j.Logger;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
15 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
16
jurzua
parents:
diff changeset
17 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
jurzua
parents:
diff changeset
18 import de.mpiwg.itgroup.ismi.auxObjects.lo.WitnessCityLO;
jurzua
parents:
diff changeset
19 import de.mpiwg.itgroup.ismi.auxObjects.lo.WitnessCollectionLO;
jurzua
parents:
diff changeset
20 import de.mpiwg.itgroup.ismi.auxObjects.lo.WitnessCountryLO;
jurzua
parents:
diff changeset
21 import de.mpiwg.itgroup.ismi.auxObjects.lo.WitnessRepositoryLO;
jurzua
parents:
diff changeset
22 import de.mpiwg.itgroup.ismi.util.guiComponents.StatusImage;
jurzua
parents:
diff changeset
23 import de.mpiwg.itgroup.ismi.utils.SelectItemSort;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25
jurzua
parents:
diff changeset
26 /**
jurzua
parents:
diff changeset
27 * CODEX -> is_part_of -> COLLECTION
jurzua
parents:
diff changeset
28 * COLLECTION -> is_part_of -> REPOSITORY
jurzua
parents:
diff changeset
29 * REPOSITORY -> is_in -> PLACE[city]
jurzua
parents:
diff changeset
30 * PLACE[city] -> is_part_of -> PLACE[country]
jurzua
parents:
diff changeset
31 * @author jurzua
jurzua
parents:
diff changeset
32 *
jurzua
parents:
diff changeset
33 */
jurzua
parents:
diff changeset
34 public class CodexEditorTemplate extends UnityChecker {
jurzua
parents:
diff changeset
35
jurzua
parents:
diff changeset
36 private static final long serialVersionUID = 7580021280544772497L;
jurzua
parents:
diff changeset
37 private static Logger logger = Logger.getLogger(CodexEditorTemplate.class);
jurzua
parents:
diff changeset
38 public static int MAX_CODICES = 1000;
jurzua
parents:
diff changeset
39 public static int MAX_REPOSITORIES = 100;
jurzua
parents:
diff changeset
40 public static int MAX_COLLECTIONS = 100;
jurzua
parents:
diff changeset
41 public static int MAX_PLACES = 100;
jurzua
parents:
diff changeset
42
jurzua
parents:
diff changeset
43 private ListenerObject countryLo;
jurzua
parents:
diff changeset
44 private ListenerObject cityLo;
jurzua
parents:
diff changeset
45 private ListenerObject repositoryLo;
jurzua
parents:
diff changeset
46 private ListenerObject collectionLo;
jurzua
parents:
diff changeset
47 private ListenerObject codexLo;
jurzua
parents:
diff changeset
48
jurzua
parents:
diff changeset
49 private List<SelectItem> citiesInCurrentCountry;
jurzua
parents:
diff changeset
50 private List<SelectItem> repositoriesInCurrentCity;
jurzua
parents:
diff changeset
51 private List<SelectItem> collectionsInCurrentRepository;
jurzua
parents:
diff changeset
52 private List<SelectItem> shelfMarksInCurrentCollection;
jurzua
parents:
diff changeset
53
jurzua
parents:
diff changeset
54 private boolean thereExistMoreCodices = false;
jurzua
parents:
diff changeset
55
jurzua
parents:
diff changeset
56 public CodexEditorTemplate(){
jurzua
parents:
diff changeset
57 logger.debug("Init: " + this.getClass().getName());
jurzua
parents:
diff changeset
58 this.reset();
jurzua
parents:
diff changeset
59 }
jurzua
parents:
diff changeset
60
jurzua
parents:
diff changeset
61 @Override
jurzua
parents:
diff changeset
62 public void reset(){
jurzua
parents:
diff changeset
63 super.reset();
jurzua
parents:
diff changeset
64 this.countryLo = new WitnessCountryLO(PLACE, "name", this);
jurzua
parents:
diff changeset
65 this.cityLo = new WitnessCityLO(PLACE, "name", this);
jurzua
parents:
diff changeset
66 this.repositoryLo = new WitnessRepositoryLO(REPOSITORY, "name", this);
jurzua
parents:
diff changeset
67 this.collectionLo = new WitnessCollectionLO(COLLECTION, "name", this);
jurzua
parents:
diff changeset
68 this.codexLo = new ListenerObject(CODEX, "identifier");
jurzua
parents:
diff changeset
69
jurzua
parents:
diff changeset
70 this.citiesInCurrentCountry = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
71 this.repositoriesInCurrentCity = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
72 this.collectionsInCurrentRepository = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
73 this.shelfMarksInCurrentCollection = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 this.thereExistMoreCodices = false;
jurzua
parents:
diff changeset
76 }
jurzua
parents:
diff changeset
77
105
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
78 /**
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
79 * Set this.countryLo and restrict by country type(?).
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
80 * @param country
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
81 */
1
jurzua
parents:
diff changeset
82 public void setCountry(Entity country){
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 106
diff changeset
83 this.getCountryLo().setEntityAndAttribute(country);
1
jurzua
parents:
diff changeset
84 this.restrictByCountry(country);
jurzua
parents:
diff changeset
85 }
jurzua
parents:
diff changeset
86
jurzua
parents:
diff changeset
87 public void setCity(Entity city) {
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 106
diff changeset
88 this.getCityLo().setEntityAndAttribute(city);
1
jurzua
parents:
diff changeset
89 this.restrictByCity(city);
jurzua
parents:
diff changeset
90
jurzua
parents:
diff changeset
91 List<Entity> list = getWrapper().getTargetsForSourceRelation(city, is_part_of, PLACE, 1);
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 if(list.size() > 0){
jurzua
parents:
diff changeset
94 this.setCountry(list.get(0));
jurzua
parents:
diff changeset
95 }
jurzua
parents:
diff changeset
96 }
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 public void setRepository(Entity repository) {
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 106
diff changeset
99 this.getRepositoryLo().setEntityAndAttribute(repository);
1
jurzua
parents:
diff changeset
100 this.restrictByRepository(repository);
jurzua
parents:
diff changeset
101
jurzua
parents:
diff changeset
102 List<Entity> list = getWrapper().getTargetsForSourceRelation(repository, is_in, PLACE, 5);
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104 if(list.size() > 0){
jurzua
parents:
diff changeset
105 this.setCity(list.get(0));
jurzua
parents:
diff changeset
106 }
jurzua
parents:
diff changeset
107 }
jurzua
parents:
diff changeset
108
jurzua
parents:
diff changeset
109 public void setCollection(Entity collection) {
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 106
diff changeset
110 this.getCollectionLo().setEntityAndAttribute(collection);
1
jurzua
parents:
diff changeset
111 this.restrictByCollection(collection);
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 List<Entity> repoList = getWrapper().getTargetsForSourceRelation(collection, is_part_of, REPOSITORY, 1);
jurzua
parents:
diff changeset
114
jurzua
parents:
diff changeset
115 if(repoList.size() > 0){
jurzua
parents:
diff changeset
116 this.setRepository(repoList.get(0));
jurzua
parents:
diff changeset
117 }
jurzua
parents:
diff changeset
118 }
jurzua
parents:
diff changeset
119
jurzua
parents:
diff changeset
120 /**
jurzua
parents:
diff changeset
121 * Listen to a change of the country where the codex is located. Restrict
jurzua
parents:
diff changeset
122 * possible collections/repositories/codices to object in this city.
jurzua
parents:
diff changeset
123 *
jurzua
parents:
diff changeset
124 * @param event
jurzua
parents:
diff changeset
125 */
jurzua
parents:
diff changeset
126 /* rich
jurzua
parents:
diff changeset
127 public void countryChangeListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
128
jurzua
parents:
diff changeset
129 this.setCitiesInCurrentCountry(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
130
jurzua
parents:
diff changeset
131 this.setCountryLo(changeListener(event, getCountryLo(), PLACE, "name","type","region"));
jurzua
parents:
diff changeset
132 if (getCountryLo().entity!=null && getCountryLo().entity.isPersistent()){
jurzua
parents:
diff changeset
133 this.setCountry(getCountryLo().entity);
jurzua
parents:
diff changeset
134 }
jurzua
parents:
diff changeset
135 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
136 }*/
jurzua
parents:
diff changeset
137
jurzua
parents:
diff changeset
138 /**
jurzua
parents:
diff changeset
139 * Listen to a change of the city where the codex is located. Restrict
jurzua
parents:
diff changeset
140 * possible collections/repositories/codices to object in this city.
jurzua
parents:
diff changeset
141 *
jurzua
parents:
diff changeset
142 * @param event
jurzua
parents:
diff changeset
143 */
jurzua
parents:
diff changeset
144 /* rich
jurzua
parents:
diff changeset
145 public void cityChangeListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
146
jurzua
parents:
diff changeset
147 this.setRepositoriesInCurrentCity(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
148
jurzua
parents:
diff changeset
149 this.setCityLo(changeListener(event, getCityLo(), PLACE, "name", "type", "city"));
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 if (this.getCityLo().entity!=null && this.getCityLo().entity.isPersistent()){
jurzua
parents:
diff changeset
152 this.setCity(this.getCityLo().entity);
jurzua
parents:
diff changeset
153 }
jurzua
parents:
diff changeset
154 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
155
jurzua
parents:
diff changeset
156 }
jurzua
parents:
diff changeset
157 */
jurzua
parents:
diff changeset
158 /*
jurzua
parents:
diff changeset
159 public void repositoryChangeListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
160
jurzua
parents:
diff changeset
161 this.setCollectionsInCurrentRepository(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
162 this.setShelfMarksInCurrentCollection(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
163
jurzua
parents:
diff changeset
164 this.setRepositoryLo(changeListener(event, this.getRepositoryLo(), REPOSITORY, "name"));
jurzua
parents:
diff changeset
165
jurzua
parents:
diff changeset
166 if (this.getRepositoryLo().entity!= null && this.getRepositoryLo().entity.isPersistent()){
jurzua
parents:
diff changeset
167 this.setRepository(this.getRepositoryLo().entity);
jurzua
parents:
diff changeset
168 }
jurzua
parents:
diff changeset
169 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
170
jurzua
parents:
diff changeset
171 }*/
jurzua
parents:
diff changeset
172
jurzua
parents:
diff changeset
173
jurzua
parents:
diff changeset
174 /**
jurzua
parents:
diff changeset
175 * <p>When the collection is changed by the user this method will be called.</p>
jurzua
parents:
diff changeset
176 * <p>This modification means that the COLLECTION of the relation CODEX->
jurzua
parents:
diff changeset
177 * is_part_of-> COLLECTION is replaced.</p>
jurzua
parents:
diff changeset
178 * @param newEvent
jurzua
parents:
diff changeset
179 */
jurzua
parents:
diff changeset
180 /* rich
jurzua
parents:
diff changeset
181 public void collectionChangeListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
182
jurzua
parents:
diff changeset
183 this.setShelfMarksInCurrentCollection(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
184
jurzua
parents:
diff changeset
185 this.setCollectionLo(this.changeListener(event, this.getCollectionLo(), COLLECTION, "name"));
jurzua
parents:
diff changeset
186
jurzua
parents:
diff changeset
187 Entity currentCollection = this.getCollectionLo().entity;
jurzua
parents:
diff changeset
188 if(currentCollection != null && currentCollection.isPersistent()){
jurzua
parents:
diff changeset
189 this.setCollection(currentCollection);
jurzua
parents:
diff changeset
190 }
jurzua
parents:
diff changeset
191
jurzua
parents:
diff changeset
192 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
193
jurzua
parents:
diff changeset
194 }*/
jurzua
parents:
diff changeset
195
jurzua
parents:
diff changeset
196 public void inCurrentCountryListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
197 inCurrentListener(getCitiesInCurrentCountry(), event);
jurzua
parents:
diff changeset
198 }
jurzua
parents:
diff changeset
199
jurzua
parents:
diff changeset
200 public void inCurrentCityListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
201 inCurrentListener(getRepositoriesInCurrentCity(), event);
jurzua
parents:
diff changeset
202 }
jurzua
parents:
diff changeset
203
jurzua
parents:
diff changeset
204 public void inCurrentRepositoryListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
205 inCurrentListener(getCollectionsInCurrentRepository(), event);
jurzua
parents:
diff changeset
206 }
jurzua
parents:
diff changeset
207
jurzua
parents:
diff changeset
208 public void inCurrentListener(List<SelectItem> items, ValueChangeEvent event) {
jurzua
parents:
diff changeset
209 if (event.getNewValue() == null) {
jurzua
parents:
diff changeset
210 return;
jurzua
parents:
diff changeset
211 }
jurzua
parents:
diff changeset
212 if (event.getNewValue().equals(event.getOldValue())) {
jurzua
parents:
diff changeset
213 return;
jurzua
parents:
diff changeset
214 }
jurzua
parents:
diff changeset
215 String newValue = (String) event.getNewValue();
jurzua
parents:
diff changeset
216 for (SelectItem item : items) {
jurzua
parents:
diff changeset
217 if (item.getValue().equals(newValue)) {
jurzua
parents:
diff changeset
218 //System.out.println(item.getValue());
jurzua
parents:
diff changeset
219 Entity ent =
jurzua
parents:
diff changeset
220 getWrapper().getEntityById(Long.valueOf((String) item.getValue()));
jurzua
parents:
diff changeset
221
jurzua
parents:
diff changeset
222 if(ent != null){
jurzua
parents:
diff changeset
223 String ct = ent.getObjectClass();
jurzua
parents:
diff changeset
224 if (ct.equals(CODEX)) {
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 106
diff changeset
225 this.getCodexLo().setEntityAndAttribute(ent);
1
jurzua
parents:
diff changeset
226 Attribute identifier = getWrapper().getAttributeByName(ent.getId(), "identifier");
jurzua
parents:
diff changeset
227
jurzua
parents:
diff changeset
228 if(identifier != null){
jurzua
parents:
diff changeset
229 this.getCodexLo().statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
230 }
jurzua
parents:
diff changeset
231 //changeValueAttCodex(this.getCodexLo().getAttribute().getOwnValue());
jurzua
parents:
diff changeset
232 break;
jurzua
parents:
diff changeset
233
jurzua
parents:
diff changeset
234 } else if (ct.equals(REPOSITORY)) {
jurzua
parents:
diff changeset
235 this.setRepository(ent);
jurzua
parents:
diff changeset
236 break;
jurzua
parents:
diff changeset
237 } else if (ct.equals(PLACE)) {
jurzua
parents:
diff changeset
238 this.setCity(ent);
jurzua
parents:
diff changeset
239 break;
jurzua
parents:
diff changeset
240
jurzua
parents:
diff changeset
241 } else if (ct.equals(COLLECTION)) {
jurzua
parents:
diff changeset
242 setCollection(ent);
jurzua
parents:
diff changeset
243 break;
jurzua
parents:
diff changeset
244 } else {
jurzua
parents:
diff changeset
245 break;
jurzua
parents:
diff changeset
246 }
jurzua
parents:
diff changeset
247 }
jurzua
parents:
diff changeset
248 }else{
jurzua
parents:
diff changeset
249 logger.error("Entity no found " + item.getValue() + ", however it should exist.");
jurzua
parents:
diff changeset
250 }
jurzua
parents:
diff changeset
251 }
jurzua
parents:
diff changeset
252 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
253 }
jurzua
parents:
diff changeset
254
jurzua
parents:
diff changeset
255 public void checkConsistencyFromCountryToCodex(ActionEvent event){
jurzua
parents:
diff changeset
256 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
257 }
jurzua
parents:
diff changeset
258
jurzua
parents:
diff changeset
259 public CodexForList getCodexData(Entity entity) {
jurzua
parents:
diff changeset
260 Entity currentRepository = null;
jurzua
parents:
diff changeset
261
jurzua
parents:
diff changeset
262 CodexForList entForList = new CodexForList();
jurzua
parents:
diff changeset
263 entForList.id = entity.getId();
jurzua
parents:
diff changeset
264 if (entity.isLightweight()){
jurzua
parents:
diff changeset
265 entity = getWrapper().getEntityContent(entity);
jurzua
parents:
diff changeset
266 }
jurzua
parents:
diff changeset
267 Attribute identAttr = entity.getAttributeByName("identifier");
jurzua
parents:
diff changeset
268 if (identAttr != null)
jurzua
parents:
diff changeset
269 entForList.ident = identAttr.getValue();
jurzua
parents:
diff changeset
270 List<Relation> rels = null;
jurzua
parents:
diff changeset
271 try {
jurzua
parents:
diff changeset
272 if (entity.isLightweight()){
jurzua
parents:
diff changeset
273 entity = getWrapper().getEntityContent(entity);
jurzua
parents:
diff changeset
274 }
jurzua
parents:
diff changeset
275
jurzua
parents:
diff changeset
276 rels = entity.getSourceRelations();
jurzua
parents:
diff changeset
277 } catch (Exception e) {
jurzua
parents:
diff changeset
278 e.printStackTrace();
jurzua
parents:
diff changeset
279 rels = null;
jurzua
parents:
diff changeset
280 }
jurzua
parents:
diff changeset
281 if (rels != null) {
jurzua
parents:
diff changeset
282 for (Relation rel : rels) {
jurzua
parents:
diff changeset
283
jurzua
parents:
diff changeset
284 Entity coll = getWrapper().getEntityById(rel.getTargetId());
jurzua
parents:
diff changeset
285 coll = getWrapper().getEntityContent(coll);
jurzua
parents:
diff changeset
286
jurzua
parents:
diff changeset
287 if (rel.getOwnValue().equals(is_part_of)
jurzua
parents:
diff changeset
288 && coll.getObjectClass().equals(COLLECTION)) {
jurzua
parents:
diff changeset
289 Attribute name = coll.getAttributeByName("name");
jurzua
parents:
diff changeset
290 if (name != null)
jurzua
parents:
diff changeset
291 entForList.collection = name.getValue();
jurzua
parents:
diff changeset
292 try {
jurzua
parents:
diff changeset
293 Relation rel2 = coll
jurzua
parents:
diff changeset
294 .getSourceRelationByOwnValue(is_part_of);
jurzua
parents:
diff changeset
295 if (rel2 != null) {
jurzua
parents:
diff changeset
296 currentRepository = getWrapper().getEntityById(rel2.getTargetId());
jurzua
parents:
diff changeset
297 Attribute nameRep = currentRepository
jurzua
parents:
diff changeset
298 .getAttributeByName("name");
jurzua
parents:
diff changeset
299 if (nameRep != null)
jurzua
parents:
diff changeset
300 entForList.repository = nameRep.getValue();
jurzua
parents:
diff changeset
301
jurzua
parents:
diff changeset
302 }
jurzua
parents:
diff changeset
303 } catch (Exception e) {
jurzua
parents:
diff changeset
304 e.printStackTrace();
jurzua
parents:
diff changeset
305 }
jurzua
parents:
diff changeset
306
jurzua
parents:
diff changeset
307 } else if (rel.getOwnValue().equals(is_part_of)
jurzua
parents:
diff changeset
308 && coll.getObjectClass().equals(REPOSITORY)) {
jurzua
parents:
diff changeset
309 Attribute name = coll.getAttributeByName("name");
jurzua
parents:
diff changeset
310 if (name != null)
jurzua
parents:
diff changeset
311 entForList.repository = name.getValue();
jurzua
parents:
diff changeset
312 currentRepository = coll;
jurzua
parents:
diff changeset
313 } else if (rel.getOwnValue().equals(is_in)
jurzua
parents:
diff changeset
314 && coll.getObjectClass().equals(PLACE)) {
jurzua
parents:
diff changeset
315 Attribute name = coll.getAttributeByName("name");
jurzua
parents:
diff changeset
316 // TODO: ersetze �ber all den String f�r das Attribute
jurzua
parents:
diff changeset
317 // zur
jurzua
parents:
diff changeset
318 // Anzeige durch eine Konstante bzw. durch
jurzua
parents:
diff changeset
319 // getAttRepository.getName, dann kann es leichter
jurzua
parents:
diff changeset
320 // geaendert
jurzua
parents:
diff changeset
321 // werden, bzw. ducrch eine dynamischen getOwnValue.
jurzua
parents:
diff changeset
322 if (name != null)
jurzua
parents:
diff changeset
323 entForList.place = name.getValue();
jurzua
parents:
diff changeset
324 }
jurzua
parents:
diff changeset
325
jurzua
parents:
diff changeset
326 }
jurzua
parents:
diff changeset
327 }
jurzua
parents:
diff changeset
328
jurzua
parents:
diff changeset
329 if (currentRepository != null) {
jurzua
parents:
diff changeset
330 Relation rel = null;
jurzua
parents:
diff changeset
331 try {
jurzua
parents:
diff changeset
332 if (currentRepository.isLightweight())
jurzua
parents:
diff changeset
333 entity = getWrapper().getEntityContent(currentRepository);
jurzua
parents:
diff changeset
334
jurzua
parents:
diff changeset
335 rel = currentRepository.getSourceRelationByOwnValue(is_in);
jurzua
parents:
diff changeset
336 } catch (Exception e) {
jurzua
parents:
diff changeset
337 e.printStackTrace();
jurzua
parents:
diff changeset
338 rel = null;
jurzua
parents:
diff changeset
339 }
jurzua
parents:
diff changeset
340 if (rel != null) {
jurzua
parents:
diff changeset
341 Entity coll = getWrapper().getEntityById(rel.getSourceId());
jurzua
parents:
diff changeset
342 if (coll.getObjectClass().equals(PLACE)) {
jurzua
parents:
diff changeset
343 Attribute name = coll.getAttributeByName("name");
jurzua
parents:
diff changeset
344 // TODO: ersetze ueber all den String fuer das Attribute
jurzua
parents:
diff changeset
345 // zur
jurzua
parents:
diff changeset
346 // Anzeige durch eine Konstante bzw. durch
jurzua
parents:
diff changeset
347 // getAttRepository.getName, dann kann es leichter
jurzua
parents:
diff changeset
348 // geaendert
jurzua
parents:
diff changeset
349 // werden, bzw. ducrch eine dynamischen getOwnValue.
jurzua
parents:
diff changeset
350 if (name != null)
jurzua
parents:
diff changeset
351 entForList.place = name.getValue();
jurzua
parents:
diff changeset
352 }
jurzua
parents:
diff changeset
353
jurzua
parents:
diff changeset
354 }
jurzua
parents:
diff changeset
355 }
jurzua
parents:
diff changeset
356 return entForList;
jurzua
parents:
diff changeset
357 }
jurzua
parents:
diff changeset
358
jurzua
parents:
diff changeset
359 /**
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
360 * Set the list of cities for the select menu, by the given country.
105
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
361 *
1
jurzua
parents:
diff changeset
362 * @param country
jurzua
parents:
diff changeset
363 */
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
364 protected void restrictByCountry(Entity country) {
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
365
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
366 this.setCitiesInCurrentCountry(new ArrayList<SelectItem>());
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
367
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
368 for (Entity src : getWrapper().getSourcesForTargetRelation(country, is_part_of, PLACE, MAX_PLACES)) {
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
369 getCitiesInCurrentCountry().add(new SelectItem(String.valueOf(src.getId()), src.getOwnValue()));
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
370 }
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
371 }
1
jurzua
parents:
diff changeset
372
jurzua
parents:
diff changeset
373 /**
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
374 * Set the list of repositories for the select menu, by the given city.
1
jurzua
parents:
diff changeset
375 *
jurzua
parents:
diff changeset
376 * @param place
jurzua
parents:
diff changeset
377 */
jurzua
parents:
diff changeset
378 protected void restrictByCity(Entity place) {
jurzua
parents:
diff changeset
379
jurzua
parents:
diff changeset
380 this.setRepositoriesInCurrentCity(new ArrayList<SelectItem>());
jurzua
parents:
diff changeset
381
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
382 for (Entity src : getWrapper().getSourcesForTargetRelation(place, is_in, "REPOSITORY", MAX_REPOSITORIES)) {
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
383 this.getRepositoriesInCurrentCity().add(new SelectItem(String.valueOf(src.getId()), src.getOwnValue()));
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
384 }
1
jurzua
parents:
diff changeset
385 }
jurzua
parents:
diff changeset
386
jurzua
parents:
diff changeset
387 /**
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
388 * Set the list of collections for the select menu, by the given repository.
1
jurzua
parents:
diff changeset
389 *
jurzua
parents:
diff changeset
390 * @param repository
jurzua
parents:
diff changeset
391 */
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
392 public void restrictByRepository(Entity repository) {
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
393
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
394 this.setCollectionsInCurrentRepository(new ArrayList<SelectItem>());
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
395 for (Entity src : getWrapper().getSourcesForTargetRelation(repository, is_part_of, COLLECTION,
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
396 MAX_COLLECTIONS)) {
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
397 this.getCollectionsInCurrentRepository()
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
398 .add(new SelectItem(String.valueOf(src.getId()), src.getOwnValue()));
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
399 }
1
jurzua
parents:
diff changeset
400 }
jurzua
parents:
diff changeset
401
106
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
402 /**
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
403 * Set the list of shelf marks for the select menu, by the given collection.
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
404 *
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
405 * @param collection
71efad4fe975 small cleanups.
casties
parents: 105
diff changeset
406 */
1
jurzua
parents:
diff changeset
407 protected void restrictByCollection(Entity collection) {
jurzua
parents:
diff changeset
408 this.setShelfMarksInCurrentCollection(restrictShelfMarks(collection));
jurzua
parents:
diff changeset
409 }
jurzua
parents:
diff changeset
410
jurzua
parents:
diff changeset
411 protected List<SelectItem> restrictShelfMarks(Entity collection) {
jurzua
parents:
diff changeset
412 List<SelectItem> items = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
413 int countCodex = 0;
jurzua
parents:
diff changeset
414 for (Entity src : getWrapper().getSourcesForTargetRelation(collection, is_part_of, CODEX, MAX_CODICES)) {
jurzua
parents:
diff changeset
415 countCodex++;
jurzua
parents:
diff changeset
416 items.add(new SelectItem(String.valueOf(src.getId()), src
jurzua
parents:
diff changeset
417 .getOwnValue()
jurzua
parents:
diff changeset
418 + "(" + src.getObjectClass() + ")"));
jurzua
parents:
diff changeset
419 }
jurzua
parents:
diff changeset
420 Collections.sort(items, new SelectItemSort());
jurzua
parents:
diff changeset
421 this.thereExistMoreCodices = (countCodex == MAX_CODICES) ? true : false;
jurzua
parents:
diff changeset
422 return items;
jurzua
parents:
diff changeset
423 }
jurzua
parents:
diff changeset
424
jurzua
parents:
diff changeset
425 /*
jurzua
parents:
diff changeset
426 * ########################
jurzua
parents:
diff changeset
427 * Country -> Codex
jurzua
parents:
diff changeset
428 * ########################
jurzua
parents:
diff changeset
429 */
jurzua
parents:
diff changeset
430
105
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
431 /**
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
432 * Returns if country (this.countryLo) has a proper name and continues checking
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
433 * city, repository, collection and codex.
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
434 */
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
435 public void checkConsistencyFromCountryToCodex() {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
436 boolean consistent = false;
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
437
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
438 Entity country = this.getCountryLo().entity;
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
439 if (country != null && country.isPersistent() && getCountryLo().getAttribute() != null
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
440 && StringUtils.isNotEmpty(getCountryLo().getAttribute().getValue())) {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
441
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
442 Attribute att = getWrapper().getAttributeByName(country.getId(), "name");
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
443
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
444 if (att != null && getCountryLo().getAttribute().getValue().equals(att.getValue())) {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
445 this.getCountryLo().statusImage.setStatus(StatusImage.STATUS_OK);
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
446 consistent = true;
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
447 } else {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
448 this.getCountryLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
449 }
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
450 } else {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
451 this.getCountryLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
452 }
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
453
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
454 if (consistent) {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
455 this.checkConsistencyFromCityToCodex(country);
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
456 } else {
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
457 this.labelStatesAsFalseOrUnset(true, true, true, true, false);
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
458 }
e27603a39e70 small cleanups.
casties
parents: 82
diff changeset
459 }
1
jurzua
parents:
diff changeset
460
jurzua
parents:
diff changeset
461 private void checkConsistencyFromCityToCodex(Entity country){
jurzua
parents:
diff changeset
462 boolean consistent = false;
jurzua
parents:
diff changeset
463
jurzua
parents:
diff changeset
464 Entity city = this.getCityLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
465 if(city != null && city.isPersistent() && getCityLo().getAttribute() != null &&StringUtils.isNotEmpty(getCityLo().getAttribute().getValue())){
1
jurzua
parents:
diff changeset
466
jurzua
parents:
diff changeset
467 List<Entity> list = getWrapper().getTargetsForSourceRelation(city, is_part_of, PLACE, 1);
jurzua
parents:
diff changeset
468
jurzua
parents:
diff changeset
469 if(list.size() > 0 && list.get(0).getId().longValue() == country.getId().longValue()){
jurzua
parents:
diff changeset
470 this.getCityLo().statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
471 consistent = true;
jurzua
parents:
diff changeset
472 }else{
jurzua
parents:
diff changeset
473 this.getCityLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
474 }
jurzua
parents:
diff changeset
475 }else{
jurzua
parents:
diff changeset
476 this.getCityLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
477 }
jurzua
parents:
diff changeset
478
jurzua
parents:
diff changeset
479 if(consistent){
jurzua
parents:
diff changeset
480 this.checkConsistencyFromRepositoryToCodex(city);
jurzua
parents:
diff changeset
481 }else{
jurzua
parents:
diff changeset
482 this.labelStatesAsFalseOrUnset(true, true, true, false, false);
jurzua
parents:
diff changeset
483 }
jurzua
parents:
diff changeset
484 }
jurzua
parents:
diff changeset
485
jurzua
parents:
diff changeset
486 private void checkConsistencyFromRepositoryToCodex(Entity city){
jurzua
parents:
diff changeset
487 boolean consistent = false;
jurzua
parents:
diff changeset
488
jurzua
parents:
diff changeset
489 Entity repository = this.getRepositoryLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
490 if(repository != null && repository.isPersistent() && getCollectionLo().getAttribute() != null && StringUtils.isNotEmpty(getRepositoryLo().getAttribute().getValue())){
1
jurzua
parents:
diff changeset
491 //juc List<Entity> list = getSearchServ().getTargetsForSourceRelation(repository, is_in, PLACE, 1);
jurzua
parents:
diff changeset
492 List<Entity> list = getWrapper().getTargetsForSourceRelation(repository, is_in, PLACE, 1);
jurzua
parents:
diff changeset
493
jurzua
parents:
diff changeset
494 if(list.size() > 0 && list.get(0).getId().longValue() == city.getId().longValue()){
jurzua
parents:
diff changeset
495 this.getRepositoryLo().statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
496 consistent = true;
jurzua
parents:
diff changeset
497 }else{
jurzua
parents:
diff changeset
498 this.getRepositoryLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
499 }
jurzua
parents:
diff changeset
500 }else{
jurzua
parents:
diff changeset
501 this.getRepositoryLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
502 }
jurzua
parents:
diff changeset
503
jurzua
parents:
diff changeset
504 if(consistent){
jurzua
parents:
diff changeset
505 this.checkConsistencyFromCollectionToCodex(repository);
jurzua
parents:
diff changeset
506 }else{
jurzua
parents:
diff changeset
507 this.labelStatesAsFalseOrUnset(true, true, false, false, false);
jurzua
parents:
diff changeset
508 }
jurzua
parents:
diff changeset
509 }
jurzua
parents:
diff changeset
510
jurzua
parents:
diff changeset
511 private void checkConsistencyFromCollectionToCodex(Entity repository){
jurzua
parents:
diff changeset
512 boolean consistent = false;
jurzua
parents:
diff changeset
513
jurzua
parents:
diff changeset
514 Entity collection = this.getCollectionLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
515 if(collection != null && collection.isPersistent() && getCollectionLo().getAttribute() != null && StringUtils.isNotEmpty(getCollectionLo().getAttribute().getValue())){
1
jurzua
parents:
diff changeset
516
jurzua
parents:
diff changeset
517 List<Entity> list = getWrapper().getTargetsForSourceRelation(collection, is_part_of, REPOSITORY, 1);
jurzua
parents:
diff changeset
518
jurzua
parents:
diff changeset
519 if(list.size() > 0 && list.get(0).getId().longValue() == repository.getId().longValue()){
jurzua
parents:
diff changeset
520 this.getCollectionLo().statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
521 consistent = true;
jurzua
parents:
diff changeset
522 }else{
jurzua
parents:
diff changeset
523 this.getCollectionLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
524 }
jurzua
parents:
diff changeset
525 }else{
jurzua
parents:
diff changeset
526 this.getCollectionLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
527 }
jurzua
parents:
diff changeset
528
jurzua
parents:
diff changeset
529 if(consistent){
jurzua
parents:
diff changeset
530 this.checkConsistencyOfCodex(collection);
jurzua
parents:
diff changeset
531 }else{
jurzua
parents:
diff changeset
532 this.labelStatesAsFalseOrUnset(true, false, false, false, false);
jurzua
parents:
diff changeset
533 }
jurzua
parents:
diff changeset
534 }
jurzua
parents:
diff changeset
535
jurzua
parents:
diff changeset
536 private void checkConsistencyOfCodex(Entity collection){
jurzua
parents:
diff changeset
537
jurzua
parents:
diff changeset
538 Entity codex = this.getCodexLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
539 if(codex != null && codex.isPersistent() && getCodexLo().getAttribute() != null && StringUtils.isNotEmpty(getCodexLo().getAttribute().getValue())){
1
jurzua
parents:
diff changeset
540
jurzua
parents:
diff changeset
541 Attribute identifier = getWrapper().getAttributeByName(codex.getId(), "identifier");
jurzua
parents:
diff changeset
542
jurzua
parents:
diff changeset
543 List<Entity> list = getWrapper().getTargetsForSourceRelation(codex, is_part_of, COLLECTION, 1);
jurzua
parents:
diff changeset
544
jurzua
parents:
diff changeset
545 if(list.size() > 0 && list.get(0).getId().longValue() == collection.getId().longValue() &&
jurzua
parents:
diff changeset
546 identifier != null && this.getCodexLo().getAttribute().getValue().equals(identifier.getValue())){
jurzua
parents:
diff changeset
547 this.getCodexLo().setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
548 }else{
jurzua
parents:
diff changeset
549 this.getCodexLo().setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
550 }
jurzua
parents:
diff changeset
551 }else{
jurzua
parents:
diff changeset
552 this.getCodexLo().setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
553 }
jurzua
parents:
diff changeset
554 }
jurzua
parents:
diff changeset
555
jurzua
parents:
diff changeset
556 /**
jurzua
parents:
diff changeset
557 * If a previous method detects that some elements (a subset of {CODEX,...,COUNTRY})
jurzua
parents:
diff changeset
558 * of the cycle can not be 'OK' (see: StatusImage states),
jurzua
parents:
diff changeset
559 * this method will label the mentioned elements as either 'FALSE' or 'UNSET'
jurzua
parents:
diff changeset
560 *
jurzua
parents:
diff changeset
561 * @param bCodex true if you are sure that it can not be 'ok'.
jurzua
parents:
diff changeset
562 * @param bCollection true if you are sure that it can not be 'ok'.
jurzua
parents:
diff changeset
563 * @param bRepository true if you are sure that it can not be 'ok'.
jurzua
parents:
diff changeset
564 * @param bCity true if you are sure that it can not be 'ok'.
jurzua
parents:
diff changeset
565 * @param bCountry true if you are sure that it can not be 'ok'.
jurzua
parents:
diff changeset
566 */
jurzua
parents:
diff changeset
567 public void labelStatesAsFalseOrUnset(boolean bCodex, boolean bCollection, boolean bRepository, boolean bCity, boolean bCountry){
jurzua
parents:
diff changeset
568
jurzua
parents:
diff changeset
569 if(bCodex){
jurzua
parents:
diff changeset
570 Entity codex = this.getCodexLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
571 if(codex != null && codex.isPersistent() && getCodexLo().getAttribute() != null && StringUtils.isNotEmpty(getCodexLo().getAttribute().getValue()))
1
jurzua
parents:
diff changeset
572 this.getCodexLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
573 else
jurzua
parents:
diff changeset
574 this.getCodexLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
575 }
jurzua
parents:
diff changeset
576
jurzua
parents:
diff changeset
577 if(bCollection){
jurzua
parents:
diff changeset
578 Entity collection = this.getCollectionLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
579 if(collection != null && collection.isPersistent() && this.getCollectionLo().getAttribute() != null && StringUtils.isNotEmpty(this.getCollectionLo().getAttribute().getValue()))
1
jurzua
parents:
diff changeset
580 this.getCollectionLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
581 else
jurzua
parents:
diff changeset
582 this.getCollectionLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
583 }
jurzua
parents:
diff changeset
584
jurzua
parents:
diff changeset
585 if(bRepository){
jurzua
parents:
diff changeset
586 Entity repository = this.getRepositoryLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
587 if(repository != null && repository.isPersistent() && this.getRepositoryLo().getAttribute() != null && StringUtils.isNotEmpty(this.getRepositoryLo().getAttribute().getValue()))
1
jurzua
parents:
diff changeset
588 this.getRepositoryLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
589 else
jurzua
parents:
diff changeset
590 this.getRepositoryLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
591 }
jurzua
parents:
diff changeset
592
jurzua
parents:
diff changeset
593 if(bCity){
jurzua
parents:
diff changeset
594 Entity city = this.getCityLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
595 if(city != null && city.isPersistent() && this.getCityLo().getAttribute() != null && StringUtils.isNotEmpty(this.getCityLo().getAttribute().getValue()))
1
jurzua
parents:
diff changeset
596 this.getCityLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
597 else
jurzua
parents:
diff changeset
598 this.getCityLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
599 }
jurzua
parents:
diff changeset
600
jurzua
parents:
diff changeset
601 if(bCountry){
jurzua
parents:
diff changeset
602 Entity country = this.getCountryLo().entity;
82
c000b4b386bc better "internal error" message. fix NPE when codex has no identifier.
casties
parents: 1
diff changeset
603 if(country != null && country.isPersistent() && this.getCountryLo().getAttribute() != null && StringUtils.isNotEmpty(this.getCountryLo().getAttribute().getValue()))
1
jurzua
parents:
diff changeset
604 this.getCountryLo().statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
605 else
jurzua
parents:
diff changeset
606 this.getCountryLo().statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
607 }
jurzua
parents:
diff changeset
608
jurzua
parents:
diff changeset
609 }
jurzua
parents:
diff changeset
610
jurzua
parents:
diff changeset
611 public ListenerObject getCountryLo() {
jurzua
parents:
diff changeset
612 return countryLo;
jurzua
parents:
diff changeset
613 }
jurzua
parents:
diff changeset
614 public void setCountryLo(ListenerObject countryLo) {
jurzua
parents:
diff changeset
615 this.countryLo = countryLo;
jurzua
parents:
diff changeset
616 }
jurzua
parents:
diff changeset
617 public ListenerObject getCityLo() {
jurzua
parents:
diff changeset
618 return cityLo;
jurzua
parents:
diff changeset
619 }
jurzua
parents:
diff changeset
620 public void setCityLo(ListenerObject cityLo) {
jurzua
parents:
diff changeset
621 this.cityLo = cityLo;
jurzua
parents:
diff changeset
622 }
jurzua
parents:
diff changeset
623 public ListenerObject getRepositoryLo() {
jurzua
parents:
diff changeset
624 return repositoryLo;
jurzua
parents:
diff changeset
625 }
jurzua
parents:
diff changeset
626 public void setRepositoryLo(ListenerObject repositoryLo) {
jurzua
parents:
diff changeset
627 this.repositoryLo = repositoryLo;
jurzua
parents:
diff changeset
628 }
jurzua
parents:
diff changeset
629 public ListenerObject getCollectionLo() {
jurzua
parents:
diff changeset
630 return collectionLo;
jurzua
parents:
diff changeset
631 }
jurzua
parents:
diff changeset
632 public void setCollectionLo(ListenerObject collectionLo) {
jurzua
parents:
diff changeset
633 this.collectionLo = collectionLo;
jurzua
parents:
diff changeset
634 }
jurzua
parents:
diff changeset
635 public ListenerObject getCodexLo() {
jurzua
parents:
diff changeset
636 return codexLo;
jurzua
parents:
diff changeset
637 }
jurzua
parents:
diff changeset
638 public void setCodexLo(ListenerObject codexLo) {
jurzua
parents:
diff changeset
639 this.codexLo = codexLo;
jurzua
parents:
diff changeset
640 }
jurzua
parents:
diff changeset
641
jurzua
parents:
diff changeset
642 public void setCitiesInCurrentCountry(List<SelectItem> citiesInCurrentCountry) {
jurzua
parents:
diff changeset
643 this.citiesInCurrentCountry = citiesInCurrentCountry;
jurzua
parents:
diff changeset
644 }
jurzua
parents:
diff changeset
645
jurzua
parents:
diff changeset
646 public void setRepositoriesInCurrentCity(
jurzua
parents:
diff changeset
647 List<SelectItem> repositoriesInCurrentCity) {
jurzua
parents:
diff changeset
648 this.repositoriesInCurrentCity = repositoriesInCurrentCity;
jurzua
parents:
diff changeset
649 }
jurzua
parents:
diff changeset
650
jurzua
parents:
diff changeset
651 public void setCollectionsInCurrentRepository(
jurzua
parents:
diff changeset
652 List<SelectItem> collectionsInCurrentRepository) {
jurzua
parents:
diff changeset
653 this.collectionsInCurrentRepository = collectionsInCurrentRepository;
jurzua
parents:
diff changeset
654 }
jurzua
parents:
diff changeset
655
jurzua
parents:
diff changeset
656 public void setShelfMarksInCurrentCollection(
jurzua
parents:
diff changeset
657 List<SelectItem> shelfMarksInCurrentCollection) {
jurzua
parents:
diff changeset
658 this.shelfMarksInCurrentCollection = shelfMarksInCurrentCollection;
jurzua
parents:
diff changeset
659 }
jurzua
parents:
diff changeset
660
jurzua
parents:
diff changeset
661 public boolean isThereExistMoreCodices() {
jurzua
parents:
diff changeset
662 return thereExistMoreCodices;
jurzua
parents:
diff changeset
663 }
jurzua
parents:
diff changeset
664
jurzua
parents:
diff changeset
665 public void setThereExistMoreCodices(boolean thereExistMoreCodices) {
jurzua
parents:
diff changeset
666 this.thereExistMoreCodices = thereExistMoreCodices;
jurzua
parents:
diff changeset
667 }
jurzua
parents:
diff changeset
668
jurzua
parents:
diff changeset
669 public List<SelectItem> getCitiesInCurrentCountry() {
jurzua
parents:
diff changeset
670 if(this.citiesInCurrentCountry != null &&
jurzua
parents:
diff changeset
671 this.citiesInCurrentCountry.size() > 0 &&
jurzua
parents:
diff changeset
672 (this.citiesInCurrentCountry.get(0).getLabel() == null ||
jurzua
parents:
diff changeset
673 !this.citiesInCurrentCountry.get(0).getLabel().equals("-- choose --"))){
jurzua
parents:
diff changeset
674 SelectItem chooser = new SelectItem("", "-- choose --");
jurzua
parents:
diff changeset
675 this.citiesInCurrentCountry.add(0, chooser);
jurzua
parents:
diff changeset
676 }
jurzua
parents:
diff changeset
677 return citiesInCurrentCountry;
jurzua
parents:
diff changeset
678 }
jurzua
parents:
diff changeset
679
jurzua
parents:
diff changeset
680 public List<SelectItem> getRepositoriesInCurrentCity() {
jurzua
parents:
diff changeset
681 if(this.repositoriesInCurrentCity != null &&
jurzua
parents:
diff changeset
682 this.repositoriesInCurrentCity.size() > 0 &&
jurzua
parents:
diff changeset
683 (this.repositoriesInCurrentCity.get(0).getLabel() == null ||
jurzua
parents:
diff changeset
684 !this.repositoriesInCurrentCity.get(0).getLabel().equals("-- choose --"))){
jurzua
parents:
diff changeset
685 SelectItem chooser = new SelectItem("", "-- choose --");
jurzua
parents:
diff changeset
686 this.repositoriesInCurrentCity.add(0, chooser);
jurzua
parents:
diff changeset
687 }
jurzua
parents:
diff changeset
688 return repositoriesInCurrentCity;
jurzua
parents:
diff changeset
689 }
jurzua
parents:
diff changeset
690
jurzua
parents:
diff changeset
691 public List<SelectItem> getCollectionsInCurrentRepository() {
jurzua
parents:
diff changeset
692 if(this.collectionsInCurrentRepository != null &&
jurzua
parents:
diff changeset
693 this.collectionsInCurrentRepository.size() > 0 &&
jurzua
parents:
diff changeset
694 (this.collectionsInCurrentRepository.get(0).getLabel() == null ||
jurzua
parents:
diff changeset
695 !this.collectionsInCurrentRepository.get(0).getLabel().equals("-- choose --"))){
jurzua
parents:
diff changeset
696 SelectItem chooser = new SelectItem("", "-- choose --");
jurzua
parents:
diff changeset
697 this.collectionsInCurrentRepository.add(0, chooser);
jurzua
parents:
diff changeset
698 }
jurzua
parents:
diff changeset
699 return collectionsInCurrentRepository;
jurzua
parents:
diff changeset
700 }
jurzua
parents:
diff changeset
701
jurzua
parents:
diff changeset
702 public List<SelectItem> getShelfMarksInCurrentCollection() {
jurzua
parents:
diff changeset
703 if(shelfMarksInCurrentCollection != null &&
jurzua
parents:
diff changeset
704 this.shelfMarksInCurrentCollection.size() > 0 &&
jurzua
parents:
diff changeset
705 (this.shelfMarksInCurrentCollection.get(0).getLabel() == null ||
jurzua
parents:
diff changeset
706 !this.shelfMarksInCurrentCollection.get(0).getLabel().equals("-- choose --"))){
jurzua
parents:
diff changeset
707 SelectItem chooser = new SelectItem("", "-- choose --");
jurzua
parents:
diff changeset
708 this.shelfMarksInCurrentCollection.add(0, chooser);
jurzua
parents:
diff changeset
709 }
jurzua
parents:
diff changeset
710 return shelfMarksInCurrentCollection;
jurzua
parents:
diff changeset
711 }
jurzua
parents:
diff changeset
712 public class CodexForList {
jurzua
parents:
diff changeset
713
jurzua
parents:
diff changeset
714 public String ident;
jurzua
parents:
diff changeset
715 public String repository;
jurzua
parents:
diff changeset
716 public String collection;
jurzua
parents:
diff changeset
717 public String place;
jurzua
parents:
diff changeset
718 public String city;
jurzua
parents:
diff changeset
719 public Long id;
jurzua
parents:
diff changeset
720
jurzua
parents:
diff changeset
721 public String getIdent() {
jurzua
parents:
diff changeset
722 return ident;
jurzua
parents:
diff changeset
723 }
jurzua
parents:
diff changeset
724
jurzua
parents:
diff changeset
725 public void setIdent(String ident) {
jurzua
parents:
diff changeset
726 this.ident = ident;
jurzua
parents:
diff changeset
727 }
jurzua
parents:
diff changeset
728
jurzua
parents:
diff changeset
729 public String getRepository() {
jurzua
parents:
diff changeset
730 return repository;
jurzua
parents:
diff changeset
731 }
jurzua
parents:
diff changeset
732
jurzua
parents:
diff changeset
733 public void setRepository(String repository) {
jurzua
parents:
diff changeset
734 this.repository = repository;
jurzua
parents:
diff changeset
735 }
jurzua
parents:
diff changeset
736
jurzua
parents:
diff changeset
737 public String getCollection() {
jurzua
parents:
diff changeset
738 return collection;
jurzua
parents:
diff changeset
739 }
jurzua
parents:
diff changeset
740
jurzua
parents:
diff changeset
741 public void setCollection(String collection) {
jurzua
parents:
diff changeset
742 this.collection = collection;
jurzua
parents:
diff changeset
743 }
jurzua
parents:
diff changeset
744
jurzua
parents:
diff changeset
745 public String getPlace() {
jurzua
parents:
diff changeset
746 return place;
jurzua
parents:
diff changeset
747 }
jurzua
parents:
diff changeset
748
jurzua
parents:
diff changeset
749 public void setPlace(String place) {
jurzua
parents:
diff changeset
750 this.place = place;
jurzua
parents:
diff changeset
751 }
jurzua
parents:
diff changeset
752
jurzua
parents:
diff changeset
753 public Long getId() {
jurzua
parents:
diff changeset
754 return id;
jurzua
parents:
diff changeset
755 }
jurzua
parents:
diff changeset
756
jurzua
parents:
diff changeset
757 public void setId(Long id) {
jurzua
parents:
diff changeset
758 this.id = id;
jurzua
parents:
diff changeset
759 }
jurzua
parents:
diff changeset
760
jurzua
parents:
diff changeset
761 public String toString() {
jurzua
parents:
diff changeset
762 String str = "";
jurzua
parents:
diff changeset
763 if (ident != null && !ident.equals(""))
jurzua
parents:
diff changeset
764 str += ident;
jurzua
parents:
diff changeset
765
jurzua
parents:
diff changeset
766 if (collection != null && !collection.equals(""))
jurzua
parents:
diff changeset
767 str += "_" + collection;
jurzua
parents:
diff changeset
768 if (repository != null && !repository.equals(""))
jurzua
parents:
diff changeset
769 str += "_" + repository;
jurzua
parents:
diff changeset
770 if (city != null && !city.equals(""))
jurzua
parents:
diff changeset
771 str += city;
jurzua
parents:
diff changeset
772
jurzua
parents:
diff changeset
773 return str;
jurzua
parents:
diff changeset
774
jurzua
parents:
diff changeset
775 }
jurzua
parents:
diff changeset
776 }
jurzua
parents:
diff changeset
777
jurzua
parents:
diff changeset
778
jurzua
parents:
diff changeset
779 protected boolean isRepositoryConsistentBeforeSave(){
jurzua
parents:
diff changeset
780 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
781
jurzua
parents:
diff changeset
782 if(!getCountryLo().getStatus().equals(StatusImage.STATUS_OK)){
jurzua
parents:
diff changeset
783 this.addErrorMsg("The country is marked as: " + getCountryLo().getStatus() + ". The entity could not be saved.");
jurzua
parents:
diff changeset
784 return false;
jurzua
parents:
diff changeset
785 }
jurzua
parents:
diff changeset
786
jurzua
parents:
diff changeset
787 if(!getCityLo().getStatus().equals(StatusImage.STATUS_OK)){
jurzua
parents:
diff changeset
788 this.addErrorMsg("The city is marked as: " + getCityLo().getStatus() + ". The entity could not be saved.");
jurzua
parents:
diff changeset
789 return false;
jurzua
parents:
diff changeset
790 }
jurzua
parents:
diff changeset
791
jurzua
parents:
diff changeset
792 return true;
jurzua
parents:
diff changeset
793 }
jurzua
parents:
diff changeset
794
jurzua
parents:
diff changeset
795 protected boolean isCollectionConsistentBeforeSave(){
jurzua
parents:
diff changeset
796
jurzua
parents:
diff changeset
797 if(!isRepositoryConsistentBeforeSave()){
jurzua
parents:
diff changeset
798 return false;
jurzua
parents:
diff changeset
799 }
jurzua
parents:
diff changeset
800
jurzua
parents:
diff changeset
801 if(!getRepositoryLo().getStatus().equals(StatusImage.STATUS_OK)){
jurzua
parents:
diff changeset
802 this.addErrorMsg("The repository is marked as: " + getRepositoryLo().getStatus() + ". The entity could not be saved.");
jurzua
parents:
diff changeset
803 return false;
jurzua
parents:
diff changeset
804 }
jurzua
parents:
diff changeset
805
jurzua
parents:
diff changeset
806 return true;
jurzua
parents:
diff changeset
807 }
jurzua
parents:
diff changeset
808
jurzua
parents:
diff changeset
809 protected boolean isCodexConsistentBeforeSave(){
jurzua
parents:
diff changeset
810
jurzua
parents:
diff changeset
811 if(!isCollectionConsistentBeforeSave()){
jurzua
parents:
diff changeset
812 return false;
jurzua
parents:
diff changeset
813 }
jurzua
parents:
diff changeset
814
jurzua
parents:
diff changeset
815 if(!getCollectionLo().getStatus().equals(StatusImage.STATUS_OK)){
jurzua
parents:
diff changeset
816 this.addErrorMsg("The collection is marked as: " + getCollectionLo().getStatus() + ". The entity could not be saved.");
jurzua
parents:
diff changeset
817 return false;
jurzua
parents:
diff changeset
818 }
jurzua
parents:
diff changeset
819
jurzua
parents:
diff changeset
820 return true;
jurzua
parents:
diff changeset
821 }
jurzua
parents:
diff changeset
822
jurzua
parents:
diff changeset
823 protected boolean isWitnessConsistentBeforeSave(){
jurzua
parents:
diff changeset
824
jurzua
parents:
diff changeset
825 if(!isCodexConsistentBeforeSave()){
jurzua
parents:
diff changeset
826 return false;
jurzua
parents:
diff changeset
827 }
jurzua
parents:
diff changeset
828
jurzua
parents:
diff changeset
829 if(!getCodexLo().getStatus().equals(StatusImage.STATUS_OK)){
jurzua
parents:
diff changeset
830 this.addErrorMsg("The codex is marked as: " + getCodexLo().getStatus() + ". The entity could not be saved.");
jurzua
parents:
diff changeset
831 return false;
jurzua
parents:
diff changeset
832 }
jurzua
parents:
diff changeset
833
jurzua
parents:
diff changeset
834 return true;
jurzua
parents:
diff changeset
835 }
jurzua
parents:
diff changeset
836
jurzua
parents:
diff changeset
837
jurzua
parents:
diff changeset
838 public void editThisCountryAction(ActionEvent event){
jurzua
parents:
diff changeset
839 if(this.getCountryLo().entity != null && this.getCountryLo().entity.isPersistent()){
jurzua
parents:
diff changeset
840 getSessionBean().editEntity(this.getCountryLo().entity);
jurzua
parents:
diff changeset
841 }
jurzua
parents:
diff changeset
842 }
jurzua
parents:
diff changeset
843
jurzua
parents:
diff changeset
844 public void editThisCityAction(ActionEvent event){
jurzua
parents:
diff changeset
845 if(this.getCityLo().entity != null && this.getCityLo().entity.isPersistent()){
jurzua
parents:
diff changeset
846 getSessionBean().editEntity(this.getCityLo().entity);
jurzua
parents:
diff changeset
847 }
jurzua
parents:
diff changeset
848 }
jurzua
parents:
diff changeset
849
jurzua
parents:
diff changeset
850 public void editThisRepositoryAction(ActionEvent event){
jurzua
parents:
diff changeset
851 if(this.getRepositoryLo().entity != null && this.getRepositoryLo().entity.isPersistent()){
jurzua
parents:
diff changeset
852 getSessionBean().editEntity(this.getRepositoryLo().entity);
jurzua
parents:
diff changeset
853 }
jurzua
parents:
diff changeset
854 }
jurzua
parents:
diff changeset
855
jurzua
parents:
diff changeset
856 public void editThisCollectionAction(ActionEvent event){
jurzua
parents:
diff changeset
857 if(this.getCollectionLo().entity != null && this.getCollectionLo().entity.isPersistent()){
jurzua
parents:
diff changeset
858 getSessionBean().editEntity(this.getCollectionLo().entity);
jurzua
parents:
diff changeset
859 }
jurzua
parents:
diff changeset
860 }
jurzua
parents:
diff changeset
861
jurzua
parents:
diff changeset
862 public void editThisCodexAction(ActionEvent event){
jurzua
parents:
diff changeset
863 if(this.getCodexLo().entity != null && this.getCodexLo().entity.isPersistent()){
jurzua
parents:
diff changeset
864 getSessionBean().editEntity(this.getCodexLo().entity);
jurzua
parents:
diff changeset
865 }
jurzua
parents:
diff changeset
866 }
jurzua
parents:
diff changeset
867
jurzua
parents:
diff changeset
868 public void identifierChangedListener(ValueChangeEvent event) {
jurzua
parents:
diff changeset
869 if(event.getNewValue() != null){
jurzua
parents:
diff changeset
870 inCurrentListener(getShelfMarksInCurrentCollection(), event);
jurzua
parents:
diff changeset
871 }else{
jurzua
parents:
diff changeset
872 getCodexLo().setEntity(null);
jurzua
parents:
diff changeset
873 getCodexLo().setAttribute(new Attribute("identifier", TEXT, ""));
jurzua
parents:
diff changeset
874 }
jurzua
parents:
diff changeset
875 }
jurzua
parents:
diff changeset
876 }