annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentCollectionBean.java @ 133:5ccd6e709f95

fix attribute name in EditIntent.
author casties
date Thu, 23 Feb 2017 19:25:37 +0100
parents eee2e0ca4032
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
jurzua
parents:
diff changeset
5 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
6 import org.apache.log4j.Logger;
jurzua
parents:
diff changeset
7 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
8 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
9 import org.mpi.openmind.repository.bo.Node;
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
10 import org.mpi.openmind.repository.services.utils.EditIntent;
1
jurzua
parents:
diff changeset
11
jurzua
parents:
diff changeset
12 public class CurrentCollectionBean extends CodexEditorTemplate implements
jurzua
parents:
diff changeset
13 Serializable {
jurzua
parents:
diff changeset
14 private static final long serialVersionUID = 5723693904746973203L;
jurzua
parents:
diff changeset
15
jurzua
parents:
diff changeset
16 public static int MAX_PLACES = 100;
jurzua
parents:
diff changeset
17 public static int MAX_REPOSITORIES = 100;
jurzua
parents:
diff changeset
18 private static Logger logger = Logger
jurzua
parents:
diff changeset
19 .getLogger(CurrentCollectionBean.class);
jurzua
parents:
diff changeset
20
jurzua
parents:
diff changeset
21 protected Boolean restrictCities = true;
jurzua
parents:
diff changeset
22 private Boolean restrictRepositories = true;
jurzua
parents:
diff changeset
23
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
24 /** intent to edit all attributes and relations in the form */
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
25 public static EditIntent editCollectionIntent = new EditIntent(
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
26 AbstractISMIBean.COLLECTION,
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
27 // attributes
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
28 new String[]{"name"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
29 // source relations
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
30 new String[]{"is_part_of"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
31 // target relations
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
32 new String[]{"is_reference_of"});
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
33
1
jurzua
parents:
diff changeset
34
jurzua
parents:
diff changeset
35 @Override
jurzua
parents:
diff changeset
36 public void reset() {
jurzua
parents:
diff changeset
37 super.reset();
jurzua
parents:
diff changeset
38 this.entity = new Entity(Node.TYPE_ABOX, COLLECTION, false);
jurzua
parents:
diff changeset
39
jurzua
parents:
diff changeset
40 this.restrictCities = true;
jurzua
parents:
diff changeset
41 this.restrictRepositories = true;
jurzua
parents:
diff changeset
42
jurzua
parents:
diff changeset
43 this.entity = new Entity(Node.TYPE_ABOX, COLLECTION, false);
jurzua
parents:
diff changeset
44 }
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 public CurrentCollectionBean() {
jurzua
parents:
diff changeset
47 this.reset();
jurzua
parents:
diff changeset
48 // setDefinition(getDefinition("COLLECTION"));
jurzua
parents:
diff changeset
49 setDefObjectClass(COLLECTION);
jurzua
parents:
diff changeset
50 registerChecker(getCityLo(), "City is not valid!");
jurzua
parents:
diff changeset
51 registerChecker(getCountryLo(), "Country is not valid!");
jurzua
parents:
diff changeset
52 registerChecker(getRepositoryLo(), "Repository is not valid!");
jurzua
parents:
diff changeset
53 }
jurzua
parents:
diff changeset
54
jurzua
parents:
diff changeset
55 public Boolean getRestrictCities() {
jurzua
parents:
diff changeset
56 return restrictCities;
jurzua
parents:
diff changeset
57 }
jurzua
parents:
diff changeset
58
jurzua
parents:
diff changeset
59 public void setRestrictCities(Boolean restrictCities) {
jurzua
parents:
diff changeset
60 this.restrictCities = restrictCities;
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 public Boolean getRestrictRepositories() {
jurzua
parents:
diff changeset
64 return restrictRepositories;
jurzua
parents:
diff changeset
65 }
jurzua
parents:
diff changeset
66
jurzua
parents:
diff changeset
67 public void setRestrictRepositories(Boolean restrictRepositories) {
jurzua
parents:
diff changeset
68 this.restrictRepositories = restrictRepositories;
jurzua
parents:
diff changeset
69 }
jurzua
parents:
diff changeset
70
jurzua
parents:
diff changeset
71 public void setEntity(Entity collection) {
jurzua
parents:
diff changeset
72 this.reset();
jurzua
parents:
diff changeset
73 this.entity = collection;
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 if (this.entity != null && this.entity.isPersistent()) {
jurzua
parents:
diff changeset
76 if (this.entity.isLightweight()) {
jurzua
parents:
diff changeset
77 this.entity = getWrapper().getEntityContent(this.entity);
jurzua
parents:
diff changeset
78 }
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 this.loadAttributes(this.entity);
jurzua
parents:
diff changeset
81
jurzua
parents:
diff changeset
82 for (Entity target : getWrapper().getTargetsForSourceRelation(
jurzua
parents:
diff changeset
83 collection, "is_part_of", REPOSITORY, 1)) {
jurzua
parents:
diff changeset
84 setRepository(target);
jurzua
parents:
diff changeset
85 }
jurzua
parents:
diff changeset
86
jurzua
parents:
diff changeset
87 // this.loadReferences(this.entity);
jurzua
parents:
diff changeset
88 this.loadEndNoteRefs();
jurzua
parents:
diff changeset
89
jurzua
parents:
diff changeset
90 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
91 this.checkConsistencyFromCountryToCodex();
jurzua
parents:
diff changeset
92 }
jurzua
parents:
diff changeset
93 }
jurzua
parents:
diff changeset
94
jurzua
parents:
diff changeset
95 public String saveAsNewEntity() {
jurzua
parents:
diff changeset
96 this.setSelectedSaveAsNew(true);
jurzua
parents:
diff changeset
97 return save();
jurzua
parents:
diff changeset
98 }
jurzua
parents:
diff changeset
99
jurzua
parents:
diff changeset
100 @Override
jurzua
parents:
diff changeset
101 public String save() {
jurzua
parents:
diff changeset
102 super.save();
jurzua
parents:
diff changeset
103 try {
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 CheckResults cr = getCheckResults();
jurzua
parents:
diff changeset
106 if (cr.hasErrors) {
jurzua
parents:
diff changeset
107 getSessionBean().setErrorMessages(cr);
jurzua
parents:
diff changeset
108 getSessionBean().setDisplayError(true);
jurzua
parents:
diff changeset
109 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
110 return "";
jurzua
parents:
diff changeset
111 }
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 this.entity = this.updateEntityAttributes(this.entity);
jurzua
parents:
diff changeset
114 // checking is the identifier is unique for the selected collecion
jurzua
parents:
diff changeset
115 Attribute attName = this.entity.getAttributeByName("name");
jurzua
parents:
diff changeset
116 String collectionName = (attName == null) ? null : attName
jurzua
parents:
diff changeset
117 .getValue();
jurzua
parents:
diff changeset
118 if (StringUtils.isNotEmpty(collectionName)) {
jurzua
parents:
diff changeset
119 if (!checkUnityCollection(collectionName,
jurzua
parents:
diff changeset
120 (isSelectedSaveAsNew()) ? null : this.entity.getId(),
jurzua
parents:
diff changeset
121 this.getRepositoryLo().entity)) {
jurzua
parents:
diff changeset
122 this.renderUnityCheckerDialog();
jurzua
parents:
diff changeset
123 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
124 return "";
jurzua
parents:
diff changeset
125 }
jurzua
parents:
diff changeset
126 } else {
jurzua
parents:
diff changeset
127 this.addErrorMsg("Ths entity has not been saved, because its name was empty.");
jurzua
parents:
diff changeset
128 this.addErrorMsg("You must enter a name.");
jurzua
parents:
diff changeset
129 return "";
jurzua
parents:
diff changeset
130 }
jurzua
parents:
diff changeset
131
jurzua
parents:
diff changeset
132 if (!isCollectionConsistentBeforeSave()) {
jurzua
parents:
diff changeset
133 return "";
jurzua
parents:
diff changeset
134 }
jurzua
parents:
diff changeset
135
jurzua
parents:
diff changeset
136 if (this.getRepositoryLo().entity != null
jurzua
parents:
diff changeset
137 && this.getRepositoryLo().entity.isLightweight()) {
jurzua
parents:
diff changeset
138 this.getRepositoryLo().entity = getWrapper()
jurzua
parents:
diff changeset
139 .getEntityByIdWithContent(
jurzua
parents:
diff changeset
140 this.getRepositoryLo().entity.getId());
jurzua
parents:
diff changeset
141 }
jurzua
parents:
diff changeset
142 this.entity.replaceSourceRelation(this.getRepositoryLo().entity,
jurzua
parents:
diff changeset
143 REPOSITORY, is_part_of);
jurzua
parents:
diff changeset
144
jurzua
parents:
diff changeset
145 // REFERENCE -> is_reference_of -> THIS
jurzua
parents:
diff changeset
146 this.prepareEndNoteRefs2Save();
jurzua
parents:
diff changeset
147
jurzua
parents:
diff changeset
148 if (isSelectedSaveAsNew()) {
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
149 //this.entity.removeAllTargetRelations(is_part_of, CODEX);
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
150 //this.entity = getWrapper().saveEntityAsNew(this.entity,
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
151 // getSessionUser().getEmail());
1
jurzua
parents:
diff changeset
152 } else {
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
153 this.entity = getWrapper().saveEntity(this.entity, getSessionUser().getEmail(), editCollectionIntent);
1
jurzua
parents:
diff changeset
154 }
jurzua
parents:
diff changeset
155
91
d172201d24ad more comments and refactorings.
casties
parents: 1
diff changeset
156 this.updateRelatedOW(this.entity, getSessionUser().getEmail());
1
jurzua
parents:
diff changeset
157 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 logger.info("Entity saved - Time = "
jurzua
parents:
diff changeset
160 + (System.currentTimeMillis() - start) + ", " + entity);
jurzua
parents:
diff changeset
161 this.printSuccessSavingEntity();
jurzua
parents:
diff changeset
162
jurzua
parents:
diff changeset
163 this.setSelectedSaveAsNew(false);
jurzua
parents:
diff changeset
164
jurzua
parents:
diff changeset
165 } catch (Exception e) {
jurzua
parents:
diff changeset
166 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
167 e.printStackTrace();
jurzua
parents:
diff changeset
168 this.printInternalError(e);
jurzua
parents:
diff changeset
169 }
jurzua
parents:
diff changeset
170 saveEnd();
jurzua
parents:
diff changeset
171
jurzua
parents:
diff changeset
172 return PAGE_EDITOR;
jurzua
parents:
diff changeset
173 }
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175 /**
jurzua
parents:
diff changeset
176 * <p>
jurzua
parents:
diff changeset
177 * This method saves the collection without the loading of its contain when
jurzua
parents:
diff changeset
178 * it is not necessary. LW means that the collection keeps light weight or
jurzua
parents:
diff changeset
179 * without attributes and relation.
jurzua
parents:
diff changeset
180 * </p>
jurzua
parents:
diff changeset
181 * <p>
jurzua
parents:
diff changeset
182 * It is normally used by classes (like: CurrentCodex, CurrentWitness) which
jurzua
parents:
diff changeset
183 * inherit of this class.
jurzua
parents:
diff changeset
184 * </p>
jurzua
parents:
diff changeset
185 *
jurzua
parents:
diff changeset
186 * @param collection
jurzua
parents:
diff changeset
187 */
jurzua
parents:
diff changeset
188 public void setLWCollection(Entity collection) {
jurzua
parents:
diff changeset
189 this.entity = collection;
jurzua
parents:
diff changeset
190 }
jurzua
parents:
diff changeset
191 }