annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentCodexBean.java @ 161:8049becb05ca

New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Thu, 19 Apr 2018 20:35:12 +0200
parents 502ae5b1a07d
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.io.Serializable;
jurzua
parents:
diff changeset
4
jurzua
parents:
diff changeset
5 import java.util.ArrayList;
jurzua
parents:
diff changeset
6 import java.util.List;
jurzua
parents:
diff changeset
7
jurzua
parents:
diff changeset
8 import javax.faces.event.ActionEvent;
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.Node;
jurzua
parents:
diff changeset
16 import org.mpi.openmind.repository.bo.Relation;
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
17 import org.mpi.openmind.repository.services.utils.EditIntent;
1
jurzua
parents:
diff changeset
18
jurzua
parents:
diff changeset
19 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
jurzua
parents:
diff changeset
20 import de.mpiwg.itgroup.ismi.util.guiComponents.EntityList;
jurzua
parents:
diff changeset
21
jurzua
parents:
diff changeset
22 /**
jurzua
parents:
diff changeset
23 * @author jurzua
jurzua
parents:
diff changeset
24 *
jurzua
parents:
diff changeset
25 */
jurzua
parents:
diff changeset
26 public class CurrentCodexBean extends CodexEditorTemplate implements Serializable{
jurzua
parents:
diff changeset
27 private static final long serialVersionUID = -4242977362183330958L;
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 private static Logger logger = Logger.getLogger(CurrentCodexBean.class);
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 //private Entity codex;
jurzua
parents:
diff changeset
32
jurzua
parents:
diff changeset
33 private List<Entity> witnessInCurrentCodex;
jurzua
parents:
diff changeset
34 private boolean showWitnessInCurrentCodex;
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
35
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
36 private EntityList aliasIdList;
1
jurzua
parents:
diff changeset
37 private EntityList ownedByPeople;
jurzua
parents:
diff changeset
38 private EntityList readByPeople;
jurzua
parents:
diff changeset
39
jurzua
parents:
diff changeset
40 private List<SelectItem> suggestedBindingList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 private CodexEditorTemplate referencedCodexTemplate;
jurzua
parents:
diff changeset
43 private Boolean isAlias;
jurzua
parents:
diff changeset
44
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
45 /** intent to edit all attributes and relations in the form */
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
46 public static EditIntent editCodexIntent = new EditIntent(
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
47 AbstractISMIBean.CODEX,
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
48 // attributes
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
49 new String[]{"identifier", "is_alias", "public", "url_digitized_codex", "mpiwg_id", "indexmeta_folder",
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
50 "number_of_folios", "dimensions", "binding", "distinguishing_features", "notes", "notes_old",
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
51 "notes_on_ownership"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
52 // source relations
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
53 new String[]{"is_part_of", "is_alias_of", "owned_by", "read_by"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
54 // target relations
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
55 new String[]{"is_alias_of", "is_reference_of", is_alias_identifier_of});
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
56
1
jurzua
parents:
diff changeset
57
jurzua
parents:
diff changeset
58 public CurrentCodexBean() {
jurzua
parents:
diff changeset
59 this.entity = new Entity(Node.TYPE_ABOX, CODEX, false);
jurzua
parents:
diff changeset
60 setDefObjectClass(CODEX);
jurzua
parents:
diff changeset
61 registerChecker(getCityLo(), "city is not valid");
jurzua
parents:
diff changeset
62 registerChecker(getCountryLo(), "country is not valid");
jurzua
parents:
diff changeset
63 registerChecker(getRepositoryLo(), "repository is not valid");
jurzua
parents:
diff changeset
64 registerChecker(getCollectionLo(), "collection is not valid");
jurzua
parents:
diff changeset
65
jurzua
parents:
diff changeset
66 this.refreshBindingList();
jurzua
parents:
diff changeset
67 }
jurzua
parents:
diff changeset
68
jurzua
parents:
diff changeset
69 @Override
jurzua
parents:
diff changeset
70 public void reset(){
jurzua
parents:
diff changeset
71 super.reset();
jurzua
parents:
diff changeset
72 this.entity = new Entity(Node.TYPE_ABOX, CODEX, false);
jurzua
parents:
diff changeset
73
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
74 this.aliasIdList = new EntityList(ALIAS, "alias", getWrapper(), getUserName());
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
75
1
jurzua
parents:
diff changeset
76 this.ownedByPeople = new EntityList(PERSON, "name_translit", true);
jurzua
parents:
diff changeset
77 this.readByPeople = new EntityList(PERSON, "name_translit", true);
jurzua
parents:
diff changeset
78
jurzua
parents:
diff changeset
79 this.witnessInCurrentCodex = new ArrayList<Entity>();
jurzua
parents:
diff changeset
80 this.showWitnessInCurrentCodex = false;
jurzua
parents:
diff changeset
81 this.isAlias = false;
jurzua
parents:
diff changeset
82 this.referencedCodexTemplate = new CodexEditorTemplate();
jurzua
parents:
diff changeset
83 this.refreshBindingList();
jurzua
parents:
diff changeset
84 }
jurzua
parents:
diff changeset
85
jurzua
parents:
diff changeset
86 public void listenerRefreshBindingList(ActionEvent event){
jurzua
parents:
diff changeset
87 this.refreshBindingList();
jurzua
parents:
diff changeset
88 }
jurzua
parents:
diff changeset
89
jurzua
parents:
diff changeset
90 public void listenerEditCalendarOwnedBy(ActionEvent event){
jurzua
parents:
diff changeset
91 Entity entity = (Entity)getRequestBean("item");
jurzua
parents:
diff changeset
92 if(entity != null){
jurzua
parents:
diff changeset
93 Calendar cal = this.ownedByPeople.getCalendar(entity.getId());
jurzua
parents:
diff changeset
94 getSessionBean().editCalendar(cal, ownedByPeople, entity.getId());
jurzua
parents:
diff changeset
95 }
jurzua
parents:
diff changeset
96 }
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 public void listenerEditCalendarReadBy(ActionEvent event){
jurzua
parents:
diff changeset
99 Entity entity = (Entity)getRequestBean("item");
jurzua
parents:
diff changeset
100 if(entity != null){
jurzua
parents:
diff changeset
101 Calendar cal = this.readByPeople.getCalendar(entity.getId());
jurzua
parents:
diff changeset
102 getSessionBean().editCalendar(cal, readByPeople, entity.getId());
jurzua
parents:
diff changeset
103 }
jurzua
parents:
diff changeset
104 }
jurzua
parents:
diff changeset
105
jurzua
parents:
diff changeset
106 private void refreshBindingList(){
jurzua
parents:
diff changeset
107 this.suggestedBindingList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
108 suggestedBindingList.add(new SelectItem("", "--choose--"));
jurzua
parents:
diff changeset
109 Attribute binding = getWrapper().getDefAttributeByOwnValue(this.entity.getObjectClass(), "binding");
jurzua
parents:
diff changeset
110 if(binding != null){
jurzua
parents:
diff changeset
111 for(String s : binding.getPossibleValuesList()){
jurzua
parents:
diff changeset
112 this.suggestedBindingList.add(new SelectItem(s));
jurzua
parents:
diff changeset
113 }
jurzua
parents:
diff changeset
114 }
jurzua
parents:
diff changeset
115 }
jurzua
parents:
diff changeset
116
jurzua
parents:
diff changeset
117 public String createCollectionAction() {
jurzua
parents:
diff changeset
118 getSessionBean().setSelectedTab(SessionBean.COLLECTION_TAB);
jurzua
parents:
diff changeset
119 return "edit";
jurzua
parents:
diff changeset
120 }
jurzua
parents:
diff changeset
121
jurzua
parents:
diff changeset
122 @Override
jurzua
parents:
diff changeset
123 public void setEntity(Entity codex) {
jurzua
parents:
diff changeset
124 this.reset();
jurzua
parents:
diff changeset
125 this.entity = codex;
jurzua
parents:
diff changeset
126 logger.info("Set Codex " + this.entity);
jurzua
parents:
diff changeset
127 try {
jurzua
parents:
diff changeset
128 if(this.entity != null && this.entity.isPersistent()){
jurzua
parents:
diff changeset
129 if(this.entity.isLightweight()){
jurzua
parents:
diff changeset
130 this.entity = getWrapper().getEntityContent(this.entity);
jurzua
parents:
diff changeset
131 }
jurzua
parents:
diff changeset
132
jurzua
parents:
diff changeset
133 this.loadAttributes(this.entity);
jurzua
parents:
diff changeset
134
jurzua
parents:
diff changeset
135 Attribute isAliasAtt = getWrapper().getAttributeByName(this.entity.getId(), "is_alias");
jurzua
parents:
diff changeset
136 if(isAlias != null){
jurzua
parents:
diff changeset
137 try{
jurzua
parents:
diff changeset
138 this.isAlias = new Boolean(isAliasAtt.getOwnValue());
jurzua
parents:
diff changeset
139 }catch(Exception ex){
jurzua
parents:
diff changeset
140 this.isAlias = false;
jurzua
parents:
diff changeset
141 }
jurzua
parents:
diff changeset
142 }else{
jurzua
parents:
diff changeset
143 this.isAlias = false;
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
146 for(Relation rel : getWrapper().getTargetRelations(codex, is_alias_identifier_of, ALIAS, -1)) {
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
147 Entity alias = getWrapper().getEntityById(rel.getSourceId());
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
148 this.aliasIdList.add(alias);
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
149 }
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
150
1
jurzua
parents:
diff changeset
151 for(Relation rel : getWrapper().getSourceRelations(codex, owned_by, PERSON, -1)) {
jurzua
parents:
diff changeset
152 this.ownedByPeople.add(getWrapper().getEntityById(rel.getTargetId()), rel.getAttributeByName("date"));
jurzua
parents:
diff changeset
153 }
jurzua
parents:
diff changeset
154
jurzua
parents:
diff changeset
155 for(Relation rel : getWrapper().getSourceRelations(codex, "read_by", PERSON, -1)) {
jurzua
parents:
diff changeset
156 this.readByPeople.add(getWrapper().getEntityById(rel.getTargetId()), rel.getAttributeByName("date"));
jurzua
parents:
diff changeset
157 }
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 for (Entity target : getWrapper()
jurzua
parents:
diff changeset
160 .getTargetsForSourceRelation(codex, is_part_of, COLLECTION, 1)) {
jurzua
parents:
diff changeset
161 String ct = target.getObjectClass();
jurzua
parents:
diff changeset
162
jurzua
parents:
diff changeset
163 if (ct.equals(COLLECTION)) {
jurzua
parents:
diff changeset
164 this.setCollection(target);
jurzua
parents:
diff changeset
165 }
jurzua
parents:
diff changeset
166 }
jurzua
parents:
diff changeset
167
jurzua
parents:
diff changeset
168 List<Entity> list = getWrapper().getTargetsForSourceRelation(codex, "is_alias_of", CODEX, 1);
jurzua
parents:
diff changeset
169 if(!list.isEmpty()){
jurzua
parents:
diff changeset
170 this.setReferencedCodex(list.get(0));
jurzua
parents:
diff changeset
171 //this.referencedCodexTemplate.setCodexLo(codexLo);
jurzua
parents:
diff changeset
172 //this.referencedCodexLO.setEntityAndAttribute(list.get(0), "identifier");
jurzua
parents:
diff changeset
173 }
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175
jurzua
parents:
diff changeset
176 //this.loadReferences(this.entity);
jurzua
parents:
diff changeset
177 this.loadEndNoteRefs();
jurzua
parents:
diff changeset
178
jurzua
parents:
diff changeset
179 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
180 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
181 }
jurzua
parents:
diff changeset
182 } catch (Exception e) {
jurzua
parents:
diff changeset
183 logger.info(e.getMessage(), e);
jurzua
parents:
diff changeset
184 printInternalError(e);
jurzua
parents:
diff changeset
185 }
jurzua
parents:
diff changeset
186 }
jurzua
parents:
diff changeset
187
jurzua
parents:
diff changeset
188 public void setReferencedCodex(Entity codex){
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 91
diff changeset
189 this.referencedCodexTemplate.getCodexLo().setEntityAndAttributeName(codex, "identifier");
1
jurzua
parents:
diff changeset
190
jurzua
parents:
diff changeset
191 if(this.referencedCodexTemplate.getCodexLo().entity != null &&
jurzua
parents:
diff changeset
192 this.referencedCodexTemplate.getCodexLo().entity.isPersistent()){
jurzua
parents:
diff changeset
193
jurzua
parents:
diff changeset
194 List<Entity> list = getWrapper().getTargetsForSourceRelation(codex, is_part_of, COLLECTION, 1);
jurzua
parents:
diff changeset
195 if(list.size() > 0){
jurzua
parents:
diff changeset
196 this.referencedCodexTemplate.setCollection(list.get(0));
jurzua
parents:
diff changeset
197 }
jurzua
parents:
diff changeset
198 }
jurzua
parents:
diff changeset
199 }
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201 @Override
jurzua
parents:
diff changeset
202 public String save() {
jurzua
parents:
diff changeset
203 super.save();
jurzua
parents:
diff changeset
204 try {
jurzua
parents:
diff changeset
205 CheckResults cr = getCheckResults();
jurzua
parents:
diff changeset
206 if (cr.hasErrors) {
jurzua
parents:
diff changeset
207 getSessionBean().setErrorMessages(cr);
jurzua
parents:
diff changeset
208 getSessionBean().setDisplayError(true);
jurzua
parents:
diff changeset
209 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
210 return PAGE_EDITOR;
jurzua
parents:
diff changeset
211 }
jurzua
parents:
diff changeset
212
jurzua
parents:
diff changeset
213 if (this.entity == null) {
jurzua
parents:
diff changeset
214 this.entity = new Entity();
jurzua
parents:
diff changeset
215 this.entity.setObjectClass("CODEX");
jurzua
parents:
diff changeset
216 }
jurzua
parents:
diff changeset
217
jurzua
parents:
diff changeset
218 this.entity = this.updateEntityAttributes(this.entity);
jurzua
parents:
diff changeset
219
jurzua
parents:
diff changeset
220 if(this.entity.getAttributeByName("is_alias") != null){
jurzua
parents:
diff changeset
221 this.entity.getAttributeByName("is_alias").setOwnValue(this.isAlias.toString());
jurzua
parents:
diff changeset
222 }else{
jurzua
parents:
diff changeset
223 this.entity.addAttribute(new Attribute("is_alias", "boolean", this.isAlias.toString()));
jurzua
parents:
diff changeset
224 }
jurzua
parents:
diff changeset
225
jurzua
parents:
diff changeset
226 if(this.isAlias){
jurzua
parents:
diff changeset
227 if(referencedCodexTemplate.getCodexLo().entity != null){
jurzua
parents:
diff changeset
228 // CODEX -> is_part_of -> CODEX
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
229 this.entity.replaceUniqueSourceRelation(referencedCodexTemplate.getCodexLo().entity, CODEX, "is_alias_of");
1
jurzua
parents:
diff changeset
230 }else{
jurzua
parents:
diff changeset
231 this.entity.removeAllSourceRelations("is_alias_of", CODEX);
jurzua
parents:
diff changeset
232 }
jurzua
parents:
diff changeset
233 }
jurzua
parents:
diff changeset
234
jurzua
parents:
diff changeset
235 //checking is the identifier is unique for the selected collecion
jurzua
parents:
diff changeset
236 String identifier = (this.entity.getAttributeByName("identifier") != null) ? this.entity.getAttributeByName("identifier").getValue() : "";
jurzua
parents:
diff changeset
237 if(StringUtils.isNotEmpty(identifier)){
jurzua
parents:
diff changeset
238 if(!checkUnityCodex(identifier, (isSelectedSaveAsNew()) ? null : this.entity.getId(), this.getCollectionLo().entity)){
jurzua
parents:
diff changeset
239 this.renderUnityCheckerDialog();
jurzua
parents:
diff changeset
240 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
241 return PAGE_EDITOR;
jurzua
parents:
diff changeset
242 }
jurzua
parents:
diff changeset
243 }else{
jurzua
parents:
diff changeset
244 this.addErrorMsg("This entity has not been saved, because its identifier was empty.");
jurzua
parents:
diff changeset
245 this.addErrorMsg("You must enter an identifier.");
jurzua
parents:
diff changeset
246 return PAGE_EDITOR;
jurzua
parents:
diff changeset
247 }
jurzua
parents:
diff changeset
248
jurzua
parents:
diff changeset
249 if(!isCodexConsistentBeforeSave()){
jurzua
parents:
diff changeset
250 return PAGE_EDITOR;
jurzua
parents:
diff changeset
251 }
jurzua
parents:
diff changeset
252
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
253 this.entity.replaceUniqueSourceRelation(this.getCollectionLo().entity, COLLECTION, is_part_of);
1
jurzua
parents:
diff changeset
254
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
255 // ALIAS -> is_identifier_of -> CODEX
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
256 replaceMultipleTargetRelations(entity, aliasIdList.getEntities(), ALIAS, is_alias_identifier_of);
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
257
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
258 // CODEX -> owned_by -> PERSON
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
259 replaceMultipleSourceRelations(entity, ownedByPeople.getEntities(), PERSON, owned_by);
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
260
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
261 // CODEX -> read_by -> PERSON
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
262 replaceMultipleSourceRelations(entity, readByPeople.getEntities(), PERSON, "read_by");
1
jurzua
parents:
diff changeset
263
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
264 /* TODO: currently ignoring date on relations
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
265 // CODEX -> owner_by (manyToMany) -> PERSON
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
266 this.entity.removeAllSourceRelationsByName(owned_by);
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
267
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
268 // CODEX -> read_by (manyToMany) -> PERSON
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
269 this.entity.removeAllSourceRelationsByName("read_by");
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
270
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
271 for (Entity owner : this.ownedByPeople.getEntities()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
272 if (owner.isLightweight()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
273 owner = getWrapper().getEntityByIdWithContent(owner.getId());
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
274 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
275 Relation ownerBy = new Relation(this.entity, owner, owned_by);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
276 Calendar cal = ownedByPeople.getCalendar(owner.getId());
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
277 if (cal != null) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
278 ownerBy.addAttribute(new Attribute("date", "date", cal.toJSONString()));
1
jurzua
parents:
diff changeset
279 }
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
280 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
281 for (Entity reader : this.readByPeople.getEntities()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
282 Relation readBy = new Relation(this.entity, reader, "read_by");
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
283 Calendar cal = readByPeople.getCalendar(reader.getId());
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
284 if (cal != null) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
285 readBy.addAttribute(new Attribute("date", "date", cal.toJSONString()));
1
jurzua
parents:
diff changeset
286 }
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
287 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
288 */
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
289
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
290 //REFERENCE -> is_reference_of -> THIS
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
291 //this.entity = this.prepareReferencesToSave(this.entity);
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
292 this.saveReferences();
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
293
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
294
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
295 // save this entity
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
296 this.entity = getWrapper().saveEntity(this.entity, getSessionUser().getEmail(), editCodexIntent);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
297
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
298 // update own value of related objects (codex name in many names)
91
d172201d24ad more comments and refactorings.
casties
parents: 1
diff changeset
299 this.updateRelatedOW(this.entity, getSessionUser().getEmail());
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
300
1
jurzua
parents:
diff changeset
301 getSessionBean().setEditFormCurrentEntId(this.entity.getId());
jurzua
parents:
diff changeset
302
jurzua
parents:
diff changeset
303 logger.info("Entity saved - Time = " + (System.currentTimeMillis() - start) + ", " + entity);
jurzua
parents:
diff changeset
304 this.printSuccessSavingEntity();
jurzua
parents:
diff changeset
305
jurzua
parents:
diff changeset
306 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
307
jurzua
parents:
diff changeset
308 } catch (Exception e) {
jurzua
parents:
diff changeset
309 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
310 e.printStackTrace();
jurzua
parents:
diff changeset
311 this.printInternalError(e);
jurzua
parents:
diff changeset
312 }
jurzua
parents:
diff changeset
313
jurzua
parents:
diff changeset
314 saveEnd();
jurzua
parents:
diff changeset
315 return PAGE_EDITOR;
jurzua
parents:
diff changeset
316 }
jurzua
parents:
diff changeset
317
jurzua
parents:
diff changeset
318 public String saveAsNewEntity() {
jurzua
parents:
diff changeset
319 this.setSelectedSaveAsNew(true);
jurzua
parents:
diff changeset
320 return save();
jurzua
parents:
diff changeset
321 }
jurzua
parents:
diff changeset
322
jurzua
parents:
diff changeset
323 public void setLWCodex(Entity codex) {
jurzua
parents:
diff changeset
324 this.entity = codex;
jurzua
parents:
diff changeset
325 }
jurzua
parents:
diff changeset
326
jurzua
parents:
diff changeset
327 public void actionShowWitnessDialog(ActionEvent event){
jurzua
parents:
diff changeset
328 if(this.witnessInCurrentCodex.size() == 0 && this.entity.isPersistent()){
jurzua
parents:
diff changeset
329 this.witnessInCurrentCodex =
jurzua
parents:
diff changeset
330 getWrapper().getSourcesForTargetRelation(this.entity, "is_part_of", "WITNESS", 50);
jurzua
parents:
diff changeset
331 }
jurzua
parents:
diff changeset
332 this.setShowWitnessInCurrentCodex(true);
jurzua
parents:
diff changeset
333 }
jurzua
parents:
diff changeset
334
jurzua
parents:
diff changeset
335 public void actionCloseWitnessDialog(ActionEvent event){
jurzua
parents:
diff changeset
336 this.setShowWitnessInCurrentCodex(false);
jurzua
parents:
diff changeset
337 }
jurzua
parents:
diff changeset
338
jurzua
parents:
diff changeset
339 public void actionEditThisWitness(ActionEvent event){
jurzua
parents:
diff changeset
340 this.setShowWitnessInCurrentCodex(false);
jurzua
parents:
diff changeset
341 Entity currentWitness = (Entity)getRequestBean("witness");
jurzua
parents:
diff changeset
342 if(currentWitness != null && currentWitness.isPersistent()){
jurzua
parents:
diff changeset
343 getSessionBean().editEntity(currentWitness);
jurzua
parents:
diff changeset
344 }
jurzua
parents:
diff changeset
345 }
jurzua
parents:
diff changeset
346
jurzua
parents:
diff changeset
347 public List<Entity> getWitnessInCurrentCodex() {
jurzua
parents:
diff changeset
348 return witnessInCurrentCodex;
jurzua
parents:
diff changeset
349 }
jurzua
parents:
diff changeset
350
jurzua
parents:
diff changeset
351 public void setWitnessInCurrentCodex(List<Entity> witnessInCurrentCodex) {
jurzua
parents:
diff changeset
352 this.witnessInCurrentCodex = witnessInCurrentCodex;
jurzua
parents:
diff changeset
353 }
jurzua
parents:
diff changeset
354
jurzua
parents:
diff changeset
355 public boolean isShowWitnessInCurrentCodex() {
jurzua
parents:
diff changeset
356 if(this.entity == null || !this.entity.isPersistent()){
jurzua
parents:
diff changeset
357 return false;
jurzua
parents:
diff changeset
358 }
jurzua
parents:
diff changeset
359 return showWitnessInCurrentCodex;
jurzua
parents:
diff changeset
360 }
jurzua
parents:
diff changeset
361
jurzua
parents:
diff changeset
362 public void setShowWitnessInCurrentCodex(boolean showWitnessInCurrentCodex) {
jurzua
parents:
diff changeset
363 this.showWitnessInCurrentCodex = showWitnessInCurrentCodex;
jurzua
parents:
diff changeset
364 }
jurzua
parents:
diff changeset
365
jurzua
parents:
diff changeset
366 public void actionEditThisCollection(ActionEvent event){
jurzua
parents:
diff changeset
367 if(this.getCollectionLo().entity != null && getCollectionLo().entity.isPersistent()){
jurzua
parents:
diff changeset
368 getSessionBean().editEntity(this.getCollectionLo().entity);
jurzua
parents:
diff changeset
369 }
jurzua
parents:
diff changeset
370 }
jurzua
parents:
diff changeset
371
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
372 /**
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
373 * @return the aliasIdList
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
374 */
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
375 public EntityList getAliasIdList() {
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
376 return aliasIdList;
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
377 }
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
378
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
379 /**
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
380 * @param aliasIdList the aliasIdList to set
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
381 */
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
382 public void setAliasIdList(EntityList aliasIdList) {
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
383 this.aliasIdList = aliasIdList;
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
384 }
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
385
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
386 public EntityList getOwnedByPeople() {
1
jurzua
parents:
diff changeset
387 return ownedByPeople;
jurzua
parents:
diff changeset
388 }
jurzua
parents:
diff changeset
389
jurzua
parents:
diff changeset
390 public void setOwnedByPeople(EntityList ownedByPeople) {
jurzua
parents:
diff changeset
391 this.ownedByPeople = ownedByPeople;
jurzua
parents:
diff changeset
392 }
jurzua
parents:
diff changeset
393
jurzua
parents:
diff changeset
394 public List<SelectItem> getSuggestedBindingList() {
jurzua
parents:
diff changeset
395 return suggestedBindingList;
jurzua
parents:
diff changeset
396 }
jurzua
parents:
diff changeset
397
jurzua
parents:
diff changeset
398 public void setSuggestedBindingList(List<SelectItem> suggestedBindingList) {
jurzua
parents:
diff changeset
399 this.suggestedBindingList = suggestedBindingList;
jurzua
parents:
diff changeset
400 }
jurzua
parents:
diff changeset
401
jurzua
parents:
diff changeset
402 public CodexEditorTemplate getReferencedCodexTemplate() {
jurzua
parents:
diff changeset
403 return referencedCodexTemplate;
jurzua
parents:
diff changeset
404 }
jurzua
parents:
diff changeset
405
jurzua
parents:
diff changeset
406 public void setReferencedCodexTemplate(
jurzua
parents:
diff changeset
407 CodexEditorTemplate referencedCodexTemplate) {
jurzua
parents:
diff changeset
408 this.referencedCodexTemplate = referencedCodexTemplate;
jurzua
parents:
diff changeset
409 }
jurzua
parents:
diff changeset
410
jurzua
parents:
diff changeset
411 public Boolean getIsAlias() {
jurzua
parents:
diff changeset
412 return isAlias;
jurzua
parents:
diff changeset
413 }
jurzua
parents:
diff changeset
414
jurzua
parents:
diff changeset
415 public void setIsAlias(Boolean isAlias) {
jurzua
parents:
diff changeset
416 this.isAlias = isAlias;
jurzua
parents:
diff changeset
417 }
jurzua
parents:
diff changeset
418
jurzua
parents:
diff changeset
419 public EntityList getReadByPeople() {
jurzua
parents:
diff changeset
420 return readByPeople;
jurzua
parents:
diff changeset
421 }
jurzua
parents:
diff changeset
422
jurzua
parents:
diff changeset
423 public void setReadByPeople(EntityList readByPeople) {
jurzua
parents:
diff changeset
424 this.readByPeople = readByPeople;
jurzua
parents:
diff changeset
425 }
jurzua
parents:
diff changeset
426
jurzua
parents:
diff changeset
427 }