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

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