annotate src/main/java/de/mpiwg/itgroup/ismi/search/beans/CodexOwnershipQuery.java @ 98:9b02c9af49b0

add file upload to import merge.
author casties
date Fri, 28 Oct 2016 19:06:21 +0200
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.search.beans;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.io.Serializable;
jurzua
parents:
diff changeset
4 import java.util.ArrayList;
jurzua
parents:
diff changeset
5 import java.util.List;
jurzua
parents:
diff changeset
6
jurzua
parents:
diff changeset
7 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
8 import org.mpi.openmind.cache.WrapperService;
jurzua
parents:
diff changeset
9 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
10 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
11 import org.mpi.openmind.search.utils.ResultEntry;
jurzua
parents:
diff changeset
12 import org.mpi.openmind.search.utils.SAttributeMultipleName;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.search.utils.SEntity;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.search.utils.SRelation;
jurzua
parents:
diff changeset
15
jurzua
parents:
diff changeset
16 import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean;
jurzua
parents:
diff changeset
17
jurzua
parents:
diff changeset
18 public class CodexOwnershipQuery extends AbstractQuery{
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 private static final long serialVersionUID = 5481872257359678512L;
jurzua
parents:
diff changeset
21
jurzua
parents:
diff changeset
22 private String personName;
jurzua
parents:
diff changeset
23 private String codexShelfMark;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 public CodexOwnershipQuery(ApplicationBean appBean){
jurzua
parents:
diff changeset
26 super(appBean);
jurzua
parents:
diff changeset
27 this.exportUrlRoot = ApplicationBean.urlISMIExportServiceAuthors;
jurzua
parents:
diff changeset
28 }
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.rs = null;
jurzua
parents:
diff changeset
34 this.personName = null;
jurzua
parents:
diff changeset
35 this.codexShelfMark = null;
jurzua
parents:
diff changeset
36 }
jurzua
parents:
diff changeset
37
jurzua
parents:
diff changeset
38 @Override
jurzua
parents:
diff changeset
39 protected void search() throws Exception{
jurzua
parents:
diff changeset
40
jurzua
parents:
diff changeset
41 List<Relation> wasOwnerByList = appBean.getWrapper().getRelation("owned_by", "CODEX", "PERSON");
jurzua
parents:
diff changeset
42 List<Long> personCandidates = null;
jurzua
parents:
diff changeset
43 List<Long> codexCadidates = null;
jurzua
parents:
diff changeset
44
jurzua
parents:
diff changeset
45 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
46 personCandidates = getPersonCadidates(personName);
jurzua
parents:
diff changeset
47 }
jurzua
parents:
diff changeset
48 if(StringUtils.isNotEmpty(codexShelfMark)){
jurzua
parents:
diff changeset
49 codexCadidates = getCodexCadidates(codexShelfMark);
jurzua
parents:
diff changeset
50 }
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 rs = this.loadResultSet(wasOwnerByList, personCandidates, codexCadidates);
jurzua
parents:
diff changeset
53
jurzua
parents:
diff changeset
54 /*
jurzua
parents:
diff changeset
55 * TODO there is report for it???
jurzua
parents:
diff changeset
56 List<Long> idLongList = new ArrayList<Long>();
jurzua
parents:
diff changeset
57 for(Object e : rs){
jurzua
parents:
diff changeset
58 Titles4PersonEntry entry = (Titles4PersonEntry)e;
jurzua
parents:
diff changeset
59 if(!idLongList.contains(entry.getPersonId()))
jurzua
parents:
diff changeset
60 idLongList.add(entry.getPersonId());
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62 this.idList = ApplicationBean.generateIdList(idLongList);
jurzua
parents:
diff changeset
63
jurzua
parents:
diff changeset
64 this.exportDirkUrl = ApplicationBean.generateExportURL(exportUrlRoot, idList, "xml");
jurzua
parents:
diff changeset
65 */
jurzua
parents:
diff changeset
66 }
jurzua
parents:
diff changeset
67
jurzua
parents:
diff changeset
68 private List<CodexOwnershipEntry> loadResultSet(List<Relation> wasOwnerByList,
jurzua
parents:
diff changeset
69 List<Long> personCandidates,
jurzua
parents:
diff changeset
70 List<Long> codexCadidates){
jurzua
parents:
diff changeset
71
jurzua
parents:
diff changeset
72 List<CodexOwnershipEntry> list = new ArrayList<CodexOwnershipQuery.CodexOwnershipEntry>();
jurzua
parents:
diff changeset
73
jurzua
parents:
diff changeset
74 if(!wasOwnerByList.isEmpty()){
jurzua
parents:
diff changeset
75 for(Relation rel : wasOwnerByList){
jurzua
parents:
diff changeset
76 if((codexCadidates == null || codexCadidates.contains(rel.getSourceId())) &&
jurzua
parents:
diff changeset
77 (personCandidates == null ||personCandidates.contains(rel.getTargetId()))){
jurzua
parents:
diff changeset
78 list.add(new CodexOwnershipEntry(
jurzua
parents:
diff changeset
79 appBean.getWrapper().getEntityById(rel.getSourceId()), appBean.getWrapper().getEntityById(rel.getTargetId()),
jurzua
parents:
diff changeset
80 appBean.getWrapper()));
jurzua
parents:
diff changeset
81 }
jurzua
parents:
diff changeset
82 }
jurzua
parents:
diff changeset
83 }
jurzua
parents:
diff changeset
84
jurzua
parents:
diff changeset
85 return list;
jurzua
parents:
diff changeset
86 }
jurzua
parents:
diff changeset
87
jurzua
parents:
diff changeset
88
jurzua
parents:
diff changeset
89 public String getPersonName() {
jurzua
parents:
diff changeset
90 return personName;
jurzua
parents:
diff changeset
91 }
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 public void setPersonName(String personName) {
jurzua
parents:
diff changeset
94 this.personName = personName;
jurzua
parents:
diff changeset
95 }
jurzua
parents:
diff changeset
96
jurzua
parents:
diff changeset
97 public String getCodexShelfMark() {
jurzua
parents:
diff changeset
98 return codexShelfMark;
jurzua
parents:
diff changeset
99 }
jurzua
parents:
diff changeset
100
jurzua
parents:
diff changeset
101 public void setCodexShelfMark(String codexShelfMark) {
jurzua
parents:
diff changeset
102 this.codexShelfMark = codexShelfMark;
jurzua
parents:
diff changeset
103 }
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 private List<Long> getPersonCadidates(String personName){
jurzua
parents:
diff changeset
106 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
107
jurzua
parents:
diff changeset
108 //TODO
jurzua
parents:
diff changeset
109 //alias, "is_prime_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
110 //alias, "is_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
111 SEntity person = new SEntity(0, "PERSON");
jurzua
parents:
diff changeset
112 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
113 person.addAtt(new SAttributeMultipleName(personName, "name_translit", "name"));
jurzua
parents:
diff changeset
114 }
jurzua
parents:
diff changeset
115 entFilters.add(person);
jurzua
parents:
diff changeset
116
jurzua
parents:
diff changeset
117 List<Long> idList = new ArrayList<Long>();
jurzua
parents:
diff changeset
118 for(ResultEntry entry : this.appBean.getSS().search(entFilters, new ArrayList<SRelation>())){
jurzua
parents:
diff changeset
119 idList.add(entry.getEntMap().get(0));
jurzua
parents:
diff changeset
120 }
jurzua
parents:
diff changeset
121 return idList;
jurzua
parents:
diff changeset
122 }
jurzua
parents:
diff changeset
123
jurzua
parents:
diff changeset
124 private List<Long> getCodexCadidates(String shelfMark){
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
127
jurzua
parents:
diff changeset
128 SEntity codex = new SEntity(0, "CODEX");
jurzua
parents:
diff changeset
129 if(StringUtils.isNotEmpty(shelfMark)){
jurzua
parents:
diff changeset
130 codex.addAtt(new SAttributeMultipleName(shelfMark, "identifier"));
jurzua
parents:
diff changeset
131 }
jurzua
parents:
diff changeset
132 entFilters.add(codex);
jurzua
parents:
diff changeset
133
jurzua
parents:
diff changeset
134 List<Long> idList = new ArrayList<Long>();
jurzua
parents:
diff changeset
135 for(ResultEntry entry : this.appBean.getSS().search(entFilters, new ArrayList<SRelation>())){
jurzua
parents:
diff changeset
136 idList.add(entry.getEntMap().get(0));
jurzua
parents:
diff changeset
137 }
jurzua
parents:
diff changeset
138 return idList;
jurzua
parents:
diff changeset
139 }
jurzua
parents:
diff changeset
140
jurzua
parents:
diff changeset
141 public class CodexOwnershipEntry implements Serializable{
jurzua
parents:
diff changeset
142
jurzua
parents:
diff changeset
143 private static final long serialVersionUID = -6118835259154299870L;
jurzua
parents:
diff changeset
144
jurzua
parents:
diff changeset
145 private Long personId;
jurzua
parents:
diff changeset
146 private String personOv;
jurzua
parents:
diff changeset
147 private Long codexId;
jurzua
parents:
diff changeset
148 private String codexOv;
jurzua
parents:
diff changeset
149 private String shelfMark;
jurzua
parents:
diff changeset
150 private String collection;
jurzua
parents:
diff changeset
151
jurzua
parents:
diff changeset
152 public CodexOwnershipEntry(Entity codex, Entity person, WrapperService ws){
jurzua
parents:
diff changeset
153 this.personId = person.getId();
jurzua
parents:
diff changeset
154 this.personOv = person.getOwnValue();
jurzua
parents:
diff changeset
155 this.codexId = codex.getId();
jurzua
parents:
diff changeset
156 this.codexOv = codex.getOwnValue();
jurzua
parents:
diff changeset
157 //this.shelfMark = (codex.getAttributeByName("identifier") != null) ? codex.getAttributeByName("identifier").getOwnValue() : null;
jurzua
parents:
diff changeset
158 try{
jurzua
parents:
diff changeset
159 String[] array = this.codexOv.split("_");
jurzua
parents:
diff changeset
160 if(array.length > 0){
jurzua
parents:
diff changeset
161 this.collection = array[0];
jurzua
parents:
diff changeset
162 this.shelfMark = array[1];
jurzua
parents:
diff changeset
163 }
jurzua
parents:
diff changeset
164 }catch (Exception e) {
jurzua
parents:
diff changeset
165 e.printStackTrace();
jurzua
parents:
diff changeset
166 }
jurzua
parents:
diff changeset
167 }
jurzua
parents:
diff changeset
168
jurzua
parents:
diff changeset
169 public Long getPersonId() {
jurzua
parents:
diff changeset
170 return personId;
jurzua
parents:
diff changeset
171 }
jurzua
parents:
diff changeset
172
jurzua
parents:
diff changeset
173 public void setPersonId(Long personId) {
jurzua
parents:
diff changeset
174 this.personId = personId;
jurzua
parents:
diff changeset
175 }
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 public String getPersonOv() {
jurzua
parents:
diff changeset
178 return personOv;
jurzua
parents:
diff changeset
179 }
jurzua
parents:
diff changeset
180
jurzua
parents:
diff changeset
181 public void setPersonOv(String personOv) {
jurzua
parents:
diff changeset
182 this.personOv = personOv;
jurzua
parents:
diff changeset
183 }
jurzua
parents:
diff changeset
184
jurzua
parents:
diff changeset
185 public Long getCodexId() {
jurzua
parents:
diff changeset
186 return codexId;
jurzua
parents:
diff changeset
187 }
jurzua
parents:
diff changeset
188
jurzua
parents:
diff changeset
189 public void setCodexId(Long codexId) {
jurzua
parents:
diff changeset
190 this.codexId = codexId;
jurzua
parents:
diff changeset
191 }
jurzua
parents:
diff changeset
192
jurzua
parents:
diff changeset
193 public String getCodexOv() {
jurzua
parents:
diff changeset
194 return codexOv;
jurzua
parents:
diff changeset
195 }
jurzua
parents:
diff changeset
196
jurzua
parents:
diff changeset
197 public void setCodexOv(String codexOv) {
jurzua
parents:
diff changeset
198 this.codexOv = codexOv;
jurzua
parents:
diff changeset
199 }
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201 public String getShelfMark() {
jurzua
parents:
diff changeset
202 return shelfMark;
jurzua
parents:
diff changeset
203 }
jurzua
parents:
diff changeset
204
jurzua
parents:
diff changeset
205 public void setShelfMark(String shelfMark) {
jurzua
parents:
diff changeset
206 this.shelfMark = shelfMark;
jurzua
parents:
diff changeset
207 }
jurzua
parents:
diff changeset
208
jurzua
parents:
diff changeset
209 public String getCollection() {
jurzua
parents:
diff changeset
210 return collection;
jurzua
parents:
diff changeset
211 }
jurzua
parents:
diff changeset
212
jurzua
parents:
diff changeset
213 public void setCollection(String collection) {
jurzua
parents:
diff changeset
214 this.collection = collection;
jurzua
parents:
diff changeset
215 }
jurzua
parents:
diff changeset
216 }
jurzua
parents:
diff changeset
217
jurzua
parents:
diff changeset
218
jurzua
parents:
diff changeset
219 }