annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentCollectionBean.java @ 91:d172201d24ad

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