annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/AbstractISMIBean.java @ 211:631864bfec2e

add methods for lost misattributions and misidentifications.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 04 Oct 2019 17:42:27 +0200
parents 8049becb05ca
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 import java.util.ArrayList;
jurzua
parents:
diff changeset
5 import java.util.HashMap;
jurzua
parents:
diff changeset
6 import java.util.HashSet;
jurzua
parents:
diff changeset
7 import java.util.List;
jurzua
parents:
diff changeset
8 import java.util.Map;
jurzua
parents:
diff changeset
9
jurzua
parents:
diff changeset
10 import javax.faces.context.FacesContext;
jurzua
parents:
diff changeset
11 import javax.faces.event.ValueChangeEvent;
jurzua
parents:
diff changeset
12 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
13
jurzua
parents:
diff changeset
14 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
15 import org.apache.log4j.Logger;
jurzua
parents:
diff changeset
16 import org.mpi.openmind.cache.WrapperService;
jurzua
parents:
diff changeset
17 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
18 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
19 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
20 import org.mpi.openmind.repository.bo.Relation;
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 92
diff changeset
21 import org.mpi.openmind.repository.services.PersistenceService;
1
jurzua
parents:
diff changeset
22 import org.mpi.openmind.security.SecurityService;
jurzua
parents:
diff changeset
23 import org.mpi.openmind.security.bo.User;
jurzua
parents:
diff changeset
24
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
25 import de.mpiwg.itgroup.ismi.auxObjects.AliasListenerObject;
1
jurzua
parents:
diff changeset
26 import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
jurzua
parents:
diff changeset
27 import de.mpiwg.itgroup.ismi.entry.dataBeans.SimpleSearchCache;
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
28 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
1
jurzua
parents:
diff changeset
29 import de.mpiwg.itgroup.ismi.util.guiComponents.Reference;
jurzua
parents:
diff changeset
30 import de.mpiwg.itgroup.ismi.util.guiComponents.ReferenceTable;
jurzua
parents:
diff changeset
31 import de.mpiwg.itgroup.ismi.util.guiComponents.StatusChecker;
jurzua
parents:
diff changeset
32 import de.mpiwg.itgroup.ismi.util.guiComponents.StatusImage;
jurzua
parents:
diff changeset
33 import de.mpiwg.itgroup.ismi.utils.SelectableObject;
jurzua
parents:
diff changeset
34
jurzua
parents:
diff changeset
35 /**
jurzua
parents:
diff changeset
36 *
jurzua
parents:
diff changeset
37 * @author jurzua
jurzua
parents:
diff changeset
38 */
jurzua
parents:
diff changeset
39 public class AbstractISMIBean extends AbstractBean implements Serializable{
jurzua
parents:
diff changeset
40
jurzua
parents:
diff changeset
41 private static final long serialVersionUID = 9193140306343947209L;
jurzua
parents:
diff changeset
42
jurzua
parents:
diff changeset
43 private static Logger logger = Logger.getLogger(AbstractISMIBean.class);
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 92
diff changeset
44 private static Logger txLog = Logger.getLogger(PersistenceService.TRANSACTION_LOGGER);
1
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 public static String WITNESS = "WITNESS";
jurzua
parents:
diff changeset
47 public static String TEXT = "TEXT";
jurzua
parents:
diff changeset
48 public static String PERSON = "PERSON";
jurzua
parents:
diff changeset
49 public static String COLLECTION = "COLLECTION";
jurzua
parents:
diff changeset
50 public static String CODEX = "CODEX";
jurzua
parents:
diff changeset
51 public static String REPOSITORY = "REPOSITORY";
jurzua
parents:
diff changeset
52 public static String ALIAS = "ALIAS";
jurzua
parents:
diff changeset
53 public static String PLACE = "PLACE";
jurzua
parents:
diff changeset
54 public static String SUBJECT = "SUBJECT";
jurzua
parents:
diff changeset
55 public static String REFERENCE = "REFERENCE";
211
631864bfec2e add methods for lost misattributions and misidentifications.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 161
diff changeset
56 public static String MISATTRIBUTION = "MISATTRIBUTION";
631864bfec2e add methods for lost misattributions and misidentifications.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 161
diff changeset
57 public static String MISIDENTIFICATION = "MISIDENTIFICATION";
1
jurzua
parents:
diff changeset
58 public static String ROLE = "ROLE";
jurzua
parents:
diff changeset
59 public static String DIGITALIZATION = "DIGITALIZATION";
jurzua
parents:
diff changeset
60 public static String FLORUIT_DATE = "FLORUIT_DATE";
jurzua
parents:
diff changeset
61
jurzua
parents:
diff changeset
62 public static String is_digitalization_of = "is_digitalization_of";
jurzua
parents:
diff changeset
63 public static String is_part_of = "is_part_of";
jurzua
parents:
diff changeset
64 public static String is_in = "is_in";
jurzua
parents:
diff changeset
65 public static String has_subject = "has_subject";
jurzua
parents:
diff changeset
66 public static String misattributed_to = "misattributed_to";
jurzua
parents:
diff changeset
67 public static String lived_in = "lived_in";
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
68 public static final String lived_in_as = "lived_in_as";
1
jurzua
parents:
diff changeset
69 public static String owned_by = "owned_by";
jurzua
parents:
diff changeset
70 public static String has_role = "has_role";
jurzua
parents:
diff changeset
71 public static String was_student_of = "was_student_of";
jurzua
parents:
diff changeset
72 public static String is_alias_name_of = "is_alias_name_of";
jurzua
parents:
diff changeset
73 public static String is_prime_alias_name_of = "is_prime_alias_name_of";
jurzua
parents:
diff changeset
74 public static String is_alias_title_of = "is_alias_title_of";
jurzua
parents:
diff changeset
75 public static String is_prime_alias_title_of = "is_prime_alias_title_of";
161
8049becb05ca New ALIAS is_alias_identifier_of CODEX/WITNESS for diverse catalog numbers.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 145
diff changeset
76 public static String is_alias_identifier_of = "is_alias_identifier_of";
1
jurzua
parents:
diff changeset
77 public static String alias = "alias";
jurzua
parents:
diff changeset
78 public static String has_floruit_date = "has_floruit_date";
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 public static String rel_was_created_by = "was_created_by";
jurzua
parents:
diff changeset
81 public static String rel_was_copied_by = "was_copied_by";
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
82 public static String rel_was_copied_in = "was_copied_in";
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
83 public static String rel_was_copied_in_as = "was_copied_in_as";
1
jurzua
parents:
diff changeset
84 public static String is_exemplar_of = "is_exemplar_of";
jurzua
parents:
diff changeset
85 public static String is_possible_exemplar_of = "is_possible_exemplar_of";
jurzua
parents:
diff changeset
86 public static String rel_had_patron = "had_patron";
jurzua
parents:
diff changeset
87 public static String rel_has_title_written_as = "has_title_written_as";
jurzua
parents:
diff changeset
88 public static String rel_has_author_written_as = "has_author_written_as";
jurzua
parents:
diff changeset
89 public static String rel_is_reference_of = "is_reference_of";
jurzua
parents:
diff changeset
90
jurzua
parents:
diff changeset
91 public static String rel_was_studied_by = "was_studied_by";
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 public static String PAGE_EDITOR = "entry_edit_entity";
jurzua
parents:
diff changeset
94 public static String PAGE_SIMPLE_SEARCH = "simple_search";
jurzua
parents:
diff changeset
95 public static String PAGE_MERGE = "general_merge";
jurzua
parents:
diff changeset
96
jurzua
parents:
diff changeset
97 //some attributes names
jurzua
parents:
diff changeset
98 public static String name = "name";
jurzua
parents:
diff changeset
99 public static String name_translit = "name_translit";
jurzua
parents:
diff changeset
100 public static String full_title_translit = "full_title_translit";
jurzua
parents:
diff changeset
101
jurzua
parents:
diff changeset
102 public static int MAX_SUGGEST = 25;
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104 protected boolean selectedSaveAsNew = false;
jurzua
parents:
diff changeset
105
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
106 private HashSet<StatusChecker> statusCheckers = new HashSet<StatusChecker>();
1
jurzua
parents:
diff changeset
107 private boolean warning = false;
jurzua
parents:
diff changeset
108 private String warningMessage = "";
jurzua
parents:
diff changeset
109 private boolean displayWarning = false;
jurzua
parents:
diff changeset
110
jurzua
parents:
diff changeset
111 //private PanelPopup popup = new PanelPopup();
jurzua
parents:
diff changeset
112 //private String popupText = "";
jurzua
parents:
diff changeset
113
jurzua
parents:
diff changeset
114 private String currentId;
jurzua
parents:
diff changeset
115 private String currentIdMsg;
jurzua
parents:
diff changeset
116
jurzua
parents:
diff changeset
117 // used in the new version
jurzua
parents:
diff changeset
118 private Boolean create_error = false;
jurzua
parents:
diff changeset
119 private String selectedWitnessID = "0";
jurzua
parents:
diff changeset
120 private boolean showWitness;
jurzua
parents:
diff changeset
121 private boolean showTitle = false;
jurzua
parents:
diff changeset
122
jurzua
parents:
diff changeset
123 private Map<String, String> attributes = new HashMap<String, String>();
jurzua
parents:
diff changeset
124 protected String defObjectClass = null;
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 protected String displayUrl;
jurzua
parents:
diff changeset
127
jurzua
parents:
diff changeset
128 protected Entity entity;
jurzua
parents:
diff changeset
129
jurzua
parents:
diff changeset
130 protected long start;
jurzua
parents:
diff changeset
131
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
132 /**
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
133 * Save current entity.
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
134 *
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
135 * @return
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
136 */
1
jurzua
parents:
diff changeset
137 public String save(){
123
32ce1f93ad33 nicer logging.
casties
parents: 119
diff changeset
138 logger.info("*************** START Saving "+ this.defObjectClass + " [ID=" + entity.getId() +", user="+ getUserName() +"] *********************");
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 92
diff changeset
139 txLog.debug("*** START Saving "+ this.defObjectClass + " id=" + entity.getId() +" user="+getUserName());
1
jurzua
parents:
diff changeset
140 this.start = System.currentTimeMillis();
jurzua
parents:
diff changeset
141 return null;
jurzua
parents:
diff changeset
142 }
jurzua
parents:
diff changeset
143
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
144 /**
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
145 * End saving current entity.
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
146 *
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
147 * To be called at the end of save().
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
148 */
1
jurzua
parents:
diff changeset
149 protected void saveEnd(){
123
32ce1f93ad33 nicer logging.
casties
parents: 119
diff changeset
150 logger.info("*************** END Saving "+ this.defObjectClass + " [ID=" + entity.getId() +", user="+ getUserName() +"] *********************\n");
95
12af756065b5 better transaction logging and some cleanup.
casties
parents: 92
diff changeset
151 txLog.debug("*** END Saving "+ this.defObjectClass + " id=" + entity.getId() +" user="+getUserName());
1
jurzua
parents:
diff changeset
152 }
jurzua
parents:
diff changeset
153
jurzua
parents:
diff changeset
154 public Entity getEntity() {
jurzua
parents:
diff changeset
155 if (this.entity == null) {
jurzua
parents:
diff changeset
156 this.entity = new Entity();
jurzua
parents:
diff changeset
157 this.entity.setObjectClass(defObjectClass);
jurzua
parents:
diff changeset
158 this.entity.setLightweight(false);
jurzua
parents:
diff changeset
159 this.loadAttributes(this.entity);
jurzua
parents:
diff changeset
160 }
jurzua
parents:
diff changeset
161 return entity;
jurzua
parents:
diff changeset
162 }
jurzua
parents:
diff changeset
163
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
164 /**
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
165 * Add save confirmation to message.
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
166 */
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
167 protected void printSuccessSavingEntity() {
1
jurzua
parents:
diff changeset
168 this.addGeneralMsg("The entity was successfully saved!");
jurzua
parents:
diff changeset
169 this.addGeneralMsg("Its ID is " + this.entity.getId());
jurzua
parents:
diff changeset
170 }
jurzua
parents:
diff changeset
171
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
172 /**
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
173 * Set the current Entity and parse data for the form.
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
174 *
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
175 * @param entity
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
176 */
1
jurzua
parents:
diff changeset
177 public void setEntity(Entity entity) {
jurzua
parents:
diff changeset
178 this.entity = entity;
jurzua
parents:
diff changeset
179 }
jurzua
parents:
diff changeset
180
jurzua
parents:
diff changeset
181 public String getSaveButtonLabel(){
jurzua
parents:
diff changeset
182 if(entity.isPersistent())
jurzua
parents:
diff changeset
183 return "Save";
jurzua
parents:
diff changeset
184 return "Create";
jurzua
parents:
diff changeset
185 }
jurzua
parents:
diff changeset
186
jurzua
parents:
diff changeset
187 public boolean isRenderSaveButton(){
jurzua
parents:
diff changeset
188 //#{(CurrentText.entity.id == null and Session.canCreate) || (CurrentText.entity.id != null and Session.canEdit)}
jurzua
parents:
diff changeset
189 if((!entity.isPersistent() && getSessionBean().isCanCreate()) ||
jurzua
parents:
diff changeset
190 entity.isPersistent() && getSessionBean().isCanEdit())
jurzua
parents:
diff changeset
191 return true;
jurzua
parents:
diff changeset
192 return false;
jurzua
parents:
diff changeset
193 }
jurzua
parents:
diff changeset
194
92
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
195 /**
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
196 * Clear the bean by setting a new empty entity.
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
197 * @return
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
198 */
1
jurzua
parents:
diff changeset
199 public String clearAction(){
119
4aa8c425685d less System.out.println.
casties
parents: 115
diff changeset
200 //System.out.println("clearAction");
1
jurzua
parents:
diff changeset
201 this.entity = new Entity(Node.TYPE_ABOX, this.defObjectClass, false);
jurzua
parents:
diff changeset
202 this.setEntity(this.entity);
jurzua
parents:
diff changeset
203 return PAGE_EDITOR;
jurzua
parents:
diff changeset
204 }
jurzua
parents:
diff changeset
205
92
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
206 /**
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
207 * Reload the bean using the entity with currentId.
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
208 * @return
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
209 */
90
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
210 public String actionReloadEntity() {
1
jurzua
parents:
diff changeset
211 Long id = null;
90
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
212 try {
1
jurzua
parents:
diff changeset
213 id = new Long(this.getCurrentId());
90
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
214 } catch (Exception e) {}
1
jurzua
parents:
diff changeset
215
90
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
216 if (id != null) {
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
217 Entity newEnt = getWrapper().getEntityById(id);
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
218 if (newEnt != null && newEnt.getObjectClass().equals(this.defObjectClass)) {
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
219 this.setEntity(newEnt);
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
220 } else {
1
jurzua
parents:
diff changeset
221 this.setCurrentIdMsg("Entity no found!");
jurzua
parents:
diff changeset
222 }
90
72b877076f43 small cleanup.
casties
parents: 60
diff changeset
223 } else {
1
jurzua
parents:
diff changeset
224 this.setCurrentIdMsg("ID is not valid!");
jurzua
parents:
diff changeset
225 }
jurzua
parents:
diff changeset
226 return PAGE_EDITOR;
jurzua
parents:
diff changeset
227 }
jurzua
parents:
diff changeset
228
jurzua
parents:
diff changeset
229 public String getDisplayUrl() {
jurzua
parents:
diff changeset
230 return displayUrl;
jurzua
parents:
diff changeset
231 }
jurzua
parents:
diff changeset
232
jurzua
parents:
diff changeset
233 public void setDisplayUrl(String displayUrl) {
jurzua
parents:
diff changeset
234 this.displayUrl = displayUrl;
jurzua
parents:
diff changeset
235 }
jurzua
parents:
diff changeset
236
jurzua
parents:
diff changeset
237 public static String generateDisplayUrl(Entity author, Entity title, Entity witness, String rootUrl){
jurzua
parents:
diff changeset
238 //example: ?personId=414996&textId=36650&witnessId=66802#witnesses
jurzua
parents:
diff changeset
239 StringBuilder sb = new StringBuilder();
jurzua
parents:
diff changeset
240 if(author != null && author.isPersistent()){
jurzua
parents:
diff changeset
241 sb.append(rootUrl + "/search/displayAuthor.xhtml?");
jurzua
parents:
diff changeset
242 sb.append("personId=" + author.getId());
jurzua
parents:
diff changeset
243 if(title != null && title.isPersistent()){
jurzua
parents:
diff changeset
244 sb.append("&textId=" + title.getId());
jurzua
parents:
diff changeset
245 if(witness != null && witness.isPersistent()){
jurzua
parents:
diff changeset
246 sb.append("&witness=" + witness.getId());
jurzua
parents:
diff changeset
247 sb.append("#witnesses");
jurzua
parents:
diff changeset
248 }else{
jurzua
parents:
diff changeset
249 sb.append("#titles");
jurzua
parents:
diff changeset
250 }
jurzua
parents:
diff changeset
251 }
jurzua
parents:
diff changeset
252 }else if(title != null && title.isPersistent()){
jurzua
parents:
diff changeset
253 sb.append(rootUrl + "/search/displayTitle.xhtml?");
jurzua
parents:
diff changeset
254 sb.append("&textId=" + title.getId());
jurzua
parents:
diff changeset
255 if(witness != null && witness.isPersistent()){
jurzua
parents:
diff changeset
256 sb.append("&witness=" + witness.getId());
jurzua
parents:
diff changeset
257 sb.append("#witnesses");
jurzua
parents:
diff changeset
258 }else{
jurzua
parents:
diff changeset
259 sb.append("#titles");
jurzua
parents:
diff changeset
260 }
jurzua
parents:
diff changeset
261
jurzua
parents:
diff changeset
262 }
jurzua
parents:
diff changeset
263 return sb.toString();
jurzua
parents:
diff changeset
264 }
jurzua
parents:
diff changeset
265
jurzua
parents:
diff changeset
266 //********************************
jurzua
parents:
diff changeset
267 //**** PUBLICATIONS END NOTE *****
jurzua
parents:
diff changeset
268 //********************************
jurzua
parents:
diff changeset
269
jurzua
parents:
diff changeset
270 private ReferenceTable endNoteRefTable = new ReferenceTable();
jurzua
parents:
diff changeset
271
jurzua
parents:
diff changeset
272 protected void loadEndNoteRefs(){
jurzua
parents:
diff changeset
273 this.endNoteRefTable.loadRefs(getEntRefs());
jurzua
parents:
diff changeset
274 }
jurzua
parents:
diff changeset
275
jurzua
parents:
diff changeset
276 public ReferenceTable getEndNoteRefTable() {
jurzua
parents:
diff changeset
277 return endNoteRefTable;
jurzua
parents:
diff changeset
278 }
jurzua
parents:
diff changeset
279
jurzua
parents:
diff changeset
280 public void setEndNoteRefTable(ReferenceTable endNoteRefTable) {
jurzua
parents:
diff changeset
281 this.endNoteRefTable = endNoteRefTable;
jurzua
parents:
diff changeset
282 }
jurzua
parents:
diff changeset
283
jurzua
parents:
diff changeset
284 private List<Entity> getEntRefs(){
jurzua
parents:
diff changeset
285 List<Entity> rs = new ArrayList<Entity>();
jurzua
parents:
diff changeset
286 for (Relation rel : this.entity.getTargetRelations()) {
jurzua
parents:
diff changeset
287 if (rel.getOwnValue().equals(rel_is_reference_of)) {
jurzua
parents:
diff changeset
288 rs.add(getWrapper().getEntityByIdWithContent(rel.getSourceId()));
jurzua
parents:
diff changeset
289 }
jurzua
parents:
diff changeset
290 }
jurzua
parents:
diff changeset
291 return rs;
jurzua
parents:
diff changeset
292 }
jurzua
parents:
diff changeset
293
jurzua
parents:
diff changeset
294
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
295 /**
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
296 * Save references from this.endNoteRefTable and update relations.
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
297 *
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
298 * @throws Exception
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
299 */
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
300 protected void saveReferences() throws Exception {
1
jurzua
parents:
diff changeset
301 //REFERENCE -> is_reference_of -> WITNESS
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
302 List<Entity> refs = new ArrayList<Entity>();
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
303 for (SelectableObject<Reference> so : this.endNoteRefTable.list) {
1
jurzua
parents:
diff changeset
304 Reference ref = so.getObj();
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
305 Entity ent = ref.getEnt();
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
306 // save reference Entity
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
307 getWrapper().saveEntity(ent, getUserName(), Reference.editReferenceIntent);
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
308 refs.add(ent);
1
jurzua
parents:
diff changeset
309 }
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
310 // update relations
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
311 this.replaceMultipleTargetRelations(entity, refs, REFERENCE, rel_is_reference_of);
1
jurzua
parents:
diff changeset
312 }
jurzua
parents:
diff changeset
313
jurzua
parents:
diff changeset
314
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
315 public static Calendar updateCalendar(Attribute att){
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
316 Calendar calendar = null;
1
jurzua
parents:
diff changeset
317 if(att != null && StringUtils.isNotEmpty(att.getOwnValue())){
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
318 calendar = new Calendar(att.getOwnValue());
1
jurzua
parents:
diff changeset
319 }else{
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
320 calendar = new Calendar();
1
jurzua
parents:
diff changeset
321 }
jurzua
parents:
diff changeset
322 return calendar;
jurzua
parents:
diff changeset
323 }
jurzua
parents:
diff changeset
324
92
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
325 /**
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
326 * Load all (defined) attributes of the entity into this.attributes.
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
327 *
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
328 * Creates new empty attributes if entity=null.
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
329 *
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
330 * @param entity
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
331 */
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
332 protected void loadAttributes(Entity entity) {
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
333 attributes = new HashMap<String, String>();
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
334 if (entity != null) {
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
335 for (Attribute defAtt : getWrapper().getDefAttributes(this.defObjectClass)) {
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
336 Attribute originalAtt = entity.getAttributeByName(defAtt.getOwnValue());
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
337 String attValue = (originalAtt != null) ? originalAtt.getOwnValue() : "";
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
338 attributes.put(defAtt.getOwnValue(), attValue);
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
339 }
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
340 } else {
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
341 for (Attribute defAtt : getWrapper().getDefAttributes(this.defObjectClass)) {
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
342 attributes.put(defAtt.getOwnValue(), "");
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
343 }
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
344 }
be377d5f9cc4 more comments and cleanup.
casties
parents: 91
diff changeset
345 }
1
jurzua
parents:
diff changeset
346
105
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
347 /**
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
348 * Clear some selected options.
e27603a39e70 small cleanups.
casties
parents: 95
diff changeset
349 */
1
jurzua
parents:
diff changeset
350 public void reset(){
jurzua
parents:
diff changeset
351 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
352 this.setCurrentId("");
jurzua
parents:
diff changeset
353 this.setCurrentIdMsg("");
jurzua
parents:
diff changeset
354 this.setAttributes(new HashMap<String, String>());
jurzua
parents:
diff changeset
355 this.displayUrl = null;
jurzua
parents:
diff changeset
356 this.endNoteRefTable = new ReferenceTable();
jurzua
parents:
diff changeset
357 }
jurzua
parents:
diff changeset
358
jurzua
parents:
diff changeset
359 public boolean isSelectedSaveAsNew() {
jurzua
parents:
diff changeset
360 return selectedSaveAsNew;
jurzua
parents:
diff changeset
361 }
jurzua
parents:
diff changeset
362
jurzua
parents:
diff changeset
363 public void setSelectedSaveAsNew(boolean selectedSaveAsNew) {
jurzua
parents:
diff changeset
364 this.selectedSaveAsNew = selectedSaveAsNew;
jurzua
parents:
diff changeset
365 }
jurzua
parents:
diff changeset
366
jurzua
parents:
diff changeset
367 /**
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
368 * Update the defined attributes of the given entity with the
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
369 * attributes of the attributes Map.
1
jurzua
parents:
diff changeset
370 *
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
371 * @return the entity with updated attributes.
1
jurzua
parents:
diff changeset
372 */
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
373 public Entity updateEntityAttributes(Entity entity) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
374 // create entity if it doesn't exist
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
375 if (entity == null) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
376 entity = new Entity(Node.TYPE_ABOX, false);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
377 entity.setObjectClass(this.defObjectClass);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
378 }
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
379 // update all defined attributes
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
380 for (Attribute defAtt : getWrapper().getDefAttributes(this.defObjectClass)) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
381 String attName = defAtt.getOwnValue();
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
382 Attribute att = entity.getAttributeByName(attName);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
383 if (StringUtils.isNotEmpty(this.attributes.get(attName))) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
384 // there is an attribute to update
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
385 if (att == null) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
386 // attribute is new
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
387 att = new Attribute(defAtt);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
388 entity.addAttribute(att);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
389 }
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
390 // update value
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
391 att.setOwnValue(this.attributes.get(attName));
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
392 att.setObjectClass(attName);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
393 } else if (att != null) {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
394 // there is no attribute to update - delete attribute
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
395 entity.getAttributes().remove(att);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
396 }
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
397 }
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
398 return entity;
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
399 }
1
jurzua
parents:
diff changeset
400
jurzua
parents:
diff changeset
401 protected List<SelectItem> updateSuggestedPersonByRole(String searchWord, String objClass, String attName, String role){
jurzua
parents:
diff changeset
402 List<Attribute> attList = getWrapper().getAttributesByDefByAttName(objClass, attName, searchWord.toString(), -1);
jurzua
parents:
diff changeset
403
jurzua
parents:
diff changeset
404 List<SelectItem> suggestedItems = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
405 if (attList == null)
jurzua
parents:
diff changeset
406 return suggestedItems;
jurzua
parents:
diff changeset
407
jurzua
parents:
diff changeset
408 int count = 0;
jurzua
parents:
diff changeset
409 for (Attribute att : attList) {
jurzua
parents:
diff changeset
410 if(getCache().roleContainsPersonId(role, att.getSourceId())){
jurzua
parents:
diff changeset
411 SelectItem item = new SelectItem(att, att.getOwnValue() + " [" + att.getSourceId() + "]","description: " + att);
jurzua
parents:
diff changeset
412 suggestedItems.add(item);
jurzua
parents:
diff changeset
413 count++;
jurzua
parents:
diff changeset
414 if(count == MAX_SUGGEST)
jurzua
parents:
diff changeset
415 break;
jurzua
parents:
diff changeset
416 }
jurzua
parents:
diff changeset
417 }
jurzua
parents:
diff changeset
418 return suggestedItems;
jurzua
parents:
diff changeset
419 }
jurzua
parents:
diff changeset
420
jurzua
parents:
diff changeset
421 protected List<SelectItem> updateSuggestedItems(ValueChangeEvent event,
jurzua
parents:
diff changeset
422 String objClass, String attName) {
jurzua
parents:
diff changeset
423 return updateSuggestedItems((String) event.getNewValue(), objClass,
jurzua
parents:
diff changeset
424 attName);
jurzua
parents:
diff changeset
425 }
jurzua
parents:
diff changeset
426
jurzua
parents:
diff changeset
427 protected List<SelectItem> updateSuggestedItems(String searchWord,
jurzua
parents:
diff changeset
428 String objClass, String attName) {
jurzua
parents:
diff changeset
429
jurzua
parents:
diff changeset
430 List<Attribute> attList = getWrapper().getAttributesByDefByAttName(objClass, attName, searchWord.toString(), MAX_SUGGEST);
jurzua
parents:
diff changeset
431
jurzua
parents:
diff changeset
432 List<SelectItem> suggestedItems = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
433 if (attList == null)
jurzua
parents:
diff changeset
434 return suggestedItems;
jurzua
parents:
diff changeset
435
jurzua
parents:
diff changeset
436 for (Attribute att : attList) {
jurzua
parents:
diff changeset
437 SelectItem item = new SelectItem(att, att.getOwnValue() + " [" + att.getSourceId() + "]",
jurzua
parents:
diff changeset
438 "description: " + att);
jurzua
parents:
diff changeset
439 suggestedItems.add(item);
jurzua
parents:
diff changeset
440 }
jurzua
parents:
diff changeset
441 return suggestedItems;
jurzua
parents:
diff changeset
442 }
jurzua
parents:
diff changeset
443
jurzua
parents:
diff changeset
444 protected SimpleSearchCache getCache(){
jurzua
parents:
diff changeset
445 return getAppBean().getSimpleSearchCache();
jurzua
parents:
diff changeset
446 }
jurzua
parents:
diff changeset
447
jurzua
parents:
diff changeset
448 protected List<SelectItem> updateSuggestedItems(String objClass,
jurzua
parents:
diff changeset
449 String firstName, String firstValue, String secondName,
jurzua
parents:
diff changeset
450 String secondValue) {
jurzua
parents:
diff changeset
451
jurzua
parents:
diff changeset
452 List<Attribute> attList =
jurzua
parents:
diff changeset
453 getWrapper().
jurzua
parents:
diff changeset
454 searchAttribute(firstName, firstValue, secondName, secondValue, objClass, MAX_SUGGEST);
jurzua
parents:
diff changeset
455
jurzua
parents:
diff changeset
456 List<SelectItem> suggestedItems = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
457 if (attList == null)
jurzua
parents:
diff changeset
458 return suggestedItems;
jurzua
parents:
diff changeset
459
jurzua
parents:
diff changeset
460 for (Attribute att : attList) {
jurzua
parents:
diff changeset
461 SelectItem item = new SelectItem(att, att.getOwnValue() + " [" + att.getSourceId() + "]");
jurzua
parents:
diff changeset
462 suggestedItems.add(item);
jurzua
parents:
diff changeset
463 }
jurzua
parents:
diff changeset
464 return suggestedItems;
jurzua
parents:
diff changeset
465 }
jurzua
parents:
diff changeset
466
jurzua
parents:
diff changeset
467 public Map<String, String> getAttributes() {
jurzua
parents:
diff changeset
468 return attributes;
jurzua
parents:
diff changeset
469 }
jurzua
parents:
diff changeset
470
jurzua
parents:
diff changeset
471 public void setAttributes(Map<String, String> attributes) {
jurzua
parents:
diff changeset
472 this.attributes = attributes;
jurzua
parents:
diff changeset
473 }
jurzua
parents:
diff changeset
474
jurzua
parents:
diff changeset
475 /**
jurzua
parents:
diff changeset
476 * <p>
jurzua
parents:
diff changeset
477 * This method plays the role of a small cache to get quickly the
jurzua
parents:
diff changeset
478 * definitions.
jurzua
parents:
diff changeset
479 * </p>
jurzua
parents:
diff changeset
480 * TODO this method must be implemented into a bean in session context and
jurzua
parents:
diff changeset
481 * research by every beans.
jurzua
parents:
diff changeset
482 *
jurzua
parents:
diff changeset
483 * @param assertion
jurzua
parents:
diff changeset
484 * @return
jurzua
parents:
diff changeset
485 */
jurzua
parents:
diff changeset
486 public Entity getLWDefinition(Entity assertion) {
jurzua
parents:
diff changeset
487 return getWrapper().getDefinition(assertion.getObjectClass());
jurzua
parents:
diff changeset
488 }
jurzua
parents:
diff changeset
489
jurzua
parents:
diff changeset
490 public Entity getLWDefinition(String objClass) {
jurzua
parents:
diff changeset
491 return getWrapper().getDefinition(objClass);
jurzua
parents:
diff changeset
492 }
jurzua
parents:
diff changeset
493
jurzua
parents:
diff changeset
494 /**
jurzua
parents:
diff changeset
495 * <p>
jurzua
parents:
diff changeset
496 * Returns the target's entity of a relation. The returned target is no
jurzua
parents:
diff changeset
497 * light weight.
jurzua
parents:
diff changeset
498 * <p>
jurzua
parents:
diff changeset
499 *
jurzua
parents:
diff changeset
500 * @param rel
jurzua
parents:
diff changeset
501 * @param target
jurzua
parents:
diff changeset
502 * @return
jurzua
parents:
diff changeset
503 */
jurzua
parents:
diff changeset
504 protected Entity getTargetRelation(Relation rel) {
jurzua
parents:
diff changeset
505 Entity target = rel.getTarget();
jurzua
parents:
diff changeset
506 if (target == null) {
jurzua
parents:
diff changeset
507 target = getWrapper().getEntityById(rel.getTargetId());
jurzua
parents:
diff changeset
508 rel.setTarget(target);
jurzua
parents:
diff changeset
509 } else if (target.isLightweight()) {
jurzua
parents:
diff changeset
510 target = getWrapper().getEntityContent(target);
jurzua
parents:
diff changeset
511 }
jurzua
parents:
diff changeset
512 return target;
jurzua
parents:
diff changeset
513 }
jurzua
parents:
diff changeset
514
jurzua
parents:
diff changeset
515 protected Attribute getTargetAttribute(Entity target, String name) {
jurzua
parents:
diff changeset
516 Attribute att = getWrapper().getAttributeByName(target.getId(), name);
jurzua
parents:
diff changeset
517
jurzua
parents:
diff changeset
518 if (att == null) {
jurzua
parents:
diff changeset
519 att = new Attribute();
jurzua
parents:
diff changeset
520 att.setOwnValue(target.getOwnValue());
jurzua
parents:
diff changeset
521 }
jurzua
parents:
diff changeset
522 return att;
jurzua
parents:
diff changeset
523 }
jurzua
parents:
diff changeset
524
jurzua
parents:
diff changeset
525 protected WrapperService getWrapper() {
jurzua
parents:
diff changeset
526 return getAppBean().getWrapper();
jurzua
parents:
diff changeset
527 }
jurzua
parents:
diff changeset
528
jurzua
parents:
diff changeset
529 /**
jurzua
parents:
diff changeset
530 * <p>
jurzua
parents:
diff changeset
531 * Return the <code>FacesContext</code> instance for the current request.
jurzua
parents:
diff changeset
532 */
jurzua
parents:
diff changeset
533 protected FacesContext context() {
jurzua
parents:
diff changeset
534 return (FacesContext.getCurrentInstance());
jurzua
parents:
diff changeset
535 }
jurzua
parents:
diff changeset
536
jurzua
parents:
diff changeset
537 public void setCreate_error(Boolean create_error) {
jurzua
parents:
diff changeset
538 this.create_error = create_error;
jurzua
parents:
diff changeset
539 }
jurzua
parents:
diff changeset
540
jurzua
parents:
diff changeset
541 public Boolean getCreate_error() {
jurzua
parents:
diff changeset
542 return create_error;
jurzua
parents:
diff changeset
543 }
jurzua
parents:
diff changeset
544
jurzua
parents:
diff changeset
545 /**
jurzua
parents:
diff changeset
546 * Eine Liste <code>toBeRestricted</code> wird so eingeschraenkt, dass nur
jurzua
parents:
diff changeset
547 * noch die jenigen uebrig bleiben, die �ber die Relation
jurzua
parents:
diff changeset
548 * <code>relation</code> mit einem der Elemente aus
jurzua
parents:
diff changeset
549 * <code>contraintIds</code> verbunden sind.
jurzua
parents:
diff changeset
550 *
jurzua
parents:
diff changeset
551 * @param toBeRestricted
jurzua
parents:
diff changeset
552 * @param constraintIds
jurzua
parents:
diff changeset
553 * @param relation
jurzua
parents:
diff changeset
554 * @param mode
jurzua
parents:
diff changeset
555 * @return
jurzua
parents:
diff changeset
556 */
jurzua
parents:
diff changeset
557 protected List<SelectItem> restrictList(List<SelectItem> toBeRestricted,
jurzua
parents:
diff changeset
558 List<String> constraintIds, String relation, String mode) {
jurzua
parents:
diff changeset
559
jurzua
parents:
diff changeset
560 List<SelectItem> newList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
561
jurzua
parents:
diff changeset
562 for (SelectItem s : toBeRestricted) {
jurzua
parents:
diff changeset
563 Entity ent = getWrapper().getEntityById(
jurzua
parents:
diff changeset
564 Long.valueOf((String) s.getValue()));
jurzua
parents:
diff changeset
565 if (s.getValue().equals("0")) {
jurzua
parents:
diff changeset
566 newList.add(s);
jurzua
parents:
diff changeset
567 continue;
jurzua
parents:
diff changeset
568 }
jurzua
parents:
diff changeset
569
jurzua
parents:
diff changeset
570 List<Relation> rels;
jurzua
parents:
diff changeset
571 if (mode.equals("target")) {
jurzua
parents:
diff changeset
572 rels = ent.getTargetRelations();
jurzua
parents:
diff changeset
573 } else if (mode.equals("source")) {
jurzua
parents:
diff changeset
574 rels = ent.getSourceRelations();
jurzua
parents:
diff changeset
575 } else {
jurzua
parents:
diff changeset
576 System.err.println("restrict List - mode not defined:" + mode);
jurzua
parents:
diff changeset
577 return null;
jurzua
parents:
diff changeset
578 }
jurzua
parents:
diff changeset
579
jurzua
parents:
diff changeset
580 for (Relation r : rels) {
jurzua
parents:
diff changeset
581 if (r.getObjectClass().equals(relation)) {
jurzua
parents:
diff changeset
582 Long id;
jurzua
parents:
diff changeset
583 if (mode.equals("target")) {
jurzua
parents:
diff changeset
584 id = r.getSource().getId();
jurzua
parents:
diff changeset
585 } else if (mode.equals("source")) {
jurzua
parents:
diff changeset
586 id = r.getTarget().getId();
jurzua
parents:
diff changeset
587 } else {
jurzua
parents:
diff changeset
588 System.err.println("restrict List - mode not defined:"
jurzua
parents:
diff changeset
589 + mode);
jurzua
parents:
diff changeset
590 return null;
jurzua
parents:
diff changeset
591 }
jurzua
parents:
diff changeset
592 if (constraintIds.contains(String.valueOf(id))) {
jurzua
parents:
diff changeset
593 newList.add(s);
jurzua
parents:
diff changeset
594 }
jurzua
parents:
diff changeset
595 }
jurzua
parents:
diff changeset
596 }
jurzua
parents:
diff changeset
597 }
jurzua
parents:
diff changeset
598
jurzua
parents:
diff changeset
599 return newList;
jurzua
parents:
diff changeset
600 }
jurzua
parents:
diff changeset
601
jurzua
parents:
diff changeset
602 public String getSelectedWitnessID() {
jurzua
parents:
diff changeset
603 return selectedWitnessID;
jurzua
parents:
diff changeset
604 }
jurzua
parents:
diff changeset
605
jurzua
parents:
diff changeset
606 public void setShowWitness(boolean showWitness) {
jurzua
parents:
diff changeset
607 this.showWitness = showWitness;
jurzua
parents:
diff changeset
608 }
jurzua
parents:
diff changeset
609
jurzua
parents:
diff changeset
610 public boolean isShowWitness() {
jurzua
parents:
diff changeset
611 return showWitness;
jurzua
parents:
diff changeset
612 }
jurzua
parents:
diff changeset
613
jurzua
parents:
diff changeset
614 public void setShowTitle(boolean showTitle) {
jurzua
parents:
diff changeset
615 this.showTitle = showTitle;
jurzua
parents:
diff changeset
616 }
jurzua
parents:
diff changeset
617
jurzua
parents:
diff changeset
618 public boolean isShowTitle() {
jurzua
parents:
diff changeset
619 return showTitle;
jurzua
parents:
diff changeset
620 }
jurzua
parents:
diff changeset
621 /*
jurzua
parents:
diff changeset
622 public PanelPopup getPopup() {
jurzua
parents:
diff changeset
623 return popup;
jurzua
parents:
diff changeset
624 }
jurzua
parents:
diff changeset
625
jurzua
parents:
diff changeset
626 public void setPopup(PanelPopup popup) {
jurzua
parents:
diff changeset
627 this.popup = popup;
jurzua
parents:
diff changeset
628 }
jurzua
parents:
diff changeset
629
jurzua
parents:
diff changeset
630 public String getPopupText() {
jurzua
parents:
diff changeset
631 return popupText;
jurzua
parents:
diff changeset
632 }
jurzua
parents:
diff changeset
633
jurzua
parents:
diff changeset
634 public void setPopupText(String popupText) {
jurzua
parents:
diff changeset
635 this.popupText = popupText;
jurzua
parents:
diff changeset
636 }*/
jurzua
parents:
diff changeset
637
jurzua
parents:
diff changeset
638
jurzua
parents:
diff changeset
639 public String getUserName(){
jurzua
parents:
diff changeset
640 User user = getSessionUser();
jurzua
parents:
diff changeset
641 if(user == null)
jurzua
parents:
diff changeset
642 return "";
jurzua
parents:
diff changeset
643 else
jurzua
parents:
diff changeset
644 return user.getEmail();
jurzua
parents:
diff changeset
645 }
jurzua
parents:
diff changeset
646
jurzua
parents:
diff changeset
647 public User getSessionUser() {
jurzua
parents:
diff changeset
648 SessionBean bean = getSessionBean();
jurzua
parents:
diff changeset
649 if(bean != null){
jurzua
parents:
diff changeset
650 return bean.getUser();
jurzua
parents:
diff changeset
651 }else{
jurzua
parents:
diff changeset
652 return null;
jurzua
parents:
diff changeset
653 }
jurzua
parents:
diff changeset
654 }
jurzua
parents:
diff changeset
655
145
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
656 public static void fillList(List<SelectItem> list, String[] array) {
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
657 list.add(new SelectItem("", "-- choose --"));
1
jurzua
parents:
diff changeset
658 for (int i = 0; i < array.length; i++) {
jurzua
parents:
diff changeset
659 list.add(new SelectItem(array[i]));
jurzua
parents:
diff changeset
660 }
145
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
661 }
1
jurzua
parents:
diff changeset
662
145
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
663 public static void fillList(List<SelectItem> list, List<String> items) {
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
664 list.add(new SelectItem("", "-- choose --"));
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
665 for (String item : items) {
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
666 list.add(new SelectItem(item));
62d5276ed785 move suggestedTextTypes to CurrentTextBean and read types from definition.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents: 136
diff changeset
667 }
1
jurzua
parents:
diff changeset
668 }
jurzua
parents:
diff changeset
669
jurzua
parents:
diff changeset
670 public boolean isWarning() {
jurzua
parents:
diff changeset
671 return warning;
jurzua
parents:
diff changeset
672 }
jurzua
parents:
diff changeset
673
jurzua
parents:
diff changeset
674 public void setWarning(boolean warning) {
jurzua
parents:
diff changeset
675 this.warning = warning;
jurzua
parents:
diff changeset
676 }
jurzua
parents:
diff changeset
677
jurzua
parents:
diff changeset
678 public void setWarningMessage(String warningMessage) {
jurzua
parents:
diff changeset
679 this.warningMessage = warningMessage;
jurzua
parents:
diff changeset
680 }
jurzua
parents:
diff changeset
681
jurzua
parents:
diff changeset
682 public String getWarningMessage() {
jurzua
parents:
diff changeset
683 return warningMessage;
jurzua
parents:
diff changeset
684 }
jurzua
parents:
diff changeset
685
jurzua
parents:
diff changeset
686 public void setDisplayWarning(boolean displayWarning) {
jurzua
parents:
diff changeset
687 this.displayWarning = displayWarning;
jurzua
parents:
diff changeset
688 }
jurzua
parents:
diff changeset
689
jurzua
parents:
diff changeset
690 public boolean isDisplayWarning() {
jurzua
parents:
diff changeset
691 return displayWarning;
jurzua
parents:
diff changeset
692 }
jurzua
parents:
diff changeset
693
jurzua
parents:
diff changeset
694 public void registerChecker(StatusChecker sc) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
695 statusCheckers.add(sc);
1
jurzua
parents:
diff changeset
696 }
jurzua
parents:
diff changeset
697
jurzua
parents:
diff changeset
698 public void registerChecker(ListenerObject lo, String message) {
jurzua
parents:
diff changeset
699 registerChecker(lo.statusImage, message);
jurzua
parents:
diff changeset
700
jurzua
parents:
diff changeset
701 }
jurzua
parents:
diff changeset
702
jurzua
parents:
diff changeset
703 public void registerChecker(StatusChecker sc, String message) {
jurzua
parents:
diff changeset
704 sc.setMessage(message);
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
705 statusCheckers.add(sc);
1
jurzua
parents:
diff changeset
706 }
jurzua
parents:
diff changeset
707
jurzua
parents:
diff changeset
708 class CheckResults {
jurzua
parents:
diff changeset
709 List<String> errors = new ArrayList<String>();
jurzua
parents:
diff changeset
710 List<String> warnings = new ArrayList<String>();
jurzua
parents:
diff changeset
711 public boolean hasErrors = false;
jurzua
parents:
diff changeset
712 public boolean hasWarnings = false;
jurzua
parents:
diff changeset
713
jurzua
parents:
diff changeset
714 }
jurzua
parents:
diff changeset
715
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
716 /**
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
717 * Get the result from all StatusCheckers.
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
718 *
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
719 * @return
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
720 */
1
jurzua
parents:
diff changeset
721 public CheckResults getCheckResults() {
jurzua
parents:
diff changeset
722 CheckResults cr = new CheckResults();
jurzua
parents:
diff changeset
723
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
724 for (StatusChecker sc : statusCheckers) {
1
jurzua
parents:
diff changeset
725 if (sc.getStatus().equals("false")) {
jurzua
parents:
diff changeset
726 cr.hasErrors = true;
jurzua
parents:
diff changeset
727 cr.errors.add(sc.getMessage());
jurzua
parents:
diff changeset
728 } else if (sc.getStatus().equals("unset")) {
jurzua
parents:
diff changeset
729 cr.hasWarnings = true;
jurzua
parents:
diff changeset
730 cr.warnings.add(sc.getMessage());
jurzua
parents:
diff changeset
731 }
jurzua
parents:
diff changeset
732 }
jurzua
parents:
diff changeset
733 return cr;
jurzua
parents:
diff changeset
734 }
jurzua
parents:
diff changeset
735
jurzua
parents:
diff changeset
736 protected ListenerObject changeValue(String ownvalue, ListenerObject lo, String suggestType, String suggestAttributeName,
jurzua
parents:
diff changeset
737 List<SelectItem> restrictedItems) {
jurzua
parents:
diff changeset
738 if (restrictedItems != null) {
jurzua
parents:
diff changeset
739 lo.suggestedItems = restrictedItems;}
jurzua
parents:
diff changeset
740
jurzua
parents:
diff changeset
741 if (ownvalue == null || ownvalue.equals(""))
jurzua
parents:
diff changeset
742 lo.statusImage.setStatus("unset");
jurzua
parents:
diff changeset
743 else
jurzua
parents:
diff changeset
744 lo.statusImage.setStatus("false");
jurzua
parents:
diff changeset
745 lo.entity = null;
jurzua
parents:
diff changeset
746 // setze erst mal den Eigenwert auf das eingebene.
jurzua
parents:
diff changeset
747 Attribute at = new Attribute();
jurzua
parents:
diff changeset
748 at.setOwnValue(ownvalue);
jurzua
parents:
diff changeset
749 lo.attribute = at;
jurzua
parents:
diff changeset
750 Entity element = null;
jurzua
parents:
diff changeset
751 if (lo.suggestedItems != null) // schaue in der liste der vorgebenen Ereignisse nach.
jurzua
parents:
diff changeset
752 for (SelectItem item : lo.suggestedItems) {
jurzua
parents:
diff changeset
753 if (item.getLabel().equals(ownvalue)) {
jurzua
parents:
diff changeset
754 if (Attribute.class.isInstance(item.getValue())){ // entweder es ist schon ein attribute
jurzua
parents:
diff changeset
755 lo.attribute = (Attribute) item.getValue();
jurzua
parents:
diff changeset
756 element = getWrapper().getEntityById(
jurzua
parents:
diff changeset
757 lo.attribute.getSourceId());
jurzua
parents:
diff changeset
758 }else{ //oder ein paar wert / id// = (Attribute) item.getValue();
jurzua
parents:
diff changeset
759 element = getWrapper().getEntityById(Long.valueOf((String) item.getValue()));
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 105
diff changeset
760 lo.setEntityAndAttributeName(element, suggestAttributeName);
1
jurzua
parents:
diff changeset
761 }
jurzua
parents:
diff changeset
762 if (element != null) {
jurzua
parents:
diff changeset
763 if(element.isLightweight()){
jurzua
parents:
diff changeset
764 element = getWrapper().getEntityByIdWithContent(element.getId());
jurzua
parents:
diff changeset
765 }
jurzua
parents:
diff changeset
766 lo.entity = element;
jurzua
parents:
diff changeset
767 lo.statusImage.setStatus("ok");
jurzua
parents:
diff changeset
768 }
jurzua
parents:
diff changeset
769 break;
jurzua
parents:
diff changeset
770 }
jurzua
parents:
diff changeset
771
jurzua
parents:
diff changeset
772 } else {
jurzua
parents:
diff changeset
773 //juc *** List<Entity> ents = getWrapper().getLightweightConceptsByAttribute(null, suggestType, suggestAttributeName, ownvalue, 1, false);
jurzua
parents:
diff changeset
774 List<Entity> ents = getWrapper().getEntitiesByAtt(suggestType, suggestAttributeName, ownvalue, 1, false);
jurzua
parents:
diff changeset
775 if (ents.size()==1){
111
22a18bfc66b0 new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
casties
parents: 105
diff changeset
776 lo.setEntityAndAttributeName(ents.get(0),suggestAttributeName);
1
jurzua
parents:
diff changeset
777 lo.statusImage.setStatus("ok");
jurzua
parents:
diff changeset
778 }
jurzua
parents:
diff changeset
779
jurzua
parents:
diff changeset
780 }
jurzua
parents:
diff changeset
781 return lo;
jurzua
parents:
diff changeset
782
jurzua
parents:
diff changeset
783 }
jurzua
parents:
diff changeset
784
jurzua
parents:
diff changeset
785
jurzua
parents:
diff changeset
786
jurzua
parents:
diff changeset
787 protected ListenerObject changeValuePersonByRole(ValueChangeEvent event, ListenerObject lo, String role){
jurzua
parents:
diff changeset
788 if (event.getNewValue() == null) {
jurzua
parents:
diff changeset
789 return lo;
jurzua
parents:
diff changeset
790 }else if(StringUtils.isEmpty(event.getNewValue().toString()) && (event.getOldValue() == null || StringUtils.isEmpty(event.getOldValue().toString()))){
jurzua
parents:
diff changeset
791 //if the old and new value are empty, then return
jurzua
parents:
diff changeset
792 return lo;
jurzua
parents:
diff changeset
793 }
jurzua
parents:
diff changeset
794 if (event.getNewValue().equals(event.getOldValue())) {
jurzua
parents:
diff changeset
795 return lo;
jurzua
parents:
diff changeset
796 }
jurzua
parents:
diff changeset
797
jurzua
parents:
diff changeset
798 String ownValue = (String) event.getNewValue();
jurzua
parents:
diff changeset
799
jurzua
parents:
diff changeset
800 if(StringUtils.isEmpty(ownValue))
jurzua
parents:
diff changeset
801 lo.statusImage.setStatus("unset");
jurzua
parents:
diff changeset
802 else
jurzua
parents:
diff changeset
803 lo.statusImage.setStatus("false");
jurzua
parents:
diff changeset
804
jurzua
parents:
diff changeset
805 lo.entity = null;
jurzua
parents:
diff changeset
806 // setze erst mal den Eigenwert auf das eingebene.
jurzua
parents:
diff changeset
807 Attribute at = new Attribute();
jurzua
parents:
diff changeset
808 at.setOwnValue(ownValue);
jurzua
parents:
diff changeset
809 lo.attribute = at;
jurzua
parents:
diff changeset
810 for (SelectItem item : lo.suggestedItems) {
jurzua
parents:
diff changeset
811 if (StringUtils.isNotEmpty(item.getLabel()) &&
jurzua
parents:
diff changeset
812 item.getLabel().equals(ownValue)) {
jurzua
parents:
diff changeset
813 //System.out.println("item.getValue()= " + item.getValue());
jurzua
parents:
diff changeset
814 lo.attribute = (Attribute) item.getValue();
jurzua
parents:
diff changeset
815 Entity element = getWrapper().getEntityById(
jurzua
parents:
diff changeset
816 lo.attribute.getSourceId());
jurzua
parents:
diff changeset
817
jurzua
parents:
diff changeset
818 if (element != null) {
jurzua
parents:
diff changeset
819 if(element.isLightweight()){
jurzua
parents:
diff changeset
820 element = getWrapper().getEntityByIdWithContent(element.getId());
jurzua
parents:
diff changeset
821 }
jurzua
parents:
diff changeset
822 lo.entity = element;
jurzua
parents:
diff changeset
823 lo.statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
824 }
jurzua
parents:
diff changeset
825 break;
jurzua
parents:
diff changeset
826 }
jurzua
parents:
diff changeset
827
jurzua
parents:
diff changeset
828 }
jurzua
parents:
diff changeset
829
jurzua
parents:
diff changeset
830 //juc lo.suggestedItems = updateSuggestedPersonByRole(ownValue, PERSON, "name", role);
jurzua
parents:
diff changeset
831 lo.suggestedItems = updateSuggestedPersonByRole(ownValue, PERSON, "name_translit", role);
jurzua
parents:
diff changeset
832
jurzua
parents:
diff changeset
833
jurzua
parents:
diff changeset
834 return lo;
jurzua
parents:
diff changeset
835 }
jurzua
parents:
diff changeset
836
jurzua
parents:
diff changeset
837 protected ListenerObject changeValue(String ownvalue, ListenerObject lo,
jurzua
parents:
diff changeset
838 String suggestType, String suggestAttributeName) {
jurzua
parents:
diff changeset
839
jurzua
parents:
diff changeset
840 return changeValue(ownvalue, lo, suggestType, suggestAttributeName,
jurzua
parents:
diff changeset
841 null);
jurzua
parents:
diff changeset
842 }
jurzua
parents:
diff changeset
843
jurzua
parents:
diff changeset
844 protected ListenerObject changeListener(ValueChangeEvent event,
jurzua
parents:
diff changeset
845 ListenerObject lo, String suggestType, String suggestAttributeName,
jurzua
parents:
diff changeset
846 String restrictingAttributeName, String restrictingAttributeValue) {
jurzua
parents:
diff changeset
847 try {
jurzua
parents:
diff changeset
848 if (event.getNewValue() == null) {
jurzua
parents:
diff changeset
849 return lo;
jurzua
parents:
diff changeset
850 }else if(StringUtils.isEmpty(event.getNewValue().toString()) && (event.getOldValue() == null || StringUtils.isEmpty(event.getOldValue().toString()))){
jurzua
parents:
diff changeset
851 //if the old and new value are empty, then return
jurzua
parents:
diff changeset
852 return lo;
jurzua
parents:
diff changeset
853 }
jurzua
parents:
diff changeset
854 if (event.getNewValue().equals(event.getOldValue())) {
jurzua
parents:
diff changeset
855 return lo;
jurzua
parents:
diff changeset
856 }
jurzua
parents:
diff changeset
857
jurzua
parents:
diff changeset
858 String ownvalue = (String) event.getNewValue();
jurzua
parents:
diff changeset
859
jurzua
parents:
diff changeset
860 if(StringUtils.isEmpty(ownvalue))
jurzua
parents:
diff changeset
861 lo.statusImage.setStatus(StatusImage.STATUS_UNSET);
jurzua
parents:
diff changeset
862 else
jurzua
parents:
diff changeset
863 lo.statusImage.setStatus(StatusImage.STATUS_FALSE);
jurzua
parents:
diff changeset
864
jurzua
parents:
diff changeset
865 lo.entity = null;
jurzua
parents:
diff changeset
866 // setze erst mal den Eigenwert auf das eingebene.
jurzua
parents:
diff changeset
867 Attribute at = new Attribute();
jurzua
parents:
diff changeset
868 at.setOwnValue(ownvalue);
jurzua
parents:
diff changeset
869 lo.attribute = at;
jurzua
parents:
diff changeset
870 for (SelectItem item : lo.suggestedItems) {
jurzua
parents:
diff changeset
871 if (StringUtils.isNotEmpty(item.getLabel()) &&
jurzua
parents:
diff changeset
872 item.getLabel().equals(ownvalue)) {
jurzua
parents:
diff changeset
873 //System.out.println("item.getValue()= " + item.getValue());
jurzua
parents:
diff changeset
874 lo.attribute = (Attribute) item.getValue();
jurzua
parents:
diff changeset
875 Entity element = getWrapper().getEntityById(
jurzua
parents:
diff changeset
876 lo.attribute.getSourceId());
jurzua
parents:
diff changeset
877
jurzua
parents:
diff changeset
878 if (element != null) {
jurzua
parents:
diff changeset
879 if(element.isLightweight()){
jurzua
parents:
diff changeset
880 element = getWrapper().getEntityByIdWithContent(element.getId());
jurzua
parents:
diff changeset
881 }
jurzua
parents:
diff changeset
882 lo.entity = element;
jurzua
parents:
diff changeset
883 lo.statusImage.setStatus(StatusImage.STATUS_OK);
jurzua
parents:
diff changeset
884 }
jurzua
parents:
diff changeset
885 break;
jurzua
parents:
diff changeset
886 }
jurzua
parents:
diff changeset
887
jurzua
parents:
diff changeset
888 }
jurzua
parents:
diff changeset
889
jurzua
parents:
diff changeset
890 if (restrictingAttributeName == null) {
jurzua
parents:
diff changeset
891 lo.suggestedItems = this.updateSuggestedItems(event,
jurzua
parents:
diff changeset
892 suggestType, suggestAttributeName);
jurzua
parents:
diff changeset
893 } else {
jurzua
parents:
diff changeset
894 lo.suggestedItems = this.updateSuggestedItems(suggestType,
jurzua
parents:
diff changeset
895 suggestAttributeName, event.getNewValue().toString(),
jurzua
parents:
diff changeset
896 restrictingAttributeName, restrictingAttributeValue);
jurzua
parents:
diff changeset
897 }
jurzua
parents:
diff changeset
898
jurzua
parents:
diff changeset
899 } catch (Exception e) {
jurzua
parents:
diff changeset
900 e.printStackTrace();
jurzua
parents:
diff changeset
901 }
jurzua
parents:
diff changeset
902 return lo;
jurzua
parents:
diff changeset
903 }
jurzua
parents:
diff changeset
904
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
905 /**
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
906 * Update the ownvalues of entities that are related to the given entity.
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
907 *
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
908 * @param entity
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
909 * @param user
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
910 * @throws Exception
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
911 */
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
912 protected void updateRelatedOW(Entity entity, String user) throws Exception {
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
913 List<Entity> nodeList = new ArrayList<Entity>();
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
914
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
915 /*
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
916 * run updates depending on type
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
917 */
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
918 String oc = entity.getObjectClass();
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
919 if (oc.equals(PLACE)) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
920 this.generateOW4City(entity, nodeList, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
921 getWrapper().saveEntityListAsNodeWithoutContent(nodeList, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
922
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
923 } else if (oc.equals(REPOSITORY)) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
924 this.generateOW4Repository(entity, nodeList, new HashMap<String, String>(), user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
925 getWrapper().saveEntityListAsNodeWithoutContent(nodeList, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
926
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
927 } else if (oc.equals(COLLECTION)) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
928 this.generateOW4Collection(entity, nodeList, new HashMap<String, String>(), user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
929 getWrapper().saveEntityListAsNodeWithoutContent(nodeList, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
930
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
931 } else if (oc.equals(CODEX)) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
932 this.generateOW4Codex(entity, nodeList, new HashMap<String, String>(), user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
933 getWrapper().saveEntityListAsNodeWithoutContent(nodeList, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
934
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
935 } else if (oc.equals(TEXT)) {
91
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
936 generateOW4Text(entity, user);
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
937 }
d172201d24ad more comments and refactorings.
casties
parents: 90
diff changeset
938 }
1
jurzua
parents:
diff changeset
939
jurzua
parents:
diff changeset
940 private void generateOW4City(Entity city, List<Entity> nodeList, String user){
jurzua
parents:
diff changeset
941 Map<String, String> map = new HashMap<String, String>();
jurzua
parents:
diff changeset
942 map.put(PLACE, city.getOwnValue());
jurzua
parents:
diff changeset
943
jurzua
parents:
diff changeset
944 List<Entity> repoList = getWrapper().getSourcesForTargetRelation(city, is_in, REPOSITORY, -1);
jurzua
parents:
diff changeset
945 for(Entity repo : repoList){
jurzua
parents:
diff changeset
946 this.generateOW4Repository(repo, nodeList, map, user);
jurzua
parents:
diff changeset
947 }
jurzua
parents:
diff changeset
948 }
jurzua
parents:
diff changeset
949
jurzua
parents:
diff changeset
950 private void generateOW4Repository(Entity repository, List<Entity> nodeList, Map<String, String> map, String user){
jurzua
parents:
diff changeset
951 if(map.size() == 0){
jurzua
parents:
diff changeset
952 List<Entity> placeList = getWrapper().getTargetsForSourceRelation(repository, is_in, PLACE, 1);
jurzua
parents:
diff changeset
953 map.put(PLACE, ((placeList.size() > 0) ? placeList.get(0).getOwnValue() : ""));
jurzua
parents:
diff changeset
954 }
jurzua
parents:
diff changeset
955
jurzua
parents:
diff changeset
956 map.put(REPOSITORY, repository.getOwnValue());
jurzua
parents:
diff changeset
957 List<Entity> collectionList = getWrapper().getSourcesForTargetRelation(repository, is_part_of, COLLECTION, -1);
jurzua
parents:
diff changeset
958 for(Entity collection : collectionList){
jurzua
parents:
diff changeset
959 this.generateOW4Collection(collection, nodeList, map, user);
jurzua
parents:
diff changeset
960 }
jurzua
parents:
diff changeset
961 }
jurzua
parents:
diff changeset
962
jurzua
parents:
diff changeset
963 private void generateOW4Collection(Entity collection, List<Entity> nodeList, Map<String, String> map, String user){
jurzua
parents:
diff changeset
964 if(map.size() == 0){
jurzua
parents:
diff changeset
965 List<Entity> repoList = getWrapper().getTargetsForSourceRelation(collection, is_part_of, REPOSITORY, 1);
jurzua
parents:
diff changeset
966 map.put(REPOSITORY, (repoList.size() > 0) ? repoList.get(0).getOwnValue() : "");
jurzua
parents:
diff changeset
967 if(repoList.size() > 0){
jurzua
parents:
diff changeset
968 Entity repository = repoList.get(0);
jurzua
parents:
diff changeset
969 List<Entity> placeList = getWrapper().getTargetsForSourceRelation(repository, is_in, PLACE, 1);
jurzua
parents:
diff changeset
970 map.put(PLACE, (placeList.size() > 0) ? placeList.get(0).getOwnValue() : "");
jurzua
parents:
diff changeset
971 }else{
jurzua
parents:
diff changeset
972 map.put(REPOSITORY, "");
jurzua
parents:
diff changeset
973 map.put(PLACE, "");
jurzua
parents:
diff changeset
974 }
jurzua
parents:
diff changeset
975 }
jurzua
parents:
diff changeset
976
jurzua
parents:
diff changeset
977 map.put(COLLECTION, collection.getOwnValue());
jurzua
parents:
diff changeset
978 List<Entity> list = getWrapper().getSourcesForTargetRelation(collection, is_part_of, CODEX, -1);
jurzua
parents:
diff changeset
979 for(Entity codex : list){
jurzua
parents:
diff changeset
980 //update ow codex
jurzua
parents:
diff changeset
981 Attribute att = getWrapper().getAttributeByName(codex.getId(), "identifier");
jurzua
parents:
diff changeset
982 if(att != null){
jurzua
parents:
diff changeset
983 codex.setOwnValue(collection.getOwnValue() + "_" + att.getOwnValue());
jurzua
parents:
diff changeset
984 nodeList.add(codex);
jurzua
parents:
diff changeset
985 }
jurzua
parents:
diff changeset
986 this.generateOW4Codex(codex, nodeList, map, user);
jurzua
parents:
diff changeset
987 }
jurzua
parents:
diff changeset
988 }
jurzua
parents:
diff changeset
989
jurzua
parents:
diff changeset
990 private void generateOW4Codex(Entity codex, List<Entity> nodeList, Map<String, String> map, String user){
jurzua
parents:
diff changeset
991 if(map.size() == 0){
jurzua
parents:
diff changeset
992 List<Entity> collList = getWrapper().getTargetsForSourceRelation(codex, is_part_of, COLLECTION, 1);
jurzua
parents:
diff changeset
993 map.put(COLLECTION, (collList.size() > 0 ) ? collList.get(0).getOwnValue() : "");
jurzua
parents:
diff changeset
994 if(collList.size() > 0){
jurzua
parents:
diff changeset
995 Entity collection = collList.get(0);
jurzua
parents:
diff changeset
996 List<Entity> repoList = getWrapper().getTargetsForSourceRelation(collection, is_part_of, REPOSITORY, 1);
jurzua
parents:
diff changeset
997 map.put(REPOSITORY, (repoList.size() > 0) ? repoList.get(0).getOwnValue() : "");
jurzua
parents:
diff changeset
998 if(repoList.size() > 0){
jurzua
parents:
diff changeset
999 Entity repository = repoList.get(0);
jurzua
parents:
diff changeset
1000 List<Entity> placeList = getWrapper().getTargetsForSourceRelation(repository, is_in, PLACE, 1);
jurzua
parents:
diff changeset
1001 map.put(PLACE, (placeList.size() > 0) ? placeList.get(0).getOwnValue() : "");
jurzua
parents:
diff changeset
1002 }else{
jurzua
parents:
diff changeset
1003 map.put(PLACE, "");
jurzua
parents:
diff changeset
1004 }
jurzua
parents:
diff changeset
1005 }else{
jurzua
parents:
diff changeset
1006 map.put(COLLECTION, "");
jurzua
parents:
diff changeset
1007 map.put(REPOSITORY, "");
jurzua
parents:
diff changeset
1008 map.put(PLACE, "");
jurzua
parents:
diff changeset
1009 }
jurzua
parents:
diff changeset
1010 }
jurzua
parents:
diff changeset
1011 List<Entity> list = getWrapper().getSourcesForTargetRelation(codex, is_part_of, WITNESS, -1);
jurzua
parents:
diff changeset
1012 String placeText = (StringUtils.isNotEmpty(map.get(PLACE))) ? "_" + map.get(PLACE) : "";
jurzua
parents:
diff changeset
1013 String repoText = (StringUtils.isNotEmpty(map.get(REPOSITORY))) ? "_" + map.get(REPOSITORY) : "";
jurzua
parents:
diff changeset
1014 String codexText = (codex != null) ? "_" + codex.getOwnValue() : "";
jurzua
parents:
diff changeset
1015
jurzua
parents:
diff changeset
1016 for(Entity witness : list){
jurzua
parents:
diff changeset
1017 List<Entity> textList = getWrapper().getTargetsForSourceRelation(witness, "is_exemplar_of", TEXT, -1);
jurzua
parents:
diff changeset
1018 String textName = (textList.size() > 0) ? textList.get(0).getOwnValue() : "";
jurzua
parents:
diff changeset
1019 witness.setOwnValue(textName + placeText + repoText + codexText);
jurzua
parents:
diff changeset
1020 nodeList.add(witness);
jurzua
parents:
diff changeset
1021 }
jurzua
parents:
diff changeset
1022 }
jurzua
parents:
diff changeset
1023
jurzua
parents:
diff changeset
1024 private void generateOW4Text(Entity text, String user) throws Exception{
124
28a0c2726466 changed saveEntity() to use new EditIntent. Set up EditIntent for TEXT, PERSON, REFERENCE.
casties
parents: 123
diff changeset
1025 // FIXME: these loops seem to be wrong :-(
1
jurzua
parents:
diff changeset
1026 List<Entity> witnessList = getWrapper().getSourcesForTargetRelation(text, "is_exemplar_of", WITNESS, -1);
jurzua
parents:
diff changeset
1027 List<Entity> listToSave = new ArrayList<Entity>();
jurzua
parents:
diff changeset
1028 for(Entity witness : witnessList){
jurzua
parents:
diff changeset
1029 List<Entity> list = getWrapper().getTargetsForSourceRelation(witness, "is_part_of", "CODEX", 1);
jurzua
parents:
diff changeset
1030 if(list.size() > 0){
jurzua
parents:
diff changeset
1031 Entity codex = list.get(0);
jurzua
parents:
diff changeset
1032 list = getWrapper().getTargetsForSourceRelation(codex, "is_part_of", "COLLECTION", 1);
jurzua
parents:
diff changeset
1033 if(list.size() > 0){
jurzua
parents:
diff changeset
1034 Entity collection = list.get(0);
jurzua
parents:
diff changeset
1035 list = getWrapper().getTargetsForSourceRelation(collection, "is_part_of", "REPOSITORY", 1);
jurzua
parents:
diff changeset
1036 if(list.size() > 0){
jurzua
parents:
diff changeset
1037 Entity repository = list.get(0);
jurzua
parents:
diff changeset
1038 list = getWrapper().getTargetsForSourceRelation(repository, "is_in", "PLACE", 1);
jurzua
parents:
diff changeset
1039 if(list.size() > 0){
jurzua
parents:
diff changeset
1040 Entity city = list.get(0);
jurzua
parents:
diff changeset
1041 witness.setOwnValue(text.getOwnValue() + "_" + city.getOwnValue() + "_" + repository.getOwnValue() + "_" + codex.getOwnValue());
jurzua
parents:
diff changeset
1042 listToSave.add(witness);
jurzua
parents:
diff changeset
1043 }
jurzua
parents:
diff changeset
1044 }
jurzua
parents:
diff changeset
1045 }
jurzua
parents:
diff changeset
1046 }
jurzua
parents:
diff changeset
1047 getWrapper().saveEntityListAsNodeWithoutContent(listToSave, user);
jurzua
parents:
diff changeset
1048 }
jurzua
parents:
diff changeset
1049 }
jurzua
parents:
diff changeset
1050
jurzua
parents:
diff changeset
1051 protected SecurityService getSecurityService() {
jurzua
parents:
diff changeset
1052 return getAppBean().getSecurityService();
jurzua
parents:
diff changeset
1053 }
jurzua
parents:
diff changeset
1054
jurzua
parents:
diff changeset
1055 protected ListenerObject changeListener(ValueChangeEvent event,
jurzua
parents:
diff changeset
1056 ListenerObject lo, String suggestType, String suggestAttributeName) {
jurzua
parents:
diff changeset
1057
jurzua
parents:
diff changeset
1058 return changeListener(event, lo, suggestType, suggestAttributeName,
jurzua
parents:
diff changeset
1059 null, null);
jurzua
parents:
diff changeset
1060 }
jurzua
parents:
diff changeset
1061
jurzua
parents:
diff changeset
1062 public String getCurrentId() {
jurzua
parents:
diff changeset
1063 return currentId;
jurzua
parents:
diff changeset
1064 }
jurzua
parents:
diff changeset
1065
jurzua
parents:
diff changeset
1066 public void setCurrentId(String currentId) {
jurzua
parents:
diff changeset
1067 this.currentId = currentId;
jurzua
parents:
diff changeset
1068 }
jurzua
parents:
diff changeset
1069
jurzua
parents:
diff changeset
1070 public String getCurrentIdMsg() {
jurzua
parents:
diff changeset
1071 return currentIdMsg;
jurzua
parents:
diff changeset
1072 }
jurzua
parents:
diff changeset
1073
jurzua
parents:
diff changeset
1074 public void setCurrentIdMsg(String currentIdMsg) {
jurzua
parents:
diff changeset
1075 this.currentIdMsg = currentIdMsg;
jurzua
parents:
diff changeset
1076 }
jurzua
parents:
diff changeset
1077
jurzua
parents:
diff changeset
1078 public String getDefObjectClass() {
jurzua
parents:
diff changeset
1079 return defObjectClass;
jurzua
parents:
diff changeset
1080 }
jurzua
parents:
diff changeset
1081
jurzua
parents:
diff changeset
1082 public void setDefObjectClass(String defObjectClass) {
jurzua
parents:
diff changeset
1083 this.defObjectClass = defObjectClass;
jurzua
parents:
diff changeset
1084 }
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1085
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1086 /**
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1087 * Replace all source relations on the given entity by the contents of the AliasListenerObject
113
8e3f1f81acfb small cleanup.
casties
parents: 112
diff changeset
1088 * (type entClass) using the given relName and aliasRelName.
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1089 *
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1090 * ent - relName -> targetClass,
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1091 * ent - aliasRelName -> ALIAS
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1092 *
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1093 * @param ent
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1094 * @param lo
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1095 * @param targetClass
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1096 * @param relName
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1097 * @param aliasRelName
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1098 */
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
1099 public void replaceUniqueAliasSourceRelation(Entity ent, AliasListenerObject lo, String targetClass, String relName, String aliasRelName) {
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1100 Entity target = lo.entity;
114
363ff8844b23 fix NPE when ListenerObject is empty.
casties
parents: 112
diff changeset
1101 if (target == null || target.getObjectClass() == null) {
363ff8844b23 fix NPE when ListenerObject is empty.
casties
parents: 112
diff changeset
1102 return;
363ff8844b23 fix NPE when ListenerObject is empty.
casties
parents: 112
diff changeset
1103 }
363ff8844b23 fix NPE when ListenerObject is empty.
casties
parents: 112
diff changeset
1104 if (target.getObjectClass().equals(targetClass)) {
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1105 // regular target entity e.g. PLACE
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1106 ent.replaceUniqueSourceRelation(target, targetClass, relName);
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
1107 // should not have alias relation
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1108 ent.removeAllSourceRelationsByName(aliasRelName);
114
363ff8844b23 fix NPE when ListenerObject is empty.
casties
parents: 112
diff changeset
1109 } else if (target.getObjectClass().equals(ALIAS)) {
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1110 // e.g. WITNESS -> was_created_in_as -> ALIAS
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1111 ent.replaceUniqueSourceRelation(target, ALIAS, aliasRelName);
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1112 // ALIAS -> is_alias_name_of -> PLACE
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1113 List<Entity> places = getWrapper().getTargetsForSourceRelation(target, is_alias_name_of, targetClass, 1);
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1114 if (! places.isEmpty()) {
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1115 // e.g. WITNESS -> was_created_in -> PLACE
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1116 ent.replaceUniqueSourceRelation(places.get(0), targetClass, relName);
112
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1117 }
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1118 }
59f26a5ef2b3 AliasListenerObject adds aliases to ListenerObject. Change all forms to enable ALIAS for (historical) PLACE fields. Remove REPOSITORY from event forms.
casties
parents: 111
diff changeset
1119 }
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1120
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1121 /**
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1122 * Replaces all source relations of the given type on the given entity with the given targets.
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1123 *
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1124 * @param ent
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1125 * @param newTars
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1126 * @param tarObjClass
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1127 * @param relName
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1128 */
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1129 public void replaceMultipleSourceRelations(Entity ent, List<Entity> newTars, String tarObjClass, String relName) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1130 if (ent.isLightweight()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1131 ent = getWrapper().getEntityContent(ent);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1132 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1133 if (newTars == null || newTars.isEmpty()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1134 // no new target -> remove all relations of this type
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1135 ent.removeAllSourceRelations(relName, tarObjClass);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1136 return;
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1137 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1138
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1139 ArrayList<Relation> oldRelations = new ArrayList<Relation>(ent.getSourceRelations(relName, tarObjClass));
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1140 List<Long> newTarIds = new ArrayList<Long>();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1141 // check new targets
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1142 for (Entity tar : newTars) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1143 if (tar.isLightweight()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1144 tar = getWrapper().getEntityContent(tar);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1145 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1146 Long tarId = tar.getId();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1147 newTarIds.add(tarId);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1148 if (ent.containsSourceRelation(relName, tarId)) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1149 // relation exists
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1150 oldRelations.remove(ent.getSourceRelation(relName, tarId));
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1151 } else {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1152 // new relation
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1153 ent.addSourceRelation(relName, tar);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1154 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1155 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1156
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1157 // check remaining old relations
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1158 for (Relation oldRel : oldRelations) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1159 Long tarId = oldRel.getTargetId();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1160 if (newTarIds.contains(tarId)) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1161 // this should not happen
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1162 logger.error("Old relation to new target ID:"+oldRel);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1163 } else {
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
1164 ent.removeSourceRelation(relName, tarId);
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1165 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1166 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1167 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1168
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1169 /**
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1170 * Replaces all target relations of the given type on the given entity with the given sources.
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1171 *
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1172 * @param ent
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1173 * @param newSrcs
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1174 * @param srcObjClass
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1175 * @param relName
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1176 */
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1177 public void replaceMultipleTargetRelations(Entity ent, List<Entity> newSrcs, String srcObjClass, String relName) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1178 if (ent.isLightweight()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1179 ent = getWrapper().getEntityContent(ent);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1180 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1181 if (newSrcs == null || newSrcs.isEmpty()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1182 // no new target -> remove all relations of this type
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1183 ent.removeAllTargetRelations(relName, srcObjClass);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1184 return;
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1185 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1186
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1187 ArrayList<Relation> oldRelations = new ArrayList<Relation>(ent.getTargetRelations(relName, srcObjClass));
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1188 List<Long> newSrcIds = new ArrayList<Long>();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1189 // check new targets
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1190 for (Entity src : newSrcs) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1191 if (src.isLightweight()) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1192 src = getWrapper().getEntityContent(src);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1193 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1194 Long srcId = src.getId();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1195 newSrcIds.add(srcId);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1196 if (ent.containsTargetRelation(relName, srcId)) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1197 // relation exists
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1198 oldRelations.remove(ent.getTargetRelation(relName, srcId));
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1199 } else {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1200 // new relation
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1201 ent.addTargetRelation(relName, src);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1202 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1203 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1204
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1205 // check remaining old relations
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1206 for (Relation oldRel : oldRelations) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1207 Long srcId = oldRel.getSourceId();
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1208 if (newSrcIds.contains(srcId)) {
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1209 // this should not happen
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1210 logger.error("Old relation to new source ID:"+oldRel);
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1211 } else {
136
502ae5b1a07d fixing bugs from re-use efforts. misc cleanups.
casties
parents: 134
diff changeset
1212 ent.removeTargetRelation(relName, srcId);
134
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1213 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1214 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1215 }
25bfcc9d757c effort to re-use more relations when saving entities.
casties
parents: 125
diff changeset
1216
1
jurzua
parents:
diff changeset
1217 }