annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/AbstractISMIBean.java @ 125:eee2e0ca4032

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