# HG changeset patch # User Robert Casties # Date 1527794745 -7200 # Node ID 8604b368ec198f25d0ec2538bdf039363a5c030d # Parent 0b5d02012299e9f00a09895d087b2c2173288ddd still more work on publicByAuthor feature. diff -r 0b5d02012299 -r 8604b368ec19 src/main/java/de/mpiwg/itgroup/ismi/merge/PublicByAuthorBean.java --- a/src/main/java/de/mpiwg/itgroup/ismi/merge/PublicByAuthorBean.java Thu May 31 20:26:10 2018 +0200 +++ b/src/main/java/de/mpiwg/itgroup/ismi/merge/PublicByAuthorBean.java Thu May 31 21:25:45 2018 +0200 @@ -2,10 +2,11 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.faces.event.ActionEvent; -import javax.faces.event.ValueChangeEvent; import org.apache.log4j.Logger; import org.mpi.openmind.repository.bo.Entity; @@ -26,7 +27,8 @@ protected Entity selectedPerson; protected List selectedPersonTexts; - protected List selectedPersonSubjects; + protected List selectedPersonSubjects; + protected Map> selectedPersonSubjectMap; private EntityRepositoryBean browseBean; @@ -43,13 +45,14 @@ browseBean.setObjectClass("PERSON"); selectedPersonTexts = new ArrayList(); + selectedPersonSubjectMap = new HashMap>(); } public void listenerAuthorIdSearch(ActionEvent event) { setSelectedPersonById(); } - private void setSelectedPersonById() { + protected void setSelectedPersonById() { Entity ent = getWrapper().getEntityById(selectedPersonId); if (ent != null) { ent = getWrapper().getEntityContent(ent); @@ -63,11 +66,45 @@ public void updateSelectedPerson() { // load all texts by this author selectedPersonTexts = new ArrayList(); + selectedPersonSubjectMap = new HashMap>(); List textRels = selectedPerson.getTargetRelations("was_created_by", "TEXT"); for (Relation rel : textRels) { Long textID = rel.getSourceId(); + // get text Entity text = getWrapper().getEntityByIdWithContent(textID); selectedPersonTexts.add(text); + // get subject + List subjectRels = text.getSourceRelations("has_subject", "SUBJECT"); + if (subjectRels.isEmpty()) { + String subject = "NO SUBJECT"; + List texts = selectedPersonSubjectMap.get(subject); + if (texts == null) { + texts = new ArrayList(); + } + // add text to list + texts.add(text); + // add list to subject map + selectedPersonSubjectMap.put(subject, texts); + + } else { + for (Relation subjectRel : subjectRels) { + Long subjectId = subjectRel.getTargetId(); + Entity subject = getWrapper().getEntityByIdWithContent(subjectId); + List texts = selectedPersonSubjectMap.get(subject.getOwnValue()); + if (texts == null) { + texts = new ArrayList(); + } + // add text to list + texts.add(text); + // add list to subject map + selectedPersonSubjectMap.put(subject.getOwnValue(), texts); + } + } + } + // update list of subjects + selectedPersonSubjects = new ArrayList(); + for (String sub : selectedPersonSubjectMap.keySet()) { + selectedPersonSubjects.add(sub); } } @@ -145,8 +182,8 @@ /** * @return the selectedPersonSubjects */ - public List getSelectedPersonSubjects() { - return selectedPersonSubjects; + public Map> getSelectedPersonSubjectMap() { + return selectedPersonSubjectMap; } /** @@ -156,4 +193,11 @@ this.selectedPersonId = selectedPersonId; } + /** + * @return the selectedPersonSubjects + */ + public List getSelectedPersonSubjects() { + return selectedPersonSubjects; + } + } diff -r 0b5d02012299 -r 8604b368ec19 src/main/webapp/clean/components/publicShowSubjects.xhtml --- a/src/main/webapp/clean/components/publicShowSubjects.xhtml Thu May 31 20:26:10 2018 +0200 +++ b/src/main/webapp/clean/components/publicShowSubjects.xhtml Thu May 31 21:25:45 2018 +0200 @@ -9,8 +9,8 @@ - - + + - + - + - - -
#{titleItem.ownValue}
-
-
+ style="margin-left: auto; margin-right: auto; text-align: center; width: 100%;"> + + +
#{subject}
+ + +
#{text.ownValue}
+
+
+
+
- - + +
diff -r 0b5d02012299 -r 8604b368ec19 src/main/webapp/clean/publicByAuthor.xhtml --- a/src/main/webapp/clean/publicByAuthor.xhtml Thu May 31 20:26:10 2018 +0200 +++ b/src/main/webapp/clean/publicByAuthor.xhtml Thu May 31 21:25:45 2018 +0200 @@ -28,7 +28,7 @@ - +