Mercurial > hg > ismi-richfaces
comparison src/main/java/de/mpiwg/itgroup/ismi/search/beans/AdvancedSearchBean.java @ 1:2e911857a759
(none)
author | jurzua |
---|---|
date | Wed, 29 Oct 2014 14:00:28 +0000 |
parents | |
children | 3c83f42a8a39 |
comparison
equal
deleted
inserted
replaced
0:74df02964906 | 1:2e911857a759 |
---|---|
1 package de.mpiwg.itgroup.ismi.search.beans; | |
2 | |
3 import java.io.Serializable; | |
4 import java.util.ArrayList; | |
5 import java.util.List; | |
6 import java.util.Map; | |
7 import java.util.Map.Entry; | |
8 | |
9 import javax.faces.event.ValueChangeEvent; | |
10 import javax.faces.model.SelectItem; | |
11 | |
12 import org.apache.log4j.Logger; | |
13 import org.mpi.openmind.repository.bo.Attribute; | |
14 import org.mpi.openmind.search.utils.ResultEntry; | |
15 import org.mpi.openmind.search.utils.SAttribute; | |
16 import org.mpi.openmind.search.utils.SAttributeMultipleName; | |
17 import org.mpi.openmind.search.utils.SAttributeMultipleValue; | |
18 import org.mpi.openmind.search.utils.SAttributeUniqueName; | |
19 import org.mpi.openmind.search.utils.SEntity; | |
20 import org.mpi.openmind.search.utils.SRelation; | |
21 import org.mpi.openmind.search.utils.SRelationMultipleName; | |
22 import org.mpi.openmind.search.utils.SRelationUniqueName; | |
23 | |
24 import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean; | |
25 import de.mpiwg.itgroup.ismi.entry.beans.SessionBean; | |
26 import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar; | |
27 | |
28 public class AdvancedSearchBean extends AbstractISMIBean implements Serializable{ | |
29 | |
30 private static Logger logger = Logger.getLogger(AdvancedSearchBean.class); | |
31 | |
32 private static final long serialVersionUID = 1L; | |
33 | |
34 private String currentTemplate; | |
35 private static List<SelectItem> templateList; | |
36 | |
37 private transient Witness4TitleQuery witness4TitleQuery; | |
38 //private SampleSearch06 sample06; | |
39 private SampleSearch07 sample07; | |
40 private Titles4PersonQuery titles4PersonQuery; | |
41 private CodexOwnershipQuery codexOwnershipQuery; | |
42 | |
43 static{ | |
44 templateList = new ArrayList<SelectItem>(); | |
45 //templateList.add(new SelectItem("sample01")); | |
46 templateList.add(new SelectItem("witness4Title", "Witnesses for a title")); | |
47 //templateList.add(new SelectItem("sample03")); | |
48 //templateList.add(new SelectItem("sample04")); | |
49 //templateList.add(new SelectItem("sample05")); | |
50 templateList.add(new SelectItem("titles4Person", "Titles for a person")); | |
51 templateList.add(new SelectItem("codexOwnership", "Codex ownership")); | |
52 //templateList.add(new SelectItem("sample07")); | |
53 //templateList.add(new SelectItem("sample08")); | |
54 //templateList.add(new SelectItem("sample09")); | |
55 } | |
56 | |
57 public AdvancedSearchBean(){ | |
58 //logger.info("AdvancedSearchBean"); | |
59 this.reset(); | |
60 } | |
61 | |
62 public void reset(){ | |
63 //logger.info("AdvancedSearchBean.reset()"); | |
64 this.witness4TitleQuery = new Witness4TitleQuery(getAppBean()); | |
65 this.titles4PersonQuery = new Titles4PersonQuery(getAppBean()); | |
66 this.sample07 = new SampleSearch07(getAppBean()); | |
67 this.codexOwnershipQuery = new CodexOwnershipQuery(getAppBean()); | |
68 currentTemplate = "witness4Title"; | |
69 } | |
70 | |
71 public void listenerChange(ValueChangeEvent event){ | |
72 /* | |
73 logger.info(event.getOldValue()); | |
74 logger.info(event.getNewValue()); | |
75 */ | |
76 } | |
77 | |
78 public String actionSearch(){ | |
79 this.search(); | |
80 return null; | |
81 } | |
82 | |
83 public SampleSearch07 getSample07() { | |
84 return sample07; | |
85 } | |
86 | |
87 public CodexOwnershipQuery getCodexOwnershipQuery() { | |
88 return codexOwnershipQuery; | |
89 } | |
90 | |
91 public Witness4TitleQuery getWitness4TitleQuery() { | |
92 return witness4TitleQuery; | |
93 } | |
94 | |
95 public void search(){ | |
96 long start = System.currentTimeMillis(); | |
97 | |
98 List<ResultEntry> rs = sample06(); | |
99 | |
100 //printRs(rs); | |
101 | |
102 long end = System.currentTimeMillis(); | |
103 logger.info("execution time [ms] = " + (end - start)); | |
104 logger.info("Search resultSet size= " + rs.size()); | |
105 } | |
106 | |
107 | |
108 private List<ResultEntry> test01(){ | |
109 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
110 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
111 | |
112 SEntity e1 = new SEntity(0, "PERSON"); | |
113 e1.addAtt(new SAttributeUniqueName("name_translit", "abu")); | |
114 entFilters.add(e1); | |
115 | |
116 SEntity e2 = new SEntity(1, "ROLE"); | |
117 e2.addAtt(new SAttributeUniqueName("name", "Author")); | |
118 entFilters.add(e2); | |
119 | |
120 SEntity e3 = new SEntity(2, "PLACE"); | |
121 e3.addAtt(new SAttributeUniqueName("name", "Spain")); | |
122 entFilters.add(e3); | |
123 | |
124 SEntity e4 = new SEntity(3, "ALIAS"); | |
125 e4.addAtt(new SAttributeUniqueName("alias", "Samuel")); | |
126 entFilters.add(e4); | |
127 | |
128 SRelationUniqueName has_role = new SRelationUniqueName(e1.getIndex(), e2.getIndex(), "has_role"); | |
129 SRelationUniqueName was_born_in = new SRelationUniqueName(e1.getIndex(), e3.getIndex(), "was_born_in"); | |
130 SRelationUniqueName is_prime_alias_name_of = new SRelationUniqueName(e4.getIndex(), e1.getIndex(), "is_prime_alias_name_of"); | |
131 relFilters.add(has_role); | |
132 relFilters.add(was_born_in); | |
133 relFilters.add(is_prime_alias_name_of); | |
134 | |
135 return getAppBean().getSS().search(entFilters, relFilters); | |
136 | |
137 } | |
138 | |
139 private List<ResultEntry> test02(){ | |
140 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
141 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
142 | |
143 SEntity e2 = new SEntity(1, "ALIAS"); | |
144 e2.addAtt(new SAttributeUniqueName("alias", "abu")); | |
145 entFilters.add(e2); | |
146 | |
147 SEntity e1 = new SEntity(0, "TEXT"); | |
148 e1.addAtt(new SAttributeUniqueName("full_title_translit", "abu")); | |
149 entFilters.add(e1); | |
150 | |
151 | |
152 SRelationMultipleName hasAlias = new SRelationMultipleName(e2.getIndex(), e1.getIndex(), | |
153 "is_prime_alias_title_of", | |
154 "is_alias_title_of", | |
155 "is_alias_incipit_of", | |
156 "is_alias_explicit_of"); | |
157 relFilters.add(hasAlias); | |
158 | |
159 return getAppBean().getSS().search(entFilters, relFilters); | |
160 } | |
161 | |
162 private List<ResultEntry> sample01(){ | |
163 | |
164 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
165 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
166 | |
167 SEntity role = new SEntity(0, "ROLE"); | |
168 role.addAtt(new SAttributeUniqueName("name", "Author")); | |
169 entFilters.add(role); | |
170 | |
171 //alias, "is_prime_alias_name_of", "PERSON" | |
172 //alias, "is_alias_name_of", "PERSON" | |
173 SEntity person = new SEntity(1, "PERSON"); | |
174 person.addAtt(new SAttributeMultipleName("a", "name_translit", "name")); | |
175 entFilters.add(person); | |
176 | |
177 /* | |
178 SEntity alias = new SEntity(1, "ALIAS"); | |
179 alias.addAtt(new SAttributeUniqueName("alias", "abu")); | |
180 entFilters.add(alias); | |
181 */ | |
182 | |
183 SEntity title = new SEntity(2, "TEXT"); | |
184 //title.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title")); | |
185 entFilters.add(title); | |
186 | |
187 | |
188 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role"); | |
189 SRelationUniqueName was_created_by = new SRelationUniqueName(title, person, "was_created_by"); | |
190 relFilters.add(was_created_by); | |
191 relFilters.add(has_role); | |
192 | |
193 List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters); | |
194 | |
195 return rs; | |
196 } | |
197 | |
198 /** | |
199 * 5) List of all people who had other “roles” associated with a title (e.g. copyists , owners, patrons, teachers, students, etc.) | |
200 * @return | |
201 */ | |
202 private List<ResultEntry> sample05(){ | |
203 | |
204 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
205 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
206 | |
207 SEntity role = new SEntity(0, "ROLE"); | |
208 role.addAtt(new SAttributeMultipleValue("name", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector")); | |
209 entFilters.add(role); | |
210 | |
211 //alias, "is_prime_alias_name_of", "PERSON" | |
212 //alias, "is_alias_name_of", "PERSON" | |
213 SEntity person = new SEntity(1, "PERSON"); | |
214 person.addAtt(new SAttributeMultipleName("a", "name_translit", "name")); | |
215 entFilters.add(person); | |
216 | |
217 /* | |
218 SEntity alias = new SEntity(1, "ALIAS"); | |
219 alias.addAtt(new SAttributeUniqueName("alias", "abu")); | |
220 entFilters.add(alias); | |
221 */ | |
222 | |
223 SEntity title = new SEntity(2, "TEXT"); | |
224 //title.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title")); | |
225 entFilters.add(title); | |
226 | |
227 | |
228 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role"); | |
229 SRelationMultipleName title_to_person = new SRelationMultipleName(title, person, "had_patron", "was_dedicated_to", "was_created_by"); | |
230 relFilters.add(title_to_person); | |
231 relFilters.add(has_role); | |
232 | |
233 List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters); | |
234 | |
235 return rs; | |
236 } | |
237 | |
238 /** | |
239 * 6) Bring up people associated with a particular title (not just one huge list of people, but be able to distinguish author, student, teacher) | |
240 * @return | |
241 */ | |
242 private List<ResultEntry> sample06(){ | |
243 | |
244 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
245 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
246 | |
247 //The user can select between: | |
248 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector" | |
249 SEntity role = new SEntity(0, "ROLE"); | |
250 role.addAtt(new SAttributeUniqueName("name", "Annotator")); | |
251 entFilters.add(role); | |
252 | |
253 //alias, "is_prime_alias_name_of", "PERSON" | |
254 //alias, "is_alias_name_of", "PERSON" | |
255 SEntity person = new SEntity(1, "PERSON"); | |
256 person.addAtt(new SAttributeMultipleName("a", "name_translit", "name")); | |
257 entFilters.add(person); | |
258 | |
259 /* | |
260 SEntity alias = new SEntity(1, "ALIAS"); | |
261 alias.addAtt(new SAttributeUniqueName("alias", "abu")); | |
262 entFilters.add(alias); | |
263 */ | |
264 | |
265 SEntity title = new SEntity(2, "TEXT"); | |
266 title.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title")); | |
267 entFilters.add(title); | |
268 | |
269 | |
270 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role"); | |
271 SRelationMultipleName title_to_person = new SRelationMultipleName(title, person, "had_patron", "was_dedicated_to", "was_created_by"); | |
272 relFilters.add(title_to_person); | |
273 relFilters.add(has_role); | |
274 | |
275 List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters); | |
276 | |
277 return rs; | |
278 | |
279 } | |
280 | |
281 /** | |
282 * 7) Bring up people associated with a particular witness (not just one huge list of people, but be able to distinguish owner, say, from commentator) | |
283 * @return | |
284 */ | |
285 private List<ResultEntry> sample07(){ | |
286 | |
287 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
288 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
289 | |
290 //The user can select between: | |
291 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector" | |
292 SEntity role = new SEntity(0, "ROLE"); | |
293 role.addAtt(new SAttributeUniqueName("name", "Owner")); | |
294 entFilters.add(role); | |
295 | |
296 //alias, "is_prime_alias_name_of", "PERSON" | |
297 //alias, "is_alias_name_of", "PERSON" | |
298 SEntity person = new SEntity(1, "PERSON"); | |
299 person.addAtt(new SAttributeMultipleName("a", "name_translit", "name")); | |
300 entFilters.add(person); | |
301 | |
302 /* | |
303 SEntity alias = new SEntity(1, "ALIAS"); | |
304 alias.addAtt(new SAttributeUniqueName("alias", "abu")); | |
305 entFilters.add(alias); | |
306 */ | |
307 | |
308 SEntity witness = new SEntity(2, "WITNESS"); | |
309 //witness.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title")); | |
310 entFilters.add(witness); | |
311 | |
312 | |
313 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role"); | |
314 SRelationMultipleName witness_to_person = new SRelationMultipleName(witness, person, "had_patron", "was_copied_by", "was_created_by", "was_studied_by"); | |
315 relFilters.add(witness_to_person); | |
316 relFilters.add(has_role); | |
317 | |
318 List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters); | |
319 | |
320 return rs; | |
321 | |
322 } | |
323 | |
324 /** | |
325 * 9) Bring up all owners of a particular codex | |
326 * @return | |
327 */ | |
328 private List<ResultEntry> sample08(){ | |
329 | |
330 List<SEntity> entFilters = new ArrayList<SEntity>(); | |
331 List<SRelation> relFilters = new ArrayList<SRelation>(); | |
332 | |
333 //The user can select between: | |
334 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector" | |
335 SEntity role = new SEntity(0, "ROLE"); | |
336 role.addAtt(new SAttributeUniqueName("name", "Owner")); | |
337 entFilters.add(role); | |
338 | |
339 //alias, "is_prime_alias_name_of", "PERSON" | |
340 //alias, "is_alias_name_of", "PERSON" | |
341 SEntity person = new SEntity(1, "PERSON"); | |
342 person.addAtt(new SAttributeMultipleName("a", "name_translit", "name")); | |
343 entFilters.add(person); | |
344 | |
345 /* | |
346 SEntity alias = new SEntity(1, "ALIAS"); | |
347 alias.addAtt(new SAttributeUniqueName("alias", "abu")); | |
348 entFilters.add(alias); | |
349 */ | |
350 | |
351 SEntity codex = new SEntity(2, "CODEX"); | |
352 //witness.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title")); | |
353 entFilters.add(codex); | |
354 | |
355 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role"); | |
356 SRelationUniqueName was_owned_by = new SRelationUniqueName(codex, person, "was_owned_by"); | |
357 relFilters.add(was_owned_by); | |
358 relFilters.add(has_role); | |
359 | |
360 List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters); | |
361 | |
362 return rs; | |
363 | |
364 } | |
365 | |
366 /* | |
367 private void printRs(List<ResultEntry> rs){ | |
368 logger.info("--------------"); | |
369 for(ResultEntry entry : rs){ | |
370 for(Entry<Integer, Long> ent : entry.getEntMap().entrySet()){ | |
371 logger.info(ent.getKey() + ") " + getWrapper().getEntityById(ent.getValue()).toSmallString()); | |
372 } | |
373 } | |
374 logger.info("--------------"); | |
375 }*/ | |
376 | |
377 public String getCurrentTemplate() { | |
378 return currentTemplate; | |
379 } | |
380 | |
381 public void setCurrentTemplate(String currentTemplate) { | |
382 this.currentTemplate = currentTemplate; | |
383 } | |
384 | |
385 public List<SelectItem> getTemplateList() { | |
386 return templateList; | |
387 } | |
388 | |
389 public Titles4PersonQuery getTitles4PersonQuery() { | |
390 return titles4PersonQuery; | |
391 } | |
392 } |