comparison src/main/java/de/mpiwg/itgroup/ismi/utils/templates/WitnessTemplate.java @ 1:2e911857a759

(none)
author jurzua
date Wed, 29 Oct 2014 14:00:28 +0000
parents
children 54c1bb63a713
comparison
equal deleted inserted replaced
0:74df02964906 1:2e911857a759
1 package de.mpiwg.itgroup.ismi.utils.templates;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import org.apache.commons.lang.StringUtils;
10 import org.apache.log4j.Logger;
11 import org.mpi.openmind.cache.WrapperService;
12 import org.mpi.openmind.repository.bo.Attribute;
13 import org.mpi.openmind.repository.bo.Entity;
14 import org.mpi.openmind.repository.bo.Relation;
15 import org.mpi.openmind.repository.services.PersistenceService;
16 import org.mpi.openmind.repository.utils.RomanizationLoC;
17
18 import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean;
19 import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean;
20 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
21 import de.mpiwg.itgroup.ismi.utils.NaturalOrderComparator;
22
23 public class WitnessTemplate extends AbstractTemplate implements
24 Comparable<WitnessTemplate> {
25
26 private static final long serialVersionUID = -8829977715724255324L;
27
28 private static Logger logger = Logger.getLogger(WitnessTemplate.class);
29
30 public String privacity;
31 public Long id;
32 public String ov;
33 public String title;
34 public Long titleId;
35 public String startPage;
36 public String endPage;
37 public String status;
38 public String tableOfContents;
39 public String notesOnTitleAuthor;
40 public String notesOnCollationAndCorrections;
41 public String notesOnOwnership;
42 public String notes;
43 public String codex;
44 public String collection;
45 public String repository;
46 public String city;
47 public String country;
48 public String folios;
49 public String ahlwardtNo;
50 public String colophon;
51
52 public String incipit;
53 public String explicit;
54 public String subject;
55
56 // public List<String> referenceList;
57 public Map<String, String> ownedByMap;
58 public Map<String, String> readByMap;
59
60 //extras fields used by the json interface
61 public String titleAsWrittenInWitness;
62 public String authorAsWrittenInWitness;
63 public String copyist;
64 public String placeOfCopying;
65
66 public String page_dimensions;
67 public String written_area_dimensions;
68 public String lines_per_page;
69 public String page_layout;
70 public String script;
71 public String writing_surface;
72 public List<String> wasStudiedByList;
73 public String fullTitle;
74 public String fullTitleTranslit;
75 public String authorName;
76 public String authorNameTranslit;
77 public String creationDate;
78
79 public boolean useRomanization = false;
80
81 public boolean isUnknown() {
82 return StringUtils.equals("UNKNOWN", this.title);
83 }
84
85 public WitnessTemplate(Entity witness, WrapperService om, boolean useRomanization) {
86 this.init(witness, om, false, useRomanization);
87 }
88
89 public WitnessTemplate(Entity witness, WrapperService om, boolean extended, boolean useRomanization) {
90 this.init(witness, om, extended, useRomanization);
91 }
92
93 private void init(Entity witness, WrapperService om, boolean extended, boolean useRomanization) {
94 // this.referenceList = new ArrayList<String>();
95 this.ownedByMap = new HashMap<String, String>();
96 this.readByMap = new HashMap<String, String>();
97 this.wasStudiedByList = new ArrayList<String>();
98
99 this.useRomanization = useRomanization;
100
101 try {
102 if (witness != null) {
103 this.privacity = witness.getPrivacity();
104
105 this.id = witness.getId();
106 this.ov = (useRomanization) ? RomanizationLoC.convert(witness.getOwnValue()) : witness.getOwnValue();
107
108 if (StringUtils.isEmpty(witness.getStatus())) {
109 this.status = ApplicationBean.STATUS_NOT_CHECKED;
110 } else {
111 this.status = witness.getStatus();
112 }
113
114 Attribute att0 = om.getAttributeByName(witness.getId(), "start_page");
115 this.startPage = (att0 != null) ? att0.getValue() : null;
116
117 att0 = om.getAttributeByName(witness.getId(),
118 "end_page");
119 this.endPage = (att0 != null) ? att0.getValue() : null;
120
121 att0 = om.getAttributeByName(witness.getId(),
122 "folios");
123 this.folios = (att0 != null) ? att0.getValue() : null;
124
125 att0 = om.getAttributeByName(witness.getId(),
126 "ahlwardt_no");
127 this.ahlwardtNo = (att0 != null) ? att0.getValue() : null;
128
129 att0 = om.getAttributeByName(witness.getId(), "colophon");
130 this.colophon = (att0 != null) ? att0.getValue() : null;
131
132 att0 = om.getAttributeByName(witness.getId(), "page_dimensions");
133 this.page_dimensions = (att0 != null) ? att0.getValue() : null;
134
135 att0 = om.getAttributeByName(witness.getId(), "written_area_dimensions");
136 this.written_area_dimensions = (att0 != null) ? att0.getValue() : null;
137
138 att0 = om.getAttributeByName(witness.getId(), "lines_per_page");
139 this.lines_per_page = (att0 != null) ? att0.getValue() : null;
140
141 att0 = om.getAttributeByName(witness.getId(), "page_layout");
142 this.page_layout = (att0 != null) ? att0.getValue() : null;
143
144 att0 = om.getAttributeByName(witness.getId(), "script");
145 this.script = (att0 != null) ? att0.getValue() : null;
146
147 att0 = om.getAttributeByName(witness.getId(), "writing_surface");
148 this.writing_surface = (att0 != null) ? att0.getValue() : null;
149
150 att0 = om.getAttributeByName(witness.getId(), "creation_date");
151 Calendar creationDate0 = AbstractISMIBean.updateCalendar(att0);
152 this.creationDate = creationDate0.getCalendarAsHtml();
153
154 if(extended){
155 Attribute incipit = om.getAttributeByName(witness.getId(),
156 "incipit");
157 this.incipit = (incipit != null) ? incipit.getValue() : null;
158
159 Attribute explicit = om.getAttributeByName(witness.getId(),
160 "explicit");
161 this.explicit = (explicit != null) ? explicit.getValue() : null;
162 }
163
164 Attribute table_of_contents = om.getAttributeByName(
165 witness.getId(), "table_of_contents");
166 this.tableOfContents = (table_of_contents != null) ? table_of_contents
167 .getValue() : null;
168
169 Attribute notes_on_title_author = om.getAttributeByName(
170 witness.getId(), "notes_on_title_author");
171 if (notes_on_title_author != null) {
172 this.notesOnTitleAuthor = notes_on_title_author.getValue();
173 }
174
175 Attribute notes_on_collation_and_corrections = om
176 .getAttributeByName(witness.getId(),
177 "notes_on_collation_and_corrections");
178 if (notes_on_collation_and_corrections != null) {
179 this.notesOnCollationAndCorrections = notes_on_collation_and_corrections
180 .getValue();
181 }
182
183 Attribute notes_on_ownership = om.getAttributeByName(
184 witness.getId(), "notes_on_ownership");
185 if (notes_on_ownership != null) {
186 this.notesOnOwnership = notes_on_ownership.getValue();
187 }
188
189 att0 = om.getAttributeByName(witness.getId(), "notes");
190 this.notes = (att0 != null) ? att0.getValue() : null;
191
192 List<Entity> list0 = om.getTargetsForSourceRelation(witness.getId(), "is_exemplar_of", "TEXT", 1);
193 if (list0.size() > 0) {
194 this.title = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue();
195 this.titleId = list0.get(0).getId();
196 att0 = om.getAttributeByName(titleId, "full_title");
197 this.fullTitle = (att0 != null) ? att0.getOwnValue() : null;
198 this.fullTitle = (useRomanization) ? RomanizationLoC.convert(fullTitle) : fullTitle;
199
200 att0 = om.getAttributeByName(titleId, "full_title_translit");
201 if(att0 != null){
202 this.fullTitleTranslit = (useRomanization) ? RomanizationLoC.convert(att0.getOwnValue()) : att0.getOwnValue();
203 }
204
205 List<Entity> list1 = om.getTargetsForSourceRelation(this.titleId, "was_created_by", "PERSON", 1);
206 if(list1.size() > 0){
207 Entity author = list1.get(0);
208 att0 = om.getAttributeByName(author.getId(), "name");
209 this.authorName = (att0 == null) ? null : att0.getValue();
210 this.authorName = (useRomanization) ? RomanizationLoC.convert(authorName) : authorName;
211 att0 = om.getAttributeByName(author.getId(), "name_translit");
212 if(att0 != null){
213 this.authorNameTranslit = (useRomanization) ? RomanizationLoC.convert(att0.getValue()) : att0.getValue();
214 }
215 }
216
217 if(extended){
218 //Attribute subject = om.getAttributeByName(witness.getId(), "subject");
219 list0 = om.getTargetsForSourceRelation(this.titleId, "has_subject", "SUBJECT", 1);
220 this.subject = (!list0.isEmpty()) ? list0.get(0).getOwnValue() : null;
221
222 }
223 }
224
225 list0 = om.getTargetsForSourceRelation(witness, "has_author_written_as", "ALIAS", 1);
226 if(list0.size() > 0){
227 this.authorAsWrittenInWitness = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue();
228 }
229
230 list0 = om.getTargetsForSourceRelation(witness, "has_title_written_as", "ALIAS", 1);
231 if(list0.size() > 0){
232 this.titleAsWrittenInWitness = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue();
233 }
234
235 list0 = om.getTargetsForSourceRelation(witness, "was_copied_by", "PERSON", 1);
236 if(list0.size() > 0){
237 this.copyist = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue();
238 }
239
240 list0 = om.getTargetsForSourceRelation(witness, "was_copied_in", "PLACE", 1);
241 this.placeOfCopying = (list0.size() > 0) ? list0.get(0).getOwnValue() : null;
242
243
244 list0 = om.getTargetsForSourceRelation(witness, "was_studied_by", "PERSON", 1);
245 for(Entity ent : list0){
246 this.wasStudiedByList.add((useRomanization) ? RomanizationLoC.convert(ent.getOwnValue()) : ent.getOwnValue());
247 }
248
249 List<Entity> list = om.getTargetsForSourceRelation(
250 witness.getId(), "is_part_of", "CODEX", 1);
251 if (list.size() > 0) {
252 Entity codex = list.get(0);
253
254 Attribute att = om.getAttributeByName(codex.getId(),
255 "identifier");
256 if (att != null && StringUtils.isNotEmpty(att.getValue())) {
257 this.codex = att.getValue();
258 }
259
260 for (Relation rel : om.getSourceRelations(codex,
261 "owned_by", "PERSON", -1)) {
262 String date = (rel.getAttributeByName("date") != null) ? new Calendar(
263 rel.getAttributeByName("date").getOwnValue())
264 .getCalendarAsHtml() : "";
265 String ov = om.getEntityById(rel.getTargetId()).getOwnValue();
266 String ownedLabel = (useRomanization) ? RomanizationLoC.convert(ov) : ov;
267 this.ownedByMap.put(ownedLabel, date);
268 }
269
270 for (Relation rel : om.getSourceRelations(codex, "read_by",
271 "PERSON", -1)) {
272 String date = (rel.getAttributeByName("date") != null) ? new Calendar(
273 rel.getAttributeByName("date").getOwnValue())
274 .getCalendarAsHtml() : "";
275 String ov = om.getEntityById(rel.getTargetId()).getOwnValue();
276 String readerLabel = (useRomanization) ? RomanizationLoC.convert(ov) : ov;
277 this.readByMap.put(readerLabel, date);
278 }
279
280 list = om.getTargetsForSourceRelation(codex.getId(),
281 "is_part_of", "COLLECTION", 1);
282 if (list.size() > 0) {
283 Entity collection = list.get(0);
284 this.collection = collection.getOwnValue();
285
286 list = om.getTargetsForSourceRelation(
287 collection.getId(), "is_part_of", "REPOSITORY",
288 1);
289
290 if (list.size() > 0) {
291 Entity repository = list.get(0);
292 this.repository = repository.getOwnValue();
293
294 list = om.getTargetsForSourceRelation(
295 repository.getId(), "is_in", "PLACE", 1);
296
297 if (list.size() > 0) {
298 Entity city = list.get(0);
299 this.city = city.getOwnValue();
300
301 list = om.getTargetsForSourceRelation(
302 city.getId(), "is_part_of", "PLACE", 1);
303 if (list.size() > 0) {
304 Entity country = list.get(0);
305 this.country = country.getOwnValue();
306 }
307 }
308 }
309 }
310 }
311
312 list0 = om.getSourcesForTargetRelation(witness,
313 "is_reference_of", "REFERENCE", -1);
314 for (Entity ref : list0) {
315 System.out.println("### REF= " + ref.getId());
316 this.refEntityList.add(om.getEntityContent(ref));
317 }
318 }
319
320 this.loadRefernces();
321 } catch (Exception e) {
322 logger.error(e.getMessage(), e);
323 }
324 }
325
326 public String getPrivacity() {
327 return privacity;
328 }
329
330 public String getStatus() {
331 return status;
332 }
333
334 public String getTableOfContents() {
335 return tableOfContents;
336 }
337
338 public String getNotesOnTitleAuthor() {
339 return notesOnTitleAuthor;
340 }
341
342 public String getNotesOnCollationAndCorrections() {
343 return notesOnCollationAndCorrections;
344 }
345
346 public String getNotesOnOwnership() {
347 return notesOnOwnership;
348 }
349
350 public String getNotes() {
351 return notes;
352 }
353
354 public String getCodex() {
355 return codex;
356 }
357
358 public String getCollection() {
359 return collection;
360 }
361
362 public String getRepository() {
363 return repository;
364 }
365
366 public String getCity() {
367 return city;
368 }
369
370 public String getCountry() {
371 return country;
372 }
373
374 /*
375 * public List<String> getReferenceList() { return referenceList; }
376 */
377
378 public Map<String, String> getOwnedByMap() {
379 return ownedByMap;
380 }
381
382 public Map<String, String> getReadByMap() {
383 return readByMap;
384 }
385
386 public Collection<String> getOwnedByList() {
387 return ownedByMap.keySet();
388 }
389
390 public Collection<String> getReadByList() {
391 return readByMap.keySet();
392 }
393
394 public static Logger getLogger() {
395 return logger;
396 }
397
398 public String getStartPage() {
399 return startPage;
400 }
401
402 public String getEndPage() {
403 return endPage;
404 }
405
406 public Long getId() {
407 return id;
408 }
409
410 public String getOv() {
411 return ov;
412 }
413
414 public String getTitle() {
415 return this.title;
416 }
417
418 public Long getTitleId() {
419 return this.titleId;
420 }
421
422 public String getFolios() {
423 return this.folios;
424 }
425
426 public boolean hasTitle(){
427 return this.titleId != null;
428 }
429
430 // 40b-49b
431 // 104b-111b
432 public int compareTo(WitnessTemplate other) {
433 // return this.empId - o.empId ;
434
435 if (other == null)
436 return -1;
437 if (StringUtils.isEmpty(this.folios)
438 && StringUtils.isEmpty(other.folios))
439 return this.title.compareTo(other.title);
440 if (StringUtils.isEmpty(this.folios))
441 return 1;
442 if (StringUtils.isEmpty(other.folios))
443 return -1;
444
445 try {
446 return NaturalOrderComparator.compare(this.folios, other.folios);
447 } catch (Exception e) {
448 logger.error(e.getMessage(), e);
449 }
450
451 return 0;
452 }
453
454 }