Mercurial > hg > ismi-richfaces
annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/SessionBean.java @ 181:52aa06772336
fixed missingCodex function. moved some code from SessionBean up to MissingRelationsBean and PublicByAuthorBean.
author | Robert Casties <casties@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 13 Jun 2018 17:48:06 +0200 |
parents | 0d31c8be7c31 |
children | 34ac2e1b323a |
rev | line source |
---|---|
1 | 1 package de.mpiwg.itgroup.ismi.entry.beans; |
2 | |
3 import java.io.IOException; | |
4 import java.io.Serializable; | |
5 import java.util.ArrayList; | |
6 import java.util.List; | |
7 | |
8 import javax.faces.context.ExternalContext; | |
9 import javax.faces.context.FacesContext; | |
10 import javax.faces.event.ActionEvent; | |
11 import javax.servlet.http.HttpServletRequest; | |
12 | |
13 import org.apache.commons.lang.StringUtils; | |
14 import org.apache.log4j.Logger; | |
15 import org.mpi.openmind.repository.bo.Attribute; | |
16 import org.mpi.openmind.repository.bo.Entity; | |
17 import org.mpi.openmind.security.SecurityService; | |
18 import org.mpi.openmind.security.bo.User; | |
19 import org.richfaces.event.ItemChangeEvent; | |
20 | |
21 import de.mpiwg.itgroup.ismi.admin.AdminBean; | |
22 import de.mpiwg.itgroup.ismi.browse.EntityDetailsBean; | |
23 import de.mpiwg.itgroup.ismi.defs.DefinitionForm; | |
24 import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean.CheckResults; | |
25 import de.mpiwg.itgroup.ismi.event.beans.CopyEvent; | |
26 import de.mpiwg.itgroup.ismi.event.beans.StudyEvent; | |
27 import de.mpiwg.itgroup.ismi.event.beans.TransferEvent; | |
28 import de.mpiwg.itgroup.ismi.merge.GeneralMerge; | |
96 | 29 import de.mpiwg.itgroup.ismi.merge.ImportMerge; |
180
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
30 import de.mpiwg.itgroup.ismi.merge.MissingRelationsBean; |
153
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
31 import de.mpiwg.itgroup.ismi.merge.PublicByAuthorBean; |
85 | 32 import de.mpiwg.itgroup.ismi.merge.ReferenceMerge; |
1 | 33 import de.mpiwg.itgroup.ismi.publicView.DynamicPageEditor; |
34 import de.mpiwg.itgroup.ismi.publicView.PublicCodexBean; | |
35 import de.mpiwg.itgroup.ismi.publicView.PublicCodexView; | |
36 import de.mpiwg.itgroup.ismi.publicView.pages.DynamicPage; | |
37 import de.mpiwg.itgroup.ismi.search.beans.AdvancedSearchBean; | |
38 import de.mpiwg.itgroup.ismi.search.beans.DisplayAuthorBean; | |
39 import de.mpiwg.itgroup.ismi.search.beans.DisplayTitleBean; | |
40 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar; | |
41 import de.mpiwg.itgroup.ismi.util.guiComponents.EntityList; | |
42 | |
43 public class SessionBean extends AbstractBean implements Serializable{ | |
44 | |
45 private static Logger logger = Logger.getLogger(SessionBean.class); | |
46 | |
47 private DefinitionForm defForm = new DefinitionForm(); | |
48 private StudyEvent studyEventForm = new StudyEvent(); | |
49 private CopyEvent copyEventForm = new CopyEvent(); | |
50 private TransferEvent transferEventForm = new TransferEvent(); | |
51 private transient AdvancedSearchBean advancedSearch = new AdvancedSearchBean(); | |
153
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
52 private transient PublicByAuthorBean publicByAuthor = new PublicByAuthorBean(); |
180
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
53 private transient MissingRelationsBean missingRelations = new MissingRelationsBean(); |
1 | 54 |
55 private EntityDetailsBean entDetailsForm = new EntityDetailsBean(); | |
56 | |
57 private DisplayAuthorBean displayAuthor = new DisplayAuthorBean(); | |
58 private DisplayTitleBean displayTitle = new DisplayTitleBean(); | |
59 | |
60 private DynamicPageEditor pageEditor = null; | |
61 | |
62 | |
63 private Calendar currentCalendar = null; | |
64 private EntityList currentEntListForCalendar = null; | |
65 private Long currentEntIdForCalendar; | |
66 | |
67 private boolean displayLoginDialog = false; | |
68 | |
69 private DigiListBean digiList; | |
70 | |
71 //public | |
72 private DynamicPage dynamicPage; | |
73 private PublicCodexView publicCodexView; | |
74 private PublicCodexBean publicCodexBean; | |
75 | |
76 public void editCalendar(Calendar cal, EntityList list, Long entId){ | |
77 this.currentCalendar = cal; | |
78 this.currentEntListForCalendar = list; | |
79 this.currentEntIdForCalendar = entId; | |
80 } | |
81 | |
82 public void listenerSaveEditionCalendar(ActionEvent event){ | |
83 if(this.currentEntListForCalendar != null && this.currentEntIdForCalendar != null){ | |
84 this.currentEntListForCalendar.getCalendarMap().put(currentEntIdForCalendar, currentCalendar); | |
85 this.currentCalendar = null; | |
86 this.currentEntListForCalendar = null; | |
87 this.currentEntIdForCalendar = null; | |
88 } | |
89 } | |
90 | |
91 | |
92 public static String PAGE_ENTITY_REPOSITORY = "entity_repository"; | |
93 public static String PAGE_ENTITY_DETAILS = "entity_details"; | |
94 public static String PAGE_ENTRY = "entry_edit_entity"; | |
95 public static String PAGE_EVENT_FORM = "event_form"; | |
96 public static String PAGE_SIMPLE_SEARCH = "simple_search"; | |
97 public static String PAGE_PUBLIC_CODICES = "public_codices"; | |
98 public static String PAGE_DISPLAY_TITLE = "display_title"; | |
99 public static String PAGE_DISPLAY_AUTHOR = "display_author"; | |
100 public static String PAGE_GENERAL_MERGE = "general_merge"; | |
101 public static String PAGE_GEO_FORM = "geo_form"; | |
102 public static String PAGE_ADMIN = "admin"; | |
103 public static String PAGE_PROFILE = "profile"; | |
104 public static String PAGE_DEF_EDITOR = "defEditor"; | |
105 | |
106 private User user = null; | |
107 private String username = ""; | |
108 private String password = ""; | |
109 | |
110 //private Entity currentEntity; | |
111 | |
112 private GeneralMerge generalMerge; | |
85 | 113 private ReferenceMerge referenceMerge; |
96 | 114 private ImportMerge importMerge; |
1 | 115 |
116 //private String last_action; | |
117 //private Date time_of_lastAction; | |
118 | |
119 private String remoteAddr; | |
120 | |
121 private static final long serialVersionUID = 1L; | |
122 | |
123 //Entities tabs | |
124 public static String WITNESS_TAB = "Witness"; | |
125 public static String CODEX_TAB = "Codex"; | |
126 public static String COLLECTION_TAB = "Collection"; | |
127 public static String REPOSITORY_TAB = "Repository"; | |
128 public static String CITY_TAB = "Place"; | |
129 public static String TEXT_TAB = "Text"; | |
130 public static String PERSON_TAB = "Person"; | |
131 public static String ALIAS_TAB = "Alias"; | |
132 public static String SUBJECT_TAB = "Subject"; | |
133 public static String ROLE_TAB = "Role"; | |
134 public static String DIGI_TAB = "Digi"; | |
135 | |
136 //Events tabs | |
137 public static String WITNESS_STUDY_EVENT_TAB = "Study"; | |
138 public static String COPY_EVENT_TAB = "Copy"; | |
139 public static String TRANSFER_EVENT_TAB = "Transfer"; | |
140 | |
141 private String selectedTab = WITNESS_TAB; | |
142 private String selectedEventTab = WITNESS_STUDY_EVENT_TAB; | |
143 private String selectedAdvancedSearchTab = "01"; | |
144 private Long editFormCurrentEntId; | |
145 | |
146 private boolean displayError = false; | |
147 private ArrayList<String> errorMessages; | |
148 | |
149 public String getOCByTabIndex(){ | |
150 if(selectedTab != null){ | |
151 if(selectedTab.equals(WITNESS_TAB)){ | |
152 return AbstractISMIBean.WITNESS; | |
153 }else if(selectedTab.equals(CODEX_TAB)){ | |
154 return AbstractISMIBean.CODEX; | |
155 }else if(selectedTab.equals(COLLECTION_TAB)){ | |
156 return AbstractISMIBean.COLLECTION; | |
157 }else if(selectedTab.equals(REPOSITORY_TAB)){ | |
158 return AbstractISMIBean.REPOSITORY; | |
159 }else if(selectedTab.equals(CITY_TAB)){ | |
160 return AbstractISMIBean.PLACE; | |
161 }else if(selectedTab.equals(TEXT_TAB)){ | |
162 return AbstractISMIBean.TEXT; | |
163 }else if(selectedTab.equals(PERSON_TAB)){ | |
164 return AbstractISMIBean.PERSON; | |
165 }else if(selectedTab.equals(ALIAS_TAB)){ | |
166 return AbstractISMIBean.ALIAS; | |
167 }else if(selectedTab.equals(SUBJECT_TAB)){ | |
168 return AbstractISMIBean.SUBJECT; | |
169 }else if(selectedTab.equals(ROLE_TAB)){ | |
170 return AbstractISMIBean.ROLE; | |
171 }else if(selectedTab.equals(DIGI_TAB)){ | |
172 return AbstractISMIBean.DIGITALIZATION; | |
173 } | |
174 } | |
175 return null; | |
176 } | |
177 | |
178 //************************************ | |
179 //************************************ | |
180 //************************************ | |
181 public SessionBean() { | |
182 if(StringUtils.isBlank(this.remoteAddr)){ | |
183 this.getRemoteAddr(); | |
184 } | |
185 logger.info(" [remoteAddr=" + remoteAddr + "]"); | |
186 } | |
187 | |
188 private void autoLogin(){ | |
189 /* | |
190 this.username = "jurzua@mpiwg-berlin.mpg.de"; | |
191 this.password = "221082"; | |
192 this.login(); | |
193 */ | |
194 } | |
195 | |
196 public void getRemoteAddr(){ | |
197 try{ | |
198 HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); | |
199 this.remoteAddr = httpServletRequest.getRemoteAddr(); | |
200 }catch (Exception ex) {} | |
201 } | |
202 | |
203 | |
204 public void listenerLogin(ActionEvent event) { | |
205 this.login(); | |
206 } | |
207 | |
208 public String actionLogin(){ | |
209 this.login(); | |
210 return new String(); | |
211 } | |
212 | |
213 public void listenerDisplayLoginDialog(ActionEvent event) { | |
214 if(user == null){ | |
215 this.displayLoginDialog = true; | |
216 }else{ | |
217 this.displayLoginDialog = false; | |
218 } | |
219 } | |
220 | |
221 public String actionLoginCancel(){ | |
222 this.displayLoginDialog = false; | |
223 return PAGE_SIMPLE_SEARCH; | |
224 } | |
225 | |
226 private void login(){ | |
227 user = null; | |
228 // this.loginMsg = ""; | |
229 | |
230 if (StringUtils.isNotEmpty(username) | |
231 && StringUtils.isNotEmpty(password)) { | |
232 user = getSecurityService().getUserByPassword(username, password); | |
233 } | |
234 | |
235 if (user == null) { | |
236 addErrorMsg("The system does not find the account!"); | |
237 this.displayLoginDialog = false; | |
238 } else { | |
239 if(StringUtils.isBlank(this.remoteAddr)){ | |
240 this.getRemoteAddr(); | |
241 } | |
242 logger.info("login " + username + " [remoteAddr=" + remoteAddr + "]"); | |
243 this.setUser(user); | |
244 this.generalMerge = new GeneralMerge(); | |
85 | 245 this.referenceMerge = new ReferenceMerge(); |
96 | 246 this.importMerge = new ImportMerge(); |
1 | 247 this.defForm = new DefinitionForm(); |
248 // refresh the editor of Dirk | |
249 addSessionBean("CurrentWitness", new CurrentWitnessBean()); | |
250 addSessionBean("CurrentCodex", new CurrentCodexBean()); | |
251 addSessionBean("CurrentText", new CurrentTextBean()); | |
252 addSessionBean("CurrentPerson", new CurrentPersonBean()); | |
253 addSessionBean("CurrentAlias", new CurrentAliasBean()); | |
254 addSessionBean("CurrentCollection", new CurrentCollectionBean()); | |
255 addSessionBean("CurrentRepository", new CurrentRepositoryBean()); | |
256 addSessionBean("CurrentCity", new CurrentCityBean()); | |
257 addSessionBean("CurrentDigi", new CurrentDigitalizationBean()); | |
258 editFormCurrentEntId = null; | |
259 this.displayLoginDialog = false; | |
260 } | |
261 } | |
262 | |
263 public String logout() { | |
264 if(StringUtils.isBlank(this.remoteAddr)){ | |
265 this.getRemoteAddr(); | |
266 } | |
267 logger.info("logout " + username + " [remoteAddr=" + remoteAddr + "]"); | |
268 this.username = ""; | |
269 this.password = ""; | |
270 this.user = null; | |
271 this.generalMerge = null; | |
85 | 272 this.referenceMerge = null; |
1 | 273 this.defForm = null; |
274 return PAGE_PUBLIC_CODICES; | |
275 } | |
276 | |
277 public boolean isCanDelete() { | |
278 return isAdmin(); | |
279 } | |
280 | |
281 public boolean isCanMerge() { | |
282 if (getUser() != null) { | |
283 String role = getUser().getRole(); | |
284 if (StringUtils.isNotEmpty(role)) { | |
285 if (AdminBean.Administrator.equals(role) | |
286 || AdminBean.Researcher.equals(role)) { | |
287 return true; | |
288 } | |
289 } | |
290 } | |
291 return false; | |
292 } | |
293 | |
294 public boolean isCanCreate() { | |
295 if (getUser() != null) { | |
296 String role = getUser().getRole(); | |
297 if (StringUtils.isNotEmpty(role)) { | |
298 if (AdminBean.Administrator.equals(role) | |
299 || AdminBean.Researcher.equals(role) | |
300 || AdminBean.Student.equals(role)) { | |
301 return true; | |
302 } | |
303 } | |
304 } | |
305 return false; | |
306 } | |
307 | |
308 public boolean isCanEdit() { | |
309 if (getUser() != null) { | |
310 String role = getUser().getRole(); | |
311 if (StringUtils.isNotEmpty(role)) { | |
312 if (AdminBean.Administrator.equals(role) | |
313 || AdminBean.Researcher.equals(role)) { | |
314 return true; | |
315 } | |
316 } | |
317 } | |
318 return false; | |
319 } | |
320 | |
321 public boolean isAdmin() { | |
322 if (getUser() != null) { | |
323 String role = getUser().getRole(); | |
324 if (StringUtils.isNotEmpty(role)) { | |
325 if (AdminBean.Administrator.equals(role)) { | |
326 return true; | |
327 } | |
328 } | |
329 } | |
330 return false; | |
331 } | |
332 | |
333 private List<String> generalMsgList = new ArrayList<String>(); | |
334 private List<String> errorMsgList = new ArrayList<String>(); | |
335 | |
336 public List<String> getErrorMsgList() { | |
337 return errorMsgList; | |
338 } | |
339 | |
340 public void setErrorMsgList(List<String> errorMsgList) { | |
341 this.errorMsgList = errorMsgList; | |
342 } | |
343 | |
344 public List<String> getGeneralMsgList() { | |
345 return generalMsgList; | |
346 } | |
347 | |
348 public void setGeneralMsgList(List<String> generalMsgList) { | |
349 this.generalMsgList = generalMsgList; | |
350 } | |
351 | |
352 public void addErrorMsg(String msg) { | |
353 if (this.errorMsgList == null) | |
354 this.errorMsgList = new ArrayList<String>(); | |
355 if (StringUtils.isNotEmpty(msg)) { | |
356 this.errorMsgList.add(msg); | |
357 } | |
358 } | |
359 | |
360 public void addGeneralMsg(String msg) { | |
361 if (this.generalMsgList == null) | |
362 this.generalMsgList = new ArrayList<String>(); | |
363 if (StringUtils.isNotEmpty(msg)) { | |
364 this.generalMsgList.add(msg); | |
365 } | |
366 } | |
367 | |
368 public void actionCloseErrorMsgDialog(ActionEvent event) { | |
369 this.errorMsgList = new ArrayList<String>(); | |
370 } | |
371 | |
372 public void actionCloseGeneralMsgDialog(ActionEvent event) { | |
373 this.generalMsgList = new ArrayList<String>(); | |
374 } | |
375 | |
376 protected SecurityService getSecurityService() { | |
377 return getAppBean().getSecurityService(); | |
378 } | |
379 | |
380 public void setSelectedTab(String tab) { | |
381 this.selectedTab = tab; | |
382 } | |
383 | |
384 public String closeErrorWindowAction() { | |
385 setDisplayError(false); | |
386 return "close_error"; | |
387 } | |
388 | |
389 public void editEntity(Long id) { | |
390 Entity entity = getWrapper().getEntityById(id); | |
391 this.editEntity(entity); | |
392 } | |
393 | |
394 public void editEntity(String id) { | |
395 try{ | |
396 Long entityId = Long.parseLong(id); | |
397 this.editEntity(entityId); | |
398 }catch (Exception e) { | |
399 e.printStackTrace(); | |
400 } | |
401 } | |
402 | |
403 public void editEntity(Entity entity) { | |
404 logger.info("[" + this.getUsername() + "] Edit Entity= " + entity); | |
405 | |
406 entity = getWrapper().getEntityContent(entity); | |
407 | |
408 this.editFormCurrentEntId = entity.getId(); | |
409 if (entity.getObjectClass().equals("WITNESS")) { | |
410 this.editWitness(entity); | |
411 selectedTab = WITNESS_TAB; | |
412 } else if (entity.getObjectClass().equals("TEXT")) { | |
413 this.editText(entity); | |
414 selectedTab = TEXT_TAB; | |
415 } else if (entity.getObjectClass().equals("REPOSITORY")) { | |
416 this.editRepository(entity); | |
417 selectedTab = REPOSITORY_TAB; | |
418 } else if (entity.getObjectClass().equals("PERSON")) { | |
419 this.editPerson(entity); | |
420 selectedTab = PERSON_TAB; | |
421 } else if (entity.getObjectClass().equals("COLLECTION")) { | |
422 this.editCollection(entity); | |
423 selectedTab = COLLECTION_TAB; | |
424 } else if (entity.getObjectClass().equals("CODEX")) { | |
425 this.editCodex(entity); | |
426 selectedTab = CODEX_TAB; | |
427 } else if (entity.getObjectClass().equals("PLACE")) { | |
428 this.editPlace(entity); | |
429 selectedTab = CITY_TAB; | |
430 } else if (entity.getObjectClass().equals("ALIAS")) { | |
431 this.editAlias(entity); | |
432 selectedTab = ALIAS_TAB; | |
433 } else if (entity.getObjectClass().equals("SUBJECT")) { | |
434 this.editSubject(entity); | |
435 selectedTab = SUBJECT_TAB; | |
436 } else if (entity.getObjectClass().equals("ROLE")) { | |
437 this.editRole(entity); | |
438 selectedTab = ROLE_TAB; | |
439 } else if (entity.getObjectClass().equals("DIGITALIZATION")) { | |
440 this.editDigi(entity); | |
441 selectedTab = DIGI_TAB; | |
442 } else if (entity.getObjectClass().equals(StudyEvent.OC)) { | |
443 this.editWitnessStudyEvent(entity); | |
444 selectedEventTab = WITNESS_STUDY_EVENT_TAB; | |
445 } else if (entity.getObjectClass().equals(CopyEvent.OC)) { | |
446 this.editCopyEvent(entity); | |
447 selectedEventTab = COPY_EVENT_TAB; | |
448 } else if (entity.getObjectClass().equals(TransferEvent.OC)) { | |
449 this.editTransferEvent(entity); | |
450 selectedEventTab = TRANSFER_EVENT_TAB; | |
451 } else { | |
452 addErrorMsg("Form not implemented for these entities [" + entity.getObjectClass() + "]"); | |
453 } | |
454 } | |
455 | |
456 //*************************** | |
457 //*************************** | |
458 //*************************** | |
459 //*************************** | |
460 //*************************** | |
461 private void editText(Entity text) { | |
462 CurrentTextBean bean = (CurrentTextBean)getSessionBean(ApplicationBean.CURRENT_TEXT); | |
463 if(bean == null){ | |
464 bean = new CurrentTextBean(); | |
465 addSessionBean(ApplicationBean.CURRENT_TEXT, bean); | |
466 } | |
467 try { | |
468 bean.setEntity(text); | |
469 } catch (Exception e) { | |
470 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
471 } | |
472 } | |
473 | |
474 private void editRepository(Entity repository) { | |
475 CurrentRepositoryBean bean = (CurrentRepositoryBean)getSessionBean(ApplicationBean.CURRENT_REPOSITORY); | |
476 if(bean == null){ | |
477 bean = new CurrentRepositoryBean(); | |
478 addSessionBean(ApplicationBean.CURRENT_REPOSITORY, bean); | |
479 } | |
480 try { | |
481 bean.setEntity(repository); | |
482 } catch (Exception e) { | |
483 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
484 } | |
485 } | |
486 | |
487 private void editPerson(Entity person) { | |
488 CurrentPersonBean bean = (CurrentPersonBean)getSessionBean(ApplicationBean.CURRENT_PERSON); | |
489 if(bean == null){ | |
490 bean = new CurrentPersonBean(); | |
491 addSessionBean(ApplicationBean.CURRENT_PERSON, bean); | |
492 } | |
493 try { | |
494 bean.setEntity(person); | |
495 } catch (Exception e) { | |
496 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
497 } | |
498 } | |
499 | |
500 private void editCollection(Entity collection) { | |
501 CurrentCollectionBean bean = (CurrentCollectionBean) getSessionBean(ApplicationBean.CURRENT_COLLECTION); | |
502 if (bean == null) { | |
503 bean = new CurrentCollectionBean(); | |
504 addSessionBean(ApplicationBean.CURRENT_COLLECTION, bean); | |
505 } | |
506 try { | |
507 bean.setEntity(collection); | |
508 } catch (Exception e) { | |
509 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
510 } | |
511 } | |
512 | |
513 private void editCodex(Entity codex) { | |
514 CurrentCodexBean bean = (CurrentCodexBean) getSessionBean(ApplicationBean.CURRENT_CODEX); | |
515 if (bean == null) { | |
516 bean = new CurrentCodexBean(); | |
517 addSessionBean(ApplicationBean.CURRENT_CODEX, bean); | |
518 } | |
519 try { | |
520 bean.setEntity(codex); | |
521 } catch (Exception e) { | |
522 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
523 } | |
524 } | |
525 | |
526 private void editPlace(Entity place) { | |
527 CurrentCityBean bean = (CurrentCityBean) getSessionBean(ApplicationBean.CURRENT_CITY); | |
528 if (bean == null) { | |
529 bean = new CurrentCityBean(); | |
530 addSessionBean(ApplicationBean.CURRENT_CITY, bean); | |
531 } | |
532 try { | |
533 bean.setEntity(place); | |
534 } catch (Exception e) { | |
535 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
536 } | |
537 } | |
538 | |
539 private void editAlias(Entity alias) { | |
540 CurrentAliasBean bean = (CurrentAliasBean) getSessionBean(ApplicationBean.CURRENT_ALIAS); | |
541 if (bean == null) { | |
542 bean = new CurrentAliasBean(); | |
543 addSessionBean(ApplicationBean.CURRENT_ALIAS, bean); | |
544 } | |
545 try { | |
546 bean.setEntity(alias); | |
547 } catch (Exception e) { | |
548 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
549 } | |
550 } | |
551 | |
552 private void editSubject(Entity subject) { | |
553 CurrentSubjectBean bean = (CurrentSubjectBean) getSessionBean(ApplicationBean.CURRENT_SUBJECT); | |
554 if (bean == null) { | |
555 bean = new CurrentSubjectBean(); | |
556 addSessionBean(ApplicationBean.CURRENT_SUBJECT, bean); | |
557 } | |
558 try { | |
559 bean.setEntity(subject); | |
560 } catch (Exception e) { | |
561 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
562 } | |
563 } | |
564 | |
565 private void editRole(Entity role) { | |
566 CurrentRoleBean bean = (CurrentRoleBean) getSessionBean(ApplicationBean.CURRENT_ROLE); | |
567 if (bean == null) { | |
568 bean = new CurrentRoleBean(); | |
569 addSessionBean(ApplicationBean.CURRENT_ROLE, bean); | |
570 } | |
571 try { | |
572 bean.setEntity(role); | |
573 } catch (Exception e) { | |
574 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
575 } | |
576 } | |
577 | |
578 | |
579 private void editDigi(Entity digi) { | |
580 CurrentDigitalizationBean bean = (CurrentDigitalizationBean) getSessionBean(ApplicationBean.CURRENT_DIGI); | |
581 if (bean == null) { | |
582 bean = new CurrentDigitalizationBean(); | |
583 addSessionBean(ApplicationBean.CURRENT_DIGI, bean); | |
584 } | |
585 try { | |
586 bean.setEntity(digi); | |
587 } catch (Exception e) { | |
588 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
589 } | |
590 } | |
591 | |
592 | |
593 | |
594 private void editWitness(Entity witness) { | |
595 CurrentWitnessBean bean = (CurrentWitnessBean) getSessionBean(ApplicationBean.CURRENT_WITNESS); | |
596 if (bean == null) { | |
597 bean = new CurrentWitnessBean(); | |
598 addSessionBean(ApplicationBean.CURRENT_WITNESS, bean); | |
599 } | |
600 try { | |
601 bean.setEntity(witness); | |
602 } catch (Exception e) { | |
603 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
604 } | |
605 } | |
606 | |
607 private void editWitnessStudyEvent(Entity event){ | |
608 this.studyEventForm = new StudyEvent(event); | |
609 } | |
610 | |
611 public void listenerCreateStudyEvent(ActionEvent event){ | |
612 this.studyEventForm = new StudyEvent(); | |
613 } | |
614 | |
615 private void editCopyEvent(Entity event){ | |
616 this.copyEventForm = new CopyEvent(event); | |
617 } | |
618 | |
619 public void listenerCreateCopyEvent(ActionEvent event){ | |
620 this.copyEventForm = new CopyEvent(); | |
621 } | |
622 | |
623 private void editTransferEvent(Entity event){ | |
624 this.transferEventForm = new TransferEvent(event); | |
625 } | |
626 | |
627 public void listenerCreateTransferEvent(ActionEvent event){ | |
628 this.transferEventForm = new TransferEvent(); | |
629 } | |
630 | |
631 | |
632 public Long getEditFormCurrentEntId() { | |
633 return editFormCurrentEntId; | |
634 } | |
635 | |
636 public void setEditFormCurrentEntId(Long editFormCurrentEntId) { | |
637 this.editFormCurrentEntId = editFormCurrentEntId; | |
638 } | |
639 | |
640 | |
641 public void updateCurrent(ItemChangeEvent event) { | |
119 | 642 //System.out.println(event.getNewItemName()); |
1 | 643 } |
644 | |
645 public void listenerEntityTabChange(ItemChangeEvent event) { | |
646 String url = "?formIndex=" + this.selectedTab; | |
647 this.redirect(null, url); | |
648 } | |
649 | |
650 public void listenerEventTabChange(ItemChangeEvent event) { | |
651 String url = "?formIndex=" + this.selectedEventTab; | |
652 this.redirect(null, url); | |
653 } | |
654 | |
655 public void listenerAdvancedSearchTabChange(ItemChangeEvent event) { | |
656 String url = "?searchForm=" + this.selectedAdvancedSearchTab; | |
657 this.redirect(null, url); | |
658 } | |
659 | |
181
52aa06772336
fixed missingCodex function. moved some code from SessionBean up to MissingRelationsBean and PublicByAuthorBean.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
180
diff
changeset
|
660 public void redirect(String redirectPath, String parameters){ |
1 | 661 FacesContext fc = FacesContext.getCurrentInstance(); |
662 ExternalContext ec = fc.getExternalContext(); | |
663 String contextPath = ec.getRequestContextPath(); | |
664 if(StringUtils.isEmpty(redirectPath)){ | |
665 redirectPath = ec.getRequestServletPath(); | |
666 } | |
667 try { | |
668 ec.redirect(ec.encodeActionURL(contextPath + redirectPath + parameters)); | |
669 | |
670 } catch (IOException e) { | |
671 e.printStackTrace(); | |
672 } | |
673 } | |
674 | |
675 public Entity getDefinition(Entity assertion) { | |
676 return getWrapper().getDefinition(assertion.getObjectClass()); | |
677 } | |
678 | |
679 public String toProfile(){ | |
680 return PAGE_PROFILE; | |
681 } | |
682 | |
683 public String toSimpleSearch() { | |
684 return PAGE_SIMPLE_SEARCH; | |
685 } | |
686 | |
687 public String toDefinitionEditor(){ | |
688 if(this.defForm != null){ | |
689 this.defForm.loadDefinitions(); | |
690 return PAGE_DEF_EDITOR; | |
691 } | |
692 return ""; | |
693 } | |
694 | |
695 public String displayByAttribute() { | |
696 Attribute att = (Attribute) getRequestBean("attribute"); | |
697 logger.info(att); | |
698 if (att != null) { | |
699 Entity ent = getWrapper().getEntityById(att.getSourceId()); | |
700 if (ent.getObjectClass().equals("TEXT")) { | |
701 this.displayTitle.showTitle(ent.getId()); | |
702 return PAGE_DISPLAY_TITLE; | |
703 } else if (ent.getObjectClass().equals("PERSON")) { | |
704 this.displayAuthor.showAuthor(ent.getId()); | |
705 return PAGE_DISPLAY_AUTHOR; | |
706 } | |
707 } | |
708 | |
709 return ""; | |
710 } | |
711 | |
712 public void displayAuthorSetPerson(String personId){ | |
713 try{ | |
714 Long id = new Long(personId); | |
715 Entity person = getWrapper().getEntityById(id); | |
716 if(person != null){ | |
717 person = getWrapper().getEntityContent(person); | |
718 if (person.getObjectClass().equals("PERSON")) { | |
719 this.displayAuthor.showAuthor(person.getId()); | |
720 } | |
721 } | |
722 }catch(Exception e){ | |
723 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
724 } | |
725 } | |
726 | |
727 public void displayAuthorSetTitle(String textId){ | |
728 try{ | |
729 Long id = new Long(textId); | |
730 this.displayAuthor.showTitle(id); | |
731 }catch(Exception e){ | |
732 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
733 } | |
734 } | |
735 | |
736 public void displayAuthorSetWitness(String witnessId){ | |
737 try{ | |
738 Long id = new Long(witnessId); | |
739 this.displayAuthor.showWitness(id); | |
740 }catch(Exception e){ | |
741 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
742 } | |
743 } | |
744 | |
745 public void displayTitleSetTitle(String textId){ | |
746 try{ | |
747 Long id = new Long(textId); | |
748 Entity ent = getWrapper().getEntityById(id); | |
749 if(ent != null){ | |
750 ent = getWrapper().getEntityContent(ent); | |
751 if (ent.getObjectClass().equals("TEXT")) { | |
752 //this.editText(ent); | |
753 this.displayTitle.showTitle(id); | |
754 } | |
755 } | |
756 }catch(Exception e){ | |
757 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
758 } | |
759 } | |
760 | |
761 public void displayTitleSetWitness(String witnessId){ | |
762 try{ | |
763 Long id = new Long(witnessId); | |
764 this.displayTitle.showWitness(id); | |
765 | |
766 }catch(Exception e){ | |
767 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
768 } | |
769 } | |
770 | |
771 public void displayTitleFromWitness(String witnessId){ | |
772 try{ | |
773 Long longWitnessId = new Long(witnessId); | |
774 | |
775 List<Entity> textList = | |
776 getWrapper().getTargetsForSourceRelation(longWitnessId, "is_exemplar_of", "TEXT", 1); | |
777 if(textList.size() > 0){ | |
778 this.displayTitle.showTitle(textList.get(0).getId()); | |
779 this.displayTitle.showWitness(longWitnessId); | |
780 } | |
781 | |
782 }catch(Exception e){ | |
783 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
784 } | |
785 } | |
786 | |
787 public void displayAuthorFromWitness(String witnessId){ | |
788 try{ | |
789 Long longWitnessId = new Long(witnessId); | |
790 | |
791 List<Entity> titleList = | |
792 getWrapper().getTargetsForSourceRelation(longWitnessId, "is_exemplar_of", "TEXT", 1); | |
793 if(titleList.size() > 0){ | |
794 Entity title = titleList.get(0); | |
795 List<Entity> authorList = | |
796 getWrapper().getTargetsForSourceRelation(title.getId(), "was_created_by", "PERSON", 1); | |
797 if(authorList.size() > 0){ | |
798 this.displayAuthor.showAuthor(authorList.get(0).getId()); | |
799 this.displayAuthor.showTitle(title.getId()); | |
800 this.displayAuthor.showWitness(longWitnessId); | |
801 } | |
802 } | |
803 | |
804 }catch(Exception e){ | |
805 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
806 } | |
807 } | |
808 | |
809 public void displayAuthorFromTitles(String titleId){ | |
810 try{ | |
811 Long longTitleId = new Long(titleId); | |
812 | |
813 List<Entity> authorList = | |
814 getWrapper().getTargetsForSourceRelation(longTitleId, "was_created_by", "PERSON", 1); | |
815 if(authorList.size() > 0){ | |
816 this.displayAuthor.showAuthor(authorList.get(0).getId()); | |
817 this.displayAuthor.showTitle(longTitleId); | |
818 } | |
819 | |
820 }catch(Exception e){ | |
821 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
822 } | |
823 } | |
824 | |
825 | |
826 public String editByAttribute() { | |
827 Attribute att = (Attribute) getRequestBean("attribute"); | |
828 logger.info(att); | |
829 if (att != null) { | |
830 Entity ent = getWrapper().getEntityById(att.getSourceId()); | |
831 if (ent != null) { | |
832 this.editEntity(ent); | |
833 return PAGE_ENTRY; | |
834 } | |
835 } | |
836 | |
837 return ""; | |
838 } | |
839 | |
840 public void setIdEntityDetails(String id){ | |
841 try{ | |
842 Long idLong = new Long(id); | |
843 Entity e = getWrapper().getEntityById(idLong); | |
844 this.entDetailsForm.setEntity(e); | |
845 }catch(Exception e){ | |
846 logger.error("[U=" + this.getUsername() + "]" + e.getMessage(), e); | |
847 } | |
848 } | |
849 | |
850 public String editByEntity() { | |
851 Entity ent = (Entity) getRequestBean("entity"); | |
852 if (ent != null) { | |
853 if (ent != null) { | |
854 this.editEntity(ent); | |
855 return PAGE_ENTRY; | |
856 } | |
857 } | |
858 return ""; | |
859 } | |
860 | |
861 public void setErrorMessages(CheckResults cr) { | |
862 | |
863 errorMessages = new ArrayList<String>(); | |
864 for (String err : cr.errors) { | |
865 errorMessages.add(err); | |
866 } | |
867 | |
868 } | |
869 | |
870 public void setDisplayError(boolean b) { | |
871 displayError = b; | |
872 | |
873 } | |
874 | |
875 public boolean getDisplayError() { | |
876 return displayError; | |
877 } | |
878 | |
879 public ArrayList<String> getErrorMessages() { | |
880 return errorMessages; | |
881 } | |
882 | |
883 public User getUser() { | |
884 if(user == null){ | |
885 autoLogin(); | |
886 } | |
887 return user; | |
888 } | |
889 | |
890 public void setUser(User user) { | |
891 this.user = user; | |
892 } | |
893 | |
894 public String getUsername() { | |
895 return username; | |
896 } | |
897 | |
898 public void setUsername(String username) { | |
899 this.username = username; | |
900 } | |
901 | |
902 public String getPassword() { | |
903 return password; | |
904 } | |
905 | |
906 public void setPassword(String password) { | |
907 this.password = password; | |
908 } | |
909 | |
910 public GeneralMerge getGeneralMerge() { | |
911 return generalMerge; | |
912 } | |
913 | |
914 public void setGeneralMerge(GeneralMerge generalMerge) { | |
915 this.generalMerge = generalMerge; | |
916 } | |
917 | |
85 | 918 public ReferenceMerge getReferenceMerge() { |
919 return referenceMerge; | |
920 } | |
921 | |
922 public void setReferenceMerge(ReferenceMerge referenceMerge) { | |
923 this.referenceMerge = referenceMerge; | |
924 } | |
925 | |
96 | 926 /** |
927 * @return the importMerge | |
928 */ | |
929 public ImportMerge getImportMerge() { | |
930 return importMerge; | |
931 } | |
932 | |
933 /** | |
934 * @param importMerge the importMerge to set | |
935 */ | |
936 public void setImportMerge(ImportMerge importMerge) { | |
937 this.importMerge = importMerge; | |
938 } | |
939 | |
940 public DefinitionForm getDefForm() { | |
1 | 941 return defForm; |
942 } | |
943 | |
944 public void setDefForm(DefinitionForm defForm) { | |
945 this.defForm = defForm; | |
946 } | |
947 | |
948 public StudyEvent getStudyEventForm() { | |
949 return studyEventForm; | |
950 } | |
951 | |
952 public void setStudyEventForm(StudyEvent studyEventForm) { | |
953 this.studyEventForm = studyEventForm; | |
954 } | |
955 | |
956 public CopyEvent getCopyEventForm() { | |
957 return copyEventForm; | |
958 } | |
959 | |
960 public void setCopyEventForm(CopyEvent copyEventForm) { | |
961 this.copyEventForm = copyEventForm; | |
962 } | |
963 | |
964 public TransferEvent getTransferEventForm() { | |
965 return transferEventForm; | |
966 } | |
967 | |
968 public void setTransferEventForm(TransferEvent transferEventForm) { | |
969 this.transferEventForm = transferEventForm; | |
970 } | |
971 | |
972 public String getSelectedEventTab() { | |
973 return selectedEventTab; | |
974 } | |
975 | |
976 public void setSelectedEventTab(String selectedEventTab) { | |
977 this.selectedEventTab = selectedEventTab; | |
978 } | |
979 | |
980 public AdvancedSearchBean getAdvancedSearch() { | |
981 return advancedSearch; | |
982 } | |
983 | |
984 public void setAdvancedSearch(AdvancedSearchBean advancedSearch) { | |
985 this.advancedSearch = advancedSearch; | |
986 } | |
987 | |
988 public DisplayAuthorBean getDisplayAuthor() { | |
989 return displayAuthor; | |
990 } | |
991 | |
992 public void setDisplayAuthor(DisplayAuthorBean displayAuthor) { | |
993 this.displayAuthor = displayAuthor; | |
994 } | |
995 | |
996 public DisplayTitleBean getDisplayTitle() { | |
997 return displayTitle; | |
998 } | |
999 | |
1000 public void setDisplayTitle(DisplayTitleBean displayTitle) { | |
1001 this.displayTitle = displayTitle; | |
1002 } | |
1003 | |
1004 public Calendar getCurrentCalendar() { | |
1005 return currentCalendar; | |
1006 } | |
1007 | |
1008 public void setCurrentCalendar(Calendar currentCalendar) { | |
1009 this.currentCalendar = currentCalendar; | |
1010 } | |
1011 | |
1012 public EntityList getCurrentEntListForCalendar() { | |
1013 return currentEntListForCalendar; | |
1014 } | |
1015 | |
1016 public void setCurrentEntListForCalendar(EntityList currentEntListForCalendar) { | |
1017 this.currentEntListForCalendar = currentEntListForCalendar; | |
1018 } | |
1019 | |
1020 public Long getCurrentEntIdForCalendar() { | |
1021 return currentEntIdForCalendar; | |
1022 } | |
1023 | |
1024 public void setCurrentEntIdForCalendar(Long currentEntIdForCalendar) { | |
1025 this.currentEntIdForCalendar = currentEntIdForCalendar; | |
1026 } | |
1027 | |
1028 public boolean isDisplayLoginDialog() { | |
1029 return displayLoginDialog; | |
1030 } | |
1031 | |
1032 public boolean isDisplayLoginDialog4PrivatePage(){ | |
1033 return displayLoginDialog || this.user == null; | |
1034 } | |
1035 | |
1036 public boolean isDisplayLoginDialog4PublicPage(){ | |
1037 return displayLoginDialog; | |
1038 } | |
1039 | |
1040 public EntityDetailsBean getEntDetailsForm() { | |
1041 return entDetailsForm; | |
1042 } | |
1043 | |
1044 public void setEntDetailsForm(EntityDetailsBean entDetailsForm) { | |
1045 this.entDetailsForm = entDetailsForm; | |
1046 } | |
1047 | |
1048 public String getSelectedTab() { | |
1049 return selectedTab; | |
1050 } | |
1051 | |
1052 public String getSelectedAdvancedSearchTab() { | |
1053 return selectedAdvancedSearchTab; | |
1054 } | |
1055 | |
1056 public void setSelectedAdvancedSearchTab(String selectedAdvancedSearchTab) { | |
1057 this.selectedAdvancedSearchTab = selectedAdvancedSearchTab; | |
1058 } | |
1059 | |
1060 | |
1061 public DynamicPageEditor getPageEditor(){ | |
1062 if(this.pageEditor == null){ | |
1063 this.pageEditor = new DynamicPageEditor(); | |
1064 } | |
1065 return this.pageEditor; | |
1066 } | |
1067 | |
1068 public DigiListBean getDigiList() { | |
1069 if(digiList == null){ | |
1070 digiList = new DigiListBean(getWrapper()); | |
1071 } | |
1072 | |
1073 return digiList; | |
1074 } | |
1075 | |
1076 public DynamicPage getDynamicPage() { | |
1077 if(dynamicPage == null){ | |
1078 this.dynamicPage = new DynamicPage(); | |
1079 } | |
1080 return dynamicPage; | |
1081 } | |
1082 | |
1083 public void setDynamicPage(DynamicPage dynamicPage) { | |
1084 this.dynamicPage = dynamicPage; | |
1085 } | |
1086 | |
1087 public PublicCodexView getPublicCodexView(){ | |
1088 if(publicCodexView == null){ | |
1089 this.publicCodexView = new PublicCodexView(); | |
1090 } | |
1091 return this.publicCodexView; | |
1092 } | |
1093 | |
1094 public PublicCodexBean getPublicCodexBean() { | |
1095 if(publicCodexBean == null){ | |
1096 this.publicCodexBean = new PublicCodexBean(); | |
1097 } | |
1098 return publicCodexBean; | |
1099 } | |
1100 | |
1101 public void setPublicCodexBean(PublicCodexBean publicCodexBean) { | |
1102 this.publicCodexBean = publicCodexBean; | |
1103 } | |
153
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1104 |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1105 /** |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1106 * @return the publicByAuthor |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1107 */ |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1108 public PublicByAuthorBean getPublicByAuthor() { |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1109 return publicByAuthor; |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1110 } |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1111 |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1112 /** |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1113 * @param publicByAuthor the publicByAuthor to set |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1114 */ |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1115 public void setPublicByAuthor(PublicByAuthorBean publicByAuthor) { |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1116 this.publicByAuthor = publicByAuthor; |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1117 } |
3c83f42a8a39
first stab at new public-by-author interface.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
119
diff
changeset
|
1118 |
180
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1119 public MissingRelationsBean getMissingRelations() { |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1120 return missingRelations; |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1121 } |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1122 |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1123 public void setMissingRelations(MissingRelationsBean missingRelations) { |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1124 this.missingRelations = missingRelations; |
0d31c8be7c31
new MissingRelations feature and UI.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
178
diff
changeset
|
1125 } |
1 | 1126 |
1127 | |
1128 | |
1129 } | |
1130 |