annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/BiographyBean.java @ 111:22a18bfc66b0

new completion that uses ALIASes: AbstractListenerObject. was_copied_in in WITNESS form can use PLACE aliases now. some cleanup.
author casties
date Fri, 09 Dec 2016 21:18:27 +0100
parents 2e911857a759
children
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.util.ArrayList;
jurzua
parents:
diff changeset
4 import java.util.Collection;
jurzua
parents:
diff changeset
5 import java.util.Collections;
jurzua
parents:
diff changeset
6 import java.util.HashMap;
jurzua
parents:
diff changeset
7 import java.util.List;
jurzua
parents:
diff changeset
8 import java.util.Map;
jurzua
parents:
diff changeset
9
jurzua
parents:
diff changeset
10 import org.mpi.openmind.cache.WrapperService;
jurzua
parents:
diff changeset
11 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
12 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.utils.EntitySortByNormalizedOwnValue;
jurzua
parents:
diff changeset
14
jurzua
parents:
diff changeset
15 public class BiographyBean extends AbstractBean{
jurzua
parents:
diff changeset
16
jurzua
parents:
diff changeset
17 private boolean dirty = true;
jurzua
parents:
diff changeset
18
jurzua
parents:
diff changeset
19 private Map<String, List<Biography>> biographyMap;
jurzua
parents:
diff changeset
20 private List<String> indexList = null;
jurzua
parents:
diff changeset
21
jurzua
parents:
diff changeset
22 public BiographyBean(){
jurzua
parents:
diff changeset
23 }
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 private void load(){
jurzua
parents:
diff changeset
26 this.dirty = false;
jurzua
parents:
diff changeset
27 this.biographyMap = new HashMap<String, List<Biography>>();
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29
jurzua
parents:
diff changeset
30
jurzua
parents:
diff changeset
31 List<Entity> rs = getAppBean().getWrapper().getEntitiesByAtt("PERSON", "url", "http://islamsci.mcgill.ca/RASI/BEA", -1, true);
jurzua
parents:
diff changeset
32
jurzua
parents:
diff changeset
33 for(Entity ent : rs){
jurzua
parents:
diff changeset
34 String normalizedOv = ent.getNormalizedOwnValue();
jurzua
parents:
diff changeset
35 String index = new String(normalizedOv.charAt(0) + "");
jurzua
parents:
diff changeset
36 index = index.toUpperCase();
jurzua
parents:
diff changeset
37
jurzua
parents:
diff changeset
38 if(!this.biographyMap.containsKey(index)){
jurzua
parents:
diff changeset
39 this.biographyMap.put(index, new ArrayList<BiographyBean.Biography>());
jurzua
parents:
diff changeset
40 }
jurzua
parents:
diff changeset
41 this.biographyMap.get(index).add(new Biography(ent, getAppBean().getWrapper()));
jurzua
parents:
diff changeset
42 }
jurzua
parents:
diff changeset
43
jurzua
parents:
diff changeset
44 for(String index : this.biographyMap.keySet()){
jurzua
parents:
diff changeset
45 Collections.sort(this.biographyMap.get(index));
jurzua
parents:
diff changeset
46 }
jurzua
parents:
diff changeset
47
jurzua
parents:
diff changeset
48 this.indexList = new ArrayList<String>(this.biographyMap.keySet());
jurzua
parents:
diff changeset
49 Collections.sort(indexList);
jurzua
parents:
diff changeset
50 }
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 public List<String> getIndexList(){
jurzua
parents:
diff changeset
53 if(dirty)
jurzua
parents:
diff changeset
54 this.load();
jurzua
parents:
diff changeset
55 return this.indexList;
jurzua
parents:
diff changeset
56 }
jurzua
parents:
diff changeset
57
jurzua
parents:
diff changeset
58 public Map<String, List<Biography>> getBiographyMap(){
jurzua
parents:
diff changeset
59 if(dirty)
jurzua
parents:
diff changeset
60 this.load();
jurzua
parents:
diff changeset
61 return this.biographyMap;
jurzua
parents:
diff changeset
62 }
jurzua
parents:
diff changeset
63
jurzua
parents:
diff changeset
64 public void makeDirty(){
jurzua
parents:
diff changeset
65 this.dirty = true;
jurzua
parents:
diff changeset
66 }
jurzua
parents:
diff changeset
67
jurzua
parents:
diff changeset
68 public class Biography implements Comparable<Biography>{
jurzua
parents:
diff changeset
69 private Long personId;
jurzua
parents:
diff changeset
70 private String biographyUrl;
jurzua
parents:
diff changeset
71 private String label;
jurzua
parents:
diff changeset
72 private String normalizedLabel;
jurzua
parents:
diff changeset
73
jurzua
parents:
diff changeset
74 public Biography(Entity person, WrapperService wrapper){
jurzua
parents:
diff changeset
75 Attribute att = wrapper.getAttributeByName(person.getId(), "url");
jurzua
parents:
diff changeset
76
jurzua
parents:
diff changeset
77 this.label = person.getOwnValue();
jurzua
parents:
diff changeset
78 this.personId = person.getId();
jurzua
parents:
diff changeset
79 this.biographyUrl = att.getOwnValue();
jurzua
parents:
diff changeset
80 this.normalizedLabel = person.getNormalizedOwnValue();
jurzua
parents:
diff changeset
81 }
jurzua
parents:
diff changeset
82
jurzua
parents:
diff changeset
83 public Long getPersonId() {
jurzua
parents:
diff changeset
84 return personId;
jurzua
parents:
diff changeset
85 }
jurzua
parents:
diff changeset
86 public String getBiographyUrl() {
jurzua
parents:
diff changeset
87 return biographyUrl;
jurzua
parents:
diff changeset
88 }
jurzua
parents:
diff changeset
89 public String getLabel() {
jurzua
parents:
diff changeset
90 return label;
jurzua
parents:
diff changeset
91 }
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 public int compareTo(Biography o) {
jurzua
parents:
diff changeset
94 return this.normalizedLabel.compareTo(o.normalizedLabel);
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96 }
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 @Override
jurzua
parents:
diff changeset
99 public String toString(){
jurzua
parents:
diff changeset
100 return "[" + this.personId + "] " + this.label + " - " + this.biographyUrl;
jurzua
parents:
diff changeset
101 }
jurzua
parents:
diff changeset
102 }
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104 }