annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/AbstractISMIBean.java @ 136:502ae5b1a07d

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