Mercurial > hg > ismi-richfaces
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/itgroup/ismi/utils/templates/WitnessTemplate.java Wed Oct 29 14:00:28 2014 +0000 @@ -0,0 +1,454 @@ +package de.mpiwg.itgroup.ismi.utils.templates; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.mpi.openmind.cache.WrapperService; +import org.mpi.openmind.repository.bo.Attribute; +import org.mpi.openmind.repository.bo.Entity; +import org.mpi.openmind.repository.bo.Relation; +import org.mpi.openmind.repository.services.PersistenceService; +import org.mpi.openmind.repository.utils.RomanizationLoC; + +import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean; +import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean; +import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar; +import de.mpiwg.itgroup.ismi.utils.NaturalOrderComparator; + +public class WitnessTemplate extends AbstractTemplate implements + Comparable<WitnessTemplate> { + + private static final long serialVersionUID = -8829977715724255324L; + + private static Logger logger = Logger.getLogger(WitnessTemplate.class); + + public String privacity; + public Long id; + public String ov; + public String title; + public Long titleId; + public String startPage; + public String endPage; + public String status; + public String tableOfContents; + public String notesOnTitleAuthor; + public String notesOnCollationAndCorrections; + public String notesOnOwnership; + public String notes; + public String codex; + public String collection; + public String repository; + public String city; + public String country; + public String folios; + public String ahlwardtNo; + public String colophon; + + public String incipit; + public String explicit; + public String subject; + + // public List<String> referenceList; + public Map<String, String> ownedByMap; + public Map<String, String> readByMap; + + //extras fields used by the json interface + public String titleAsWrittenInWitness; + public String authorAsWrittenInWitness; + public String copyist; + public String placeOfCopying; + + public String page_dimensions; + public String written_area_dimensions; + public String lines_per_page; + public String page_layout; + public String script; + public String writing_surface; + public List<String> wasStudiedByList; + public String fullTitle; + public String fullTitleTranslit; + public String authorName; + public String authorNameTranslit; + public String creationDate; + + public boolean useRomanization = false; + + public boolean isUnknown() { + return StringUtils.equals("UNKNOWN", this.title); + } + + public WitnessTemplate(Entity witness, WrapperService om, boolean useRomanization) { + this.init(witness, om, false, useRomanization); + } + + public WitnessTemplate(Entity witness, WrapperService om, boolean extended, boolean useRomanization) { + this.init(witness, om, extended, useRomanization); + } + + private void init(Entity witness, WrapperService om, boolean extended, boolean useRomanization) { + // this.referenceList = new ArrayList<String>(); + this.ownedByMap = new HashMap<String, String>(); + this.readByMap = new HashMap<String, String>(); + this.wasStudiedByList = new ArrayList<String>(); + + this.useRomanization = useRomanization; + + try { + if (witness != null) { + this.privacity = witness.getPrivacity(); + + this.id = witness.getId(); + this.ov = (useRomanization) ? RomanizationLoC.convert(witness.getOwnValue()) : witness.getOwnValue(); + + if (StringUtils.isEmpty(witness.getStatus())) { + this.status = ApplicationBean.STATUS_NOT_CHECKED; + } else { + this.status = witness.getStatus(); + } + + Attribute att0 = om.getAttributeByName(witness.getId(), "start_page"); + this.startPage = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), + "end_page"); + this.endPage = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), + "folios"); + this.folios = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), + "ahlwardt_no"); + this.ahlwardtNo = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "colophon"); + this.colophon = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "page_dimensions"); + this.page_dimensions = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "written_area_dimensions"); + this.written_area_dimensions = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "lines_per_page"); + this.lines_per_page = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "page_layout"); + this.page_layout = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "script"); + this.script = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "writing_surface"); + this.writing_surface = (att0 != null) ? att0.getValue() : null; + + att0 = om.getAttributeByName(witness.getId(), "creation_date"); + Calendar creationDate0 = AbstractISMIBean.updateCalendar(att0); + this.creationDate = creationDate0.getCalendarAsHtml(); + + if(extended){ + Attribute incipit = om.getAttributeByName(witness.getId(), + "incipit"); + this.incipit = (incipit != null) ? incipit.getValue() : null; + + Attribute explicit = om.getAttributeByName(witness.getId(), + "explicit"); + this.explicit = (explicit != null) ? explicit.getValue() : null; + } + + Attribute table_of_contents = om.getAttributeByName( + witness.getId(), "table_of_contents"); + this.tableOfContents = (table_of_contents != null) ? table_of_contents + .getValue() : null; + + Attribute notes_on_title_author = om.getAttributeByName( + witness.getId(), "notes_on_title_author"); + if (notes_on_title_author != null) { + this.notesOnTitleAuthor = notes_on_title_author.getValue(); + } + + Attribute notes_on_collation_and_corrections = om + .getAttributeByName(witness.getId(), + "notes_on_collation_and_corrections"); + if (notes_on_collation_and_corrections != null) { + this.notesOnCollationAndCorrections = notes_on_collation_and_corrections + .getValue(); + } + + Attribute notes_on_ownership = om.getAttributeByName( + witness.getId(), "notes_on_ownership"); + if (notes_on_ownership != null) { + this.notesOnOwnership = notes_on_ownership.getValue(); + } + + att0 = om.getAttributeByName(witness.getId(), "notes"); + this.notes = (att0 != null) ? att0.getValue() : null; + + List<Entity> list0 = om.getTargetsForSourceRelation(witness.getId(), "is_exemplar_of", "TEXT", 1); + if (list0.size() > 0) { + this.title = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue(); + this.titleId = list0.get(0).getId(); + att0 = om.getAttributeByName(titleId, "full_title"); + this.fullTitle = (att0 != null) ? att0.getOwnValue() : null; + this.fullTitle = (useRomanization) ? RomanizationLoC.convert(fullTitle) : fullTitle; + + att0 = om.getAttributeByName(titleId, "full_title_translit"); + if(att0 != null){ + this.fullTitleTranslit = (useRomanization) ? RomanizationLoC.convert(att0.getOwnValue()) : att0.getOwnValue(); + } + + List<Entity> list1 = om.getTargetsForSourceRelation(this.titleId, "was_created_by", "PERSON", 1); + if(list1.size() > 0){ + Entity author = list1.get(0); + att0 = om.getAttributeByName(author.getId(), "name"); + this.authorName = (att0 == null) ? null : att0.getValue(); + this.authorName = (useRomanization) ? RomanizationLoC.convert(authorName) : authorName; + att0 = om.getAttributeByName(author.getId(), "name_translit"); + if(att0 != null){ + this.authorNameTranslit = (useRomanization) ? RomanizationLoC.convert(att0.getValue()) : att0.getValue(); + } + } + + if(extended){ + //Attribute subject = om.getAttributeByName(witness.getId(), "subject"); + list0 = om.getTargetsForSourceRelation(this.titleId, "has_subject", "SUBJECT", 1); + this.subject = (!list0.isEmpty()) ? list0.get(0).getOwnValue() : null; + + } + } + + list0 = om.getTargetsForSourceRelation(witness, "has_author_written_as", "ALIAS", 1); + if(list0.size() > 0){ + this.authorAsWrittenInWitness = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue(); + } + + list0 = om.getTargetsForSourceRelation(witness, "has_title_written_as", "ALIAS", 1); + if(list0.size() > 0){ + this.titleAsWrittenInWitness = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue(); + } + + list0 = om.getTargetsForSourceRelation(witness, "was_copied_by", "PERSON", 1); + if(list0.size() > 0){ + this.copyist = (useRomanization) ? RomanizationLoC.convert(list0.get(0).getOwnValue()) : list0.get(0).getOwnValue(); + } + + list0 = om.getTargetsForSourceRelation(witness, "was_copied_in", "PLACE", 1); + this.placeOfCopying = (list0.size() > 0) ? list0.get(0).getOwnValue() : null; + + + list0 = om.getTargetsForSourceRelation(witness, "was_studied_by", "PERSON", 1); + for(Entity ent : list0){ + this.wasStudiedByList.add((useRomanization) ? RomanizationLoC.convert(ent.getOwnValue()) : ent.getOwnValue()); + } + + List<Entity> list = om.getTargetsForSourceRelation( + witness.getId(), "is_part_of", "CODEX", 1); + if (list.size() > 0) { + Entity codex = list.get(0); + + Attribute att = om.getAttributeByName(codex.getId(), + "identifier"); + if (att != null && StringUtils.isNotEmpty(att.getValue())) { + this.codex = att.getValue(); + } + + for (Relation rel : om.getSourceRelations(codex, + "owned_by", "PERSON", -1)) { + String date = (rel.getAttributeByName("date") != null) ? new Calendar( + rel.getAttributeByName("date").getOwnValue()) + .getCalendarAsHtml() : ""; + String ov = om.getEntityById(rel.getTargetId()).getOwnValue(); + String ownedLabel = (useRomanization) ? RomanizationLoC.convert(ov) : ov; + this.ownedByMap.put(ownedLabel, date); + } + + for (Relation rel : om.getSourceRelations(codex, "read_by", + "PERSON", -1)) { + String date = (rel.getAttributeByName("date") != null) ? new Calendar( + rel.getAttributeByName("date").getOwnValue()) + .getCalendarAsHtml() : ""; + String ov = om.getEntityById(rel.getTargetId()).getOwnValue(); + String readerLabel = (useRomanization) ? RomanizationLoC.convert(ov) : ov; + this.readByMap.put(readerLabel, date); + } + + list = om.getTargetsForSourceRelation(codex.getId(), + "is_part_of", "COLLECTION", 1); + if (list.size() > 0) { + Entity collection = list.get(0); + this.collection = collection.getOwnValue(); + + list = om.getTargetsForSourceRelation( + collection.getId(), "is_part_of", "REPOSITORY", + 1); + + if (list.size() > 0) { + Entity repository = list.get(0); + this.repository = repository.getOwnValue(); + + list = om.getTargetsForSourceRelation( + repository.getId(), "is_in", "PLACE", 1); + + if (list.size() > 0) { + Entity city = list.get(0); + this.city = city.getOwnValue(); + + list = om.getTargetsForSourceRelation( + city.getId(), "is_part_of", "PLACE", 1); + if (list.size() > 0) { + Entity country = list.get(0); + this.country = country.getOwnValue(); + } + } + } + } + } + + list0 = om.getSourcesForTargetRelation(witness, + "is_reference_of", "REFERENCE", -1); + for (Entity ref : list0) { + System.out.println("### REF= " + ref.getId()); + this.refEntityList.add(om.getEntityContent(ref)); + } + } + + this.loadRefernces(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + public String getPrivacity() { + return privacity; + } + + public String getStatus() { + return status; + } + + public String getTableOfContents() { + return tableOfContents; + } + + public String getNotesOnTitleAuthor() { + return notesOnTitleAuthor; + } + + public String getNotesOnCollationAndCorrections() { + return notesOnCollationAndCorrections; + } + + public String getNotesOnOwnership() { + return notesOnOwnership; + } + + public String getNotes() { + return notes; + } + + public String getCodex() { + return codex; + } + + public String getCollection() { + return collection; + } + + public String getRepository() { + return repository; + } + + public String getCity() { + return city; + } + + public String getCountry() { + return country; + } + + /* + * public List<String> getReferenceList() { return referenceList; } + */ + + public Map<String, String> getOwnedByMap() { + return ownedByMap; + } + + public Map<String, String> getReadByMap() { + return readByMap; + } + + public Collection<String> getOwnedByList() { + return ownedByMap.keySet(); + } + + public Collection<String> getReadByList() { + return readByMap.keySet(); + } + + public static Logger getLogger() { + return logger; + } + + public String getStartPage() { + return startPage; + } + + public String getEndPage() { + return endPage; + } + + public Long getId() { + return id; + } + + public String getOv() { + return ov; + } + + public String getTitle() { + return this.title; + } + + public Long getTitleId() { + return this.titleId; + } + + public String getFolios() { + return this.folios; + } + + public boolean hasTitle(){ + return this.titleId != null; + } + + // 40b-49b + // 104b-111b + public int compareTo(WitnessTemplate other) { + // return this.empId - o.empId ; + + if (other == null) + return -1; + if (StringUtils.isEmpty(this.folios) + && StringUtils.isEmpty(other.folios)) + return this.title.compareTo(other.title); + if (StringUtils.isEmpty(this.folios)) + return 1; + if (StringUtils.isEmpty(other.folios)) + return -1; + + try { + return NaturalOrderComparator.compare(this.folios, other.folios); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + + return 0; + } + +}