annotate src/main/java/de/mpiwg/itgroup/ismi/search/beans/Titles4PersonQuery.java @ 131:8ae989269f51

New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization. 108: arabic normalization is not applied Task-Url: https://it-dev.mpiwg-berlin.mpg.de/tracs/ismi/ticket/108
author casties
date Thu, 02 Feb 2017 17:59:35 +0100
parents 4aa8c425685d
children 3c83f42a8a39
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.HashMap;
jurzua
parents:
diff changeset
6 import java.util.List;
jurzua
parents:
diff changeset
7 import java.util.Map;
jurzua
parents:
diff changeset
8
jurzua
parents:
diff changeset
9 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
10
jurzua
parents:
diff changeset
11 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
12 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
14 import org.mpi.openmind.repository.utils.NormalizerUtils;
131
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 119
diff changeset
15 import org.mpi.openmind.repository.utils.OldNormalizerUtils;
1
jurzua
parents:
diff changeset
16 import org.mpi.openmind.search.utils.ResultEntry;
jurzua
parents:
diff changeset
17 import org.mpi.openmind.search.utils.SAttributeMultipleName;
jurzua
parents:
diff changeset
18 import org.mpi.openmind.search.utils.SAttributeUniqueName;
jurzua
parents:
diff changeset
19 import org.mpi.openmind.search.utils.SEntity;
jurzua
parents:
diff changeset
20 import org.mpi.openmind.search.utils.SRelLongKey;
jurzua
parents:
diff changeset
21 import org.mpi.openmind.search.utils.SRelation;
jurzua
parents:
diff changeset
22 import org.mpi.openmind.search.utils.SRelationMultipleName;
jurzua
parents:
diff changeset
23 import org.mpi.openmind.search.utils.SRelationUniqueName;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean;
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 public class Titles4PersonQuery extends AbstractQuery implements Serializable{
jurzua
parents:
diff changeset
28
jurzua
parents:
diff changeset
29 /**
jurzua
parents:
diff changeset
30 *
jurzua
parents:
diff changeset
31 */
jurzua
parents:
diff changeset
32 private static final long serialVersionUID = -5342126098161866749L;
jurzua
parents:
diff changeset
33 private String personName;
jurzua
parents:
diff changeset
34 private String roleName = "Author";
jurzua
parents:
diff changeset
35 private static List<SelectItem> roleList;
jurzua
parents:
diff changeset
36 private List<SRelLongKey> personTitleKeyList;
jurzua
parents:
diff changeset
37
jurzua
parents:
diff changeset
38 private boolean displayCodex = false;
jurzua
parents:
diff changeset
39 private boolean displayAlias = false;
jurzua
parents:
diff changeset
40
jurzua
parents:
diff changeset
41 public Titles4PersonQuery(ApplicationBean appBean){
jurzua
parents:
diff changeset
42 super(appBean);
jurzua
parents:
diff changeset
43 this.exportUrlRoot = ApplicationBean.urlISMIExportServiceAuthors;
jurzua
parents:
diff changeset
44 }
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
47 static{
jurzua
parents:
diff changeset
48 roleList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
49 roleList.add(new SelectItem("Author"));
jurzua
parents:
diff changeset
50 roleList.add(new SelectItem("Annotator"));
jurzua
parents:
diff changeset
51 roleList.add(new SelectItem("Copyist"));
jurzua
parents:
diff changeset
52 roleList.add(new SelectItem("Corrector"));
jurzua
parents:
diff changeset
53 roleList.add(new SelectItem("Dedicatee"));
jurzua
parents:
diff changeset
54 roleList.add(new SelectItem("Illuminator"));
jurzua
parents:
diff changeset
55 roleList.add(new SelectItem("Illustrator"));
jurzua
parents:
diff changeset
56 roleList.add(new SelectItem("Owner"));
jurzua
parents:
diff changeset
57 roleList.add(new SelectItem("Patron"));
jurzua
parents:
diff changeset
58 roleList.add(new SelectItem("Inspector"));
jurzua
parents:
diff changeset
59 }
jurzua
parents:
diff changeset
60
jurzua
parents:
diff changeset
61 @Override
jurzua
parents:
diff changeset
62 public void reset(){
jurzua
parents:
diff changeset
63 super.reset();
jurzua
parents:
diff changeset
64 this.personName = null;
jurzua
parents:
diff changeset
65 this.roleName = "Author";
jurzua
parents:
diff changeset
66 this.rs = null;
jurzua
parents:
diff changeset
67 this.personTitleKeyList = null;
jurzua
parents:
diff changeset
68 this.displayAlias = false;
jurzua
parents:
diff changeset
69 this.displayCodex = false;
jurzua
parents:
diff changeset
70 }
jurzua
parents:
diff changeset
71
jurzua
parents:
diff changeset
72 @Override
jurzua
parents:
diff changeset
73 protected void search(){
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 this.displayAlias = false;
jurzua
parents:
diff changeset
76 this.displayCodex = false;
jurzua
parents:
diff changeset
77
jurzua
parents:
diff changeset
78 List<ResultEntry> rs0 = this.execute01(personName, roleName);
jurzua
parents:
diff changeset
79 List<ResultEntry> rs1 = null;
jurzua
parents:
diff changeset
80 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
81 rs1 = this.execute02(personName, roleName);
jurzua
parents:
diff changeset
82 }
jurzua
parents:
diff changeset
83 rs = loadResultSet(rs0, rs1);
jurzua
parents:
diff changeset
84
jurzua
parents:
diff changeset
85 List<Long> idLongList = new ArrayList<Long>();
jurzua
parents:
diff changeset
86 for(Object e : rs){
jurzua
parents:
diff changeset
87 Titles4PersonEntry entry = (Titles4PersonEntry)e;
jurzua
parents:
diff changeset
88 if(!idLongList.contains(entry.getPersonId()))
jurzua
parents:
diff changeset
89 idLongList.add(entry.getPersonId());
jurzua
parents:
diff changeset
90 }
jurzua
parents:
diff changeset
91 this.idList = ApplicationBean.generateIdList(idLongList);
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 this.exportDirkUrl = ApplicationBean.generateExportURL(exportUrlRoot, idList, "xml");
jurzua
parents:
diff changeset
94 }
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96
jurzua
parents:
diff changeset
97
jurzua
parents:
diff changeset
98 private List<Titles4PersonEntry> loadResultSet(List<ResultEntry> rs0, List<ResultEntry> rs1){
jurzua
parents:
diff changeset
99 List<Titles4PersonEntry> currentRS = new ArrayList<Titles4PersonEntry>();
jurzua
parents:
diff changeset
100
jurzua
parents:
diff changeset
101 List<Long> personIdList = new ArrayList<Long>();
jurzua
parents:
diff changeset
102
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104 for(ResultEntry re : rs0){
jurzua
parents:
diff changeset
105 Entity person = getOm().getEntityById(re.getEntMap().get(1));
jurzua
parents:
diff changeset
106 personIdList.add(person.getId());
jurzua
parents:
diff changeset
107 currentRS.addAll(getEntryFromPerson(person, null, null, this.roleName));
jurzua
parents:
diff changeset
108 }
jurzua
parents:
diff changeset
109
jurzua
parents:
diff changeset
110 if(rs1 != null){
jurzua
parents:
diff changeset
111 for(ResultEntry re : rs1){
jurzua
parents:
diff changeset
112 Entity person = getOm().getEntityById(re.getEntMap().get(1));
jurzua
parents:
diff changeset
113 if(!personIdList.contains(person.getId())){
jurzua
parents:
diff changeset
114 String alias = getOm().getEntityById(re.getEntMap().get(2)).getOwnValue();
jurzua
parents:
diff changeset
115 String alias2Person = re.getRel(2, 1);
jurzua
parents:
diff changeset
116 currentRS.addAll(getEntryFromPerson(person, alias, alias2Person, this.roleName));
jurzua
parents:
diff changeset
117 this.displayAlias = true;
jurzua
parents:
diff changeset
118 }
jurzua
parents:
diff changeset
119 }
jurzua
parents:
diff changeset
120 }
jurzua
parents:
diff changeset
121
jurzua
parents:
diff changeset
122 return currentRS;
jurzua
parents:
diff changeset
123 }
jurzua
parents:
diff changeset
124
jurzua
parents:
diff changeset
125
jurzua
parents:
diff changeset
126 /**
jurzua
parents:
diff changeset
127 * Possible ways to find a title from a given person
jurzua
parents:
diff changeset
128 * 1- TEXT is_exemplar_of WITNESS is_part_of CODEX owned_by PERSON
jurzua
parents:
diff changeset
129 * 2-
jurzua
parents:
diff changeset
130 * TEXT was_created_by PERSON
jurzua
parents:
diff changeset
131 * TEXT had_patron PERSON
jurzua
parents:
diff changeset
132 * TEXT was_dedicated_to PERSON
jurzua
parents:
diff changeset
133 */
jurzua
parents:
diff changeset
134 private List<Titles4PersonEntry> getEntryFromPerson(Entity person, String alias, String alias2Person, String role){
jurzua
parents:
diff changeset
135 //rs.add(new Titles4PersonEntry(person, title, title2Person, codex, codex2Person, alias, alias2Person, role, subject, ));
jurzua
parents:
diff changeset
136 List<Titles4PersonEntry> rs = new ArrayList<Titles4PersonQuery.Titles4PersonEntry>();
jurzua
parents:
diff changeset
137
jurzua
parents:
diff changeset
138 List<Entity> entList = getOm().getSourcesForTargetRelation(person.getId(), "was_created_by", "TEXT", -1);
jurzua
parents:
diff changeset
139 for(Entity title : entList){
jurzua
parents:
diff changeset
140 String subject = getSubject(title);
jurzua
parents:
diff changeset
141 rs.add(new Titles4PersonEntry(person, title, alias, alias2Person, role, subject, "TEXT was_created_by PERSON"));
jurzua
parents:
diff changeset
142 }
jurzua
parents:
diff changeset
143
jurzua
parents:
diff changeset
144 entList = getOm().getSourcesForTargetRelation(person.getId(), "had_patron", "TEXT", -1);
jurzua
parents:
diff changeset
145 for(Entity title : entList){
jurzua
parents:
diff changeset
146 String subject = getSubject(title);
jurzua
parents:
diff changeset
147 rs.add(new Titles4PersonEntry(person, title, alias, alias2Person, role, subject, "TEXT had_patron PERSON"));
jurzua
parents:
diff changeset
148 }
jurzua
parents:
diff changeset
149
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 entList = getOm().getSourcesForTargetRelation(person.getId(), "was_dedicated_to", "TEXT", -1);
jurzua
parents:
diff changeset
152 for(Entity title : entList){
jurzua
parents:
diff changeset
153 String subject = getSubject(title);
jurzua
parents:
diff changeset
154 rs.add(new Titles4PersonEntry(person, title, alias, alias2Person, role, subject, "TEXT was_dedicated_to PERSON"));
jurzua
parents:
diff changeset
155 }
jurzua
parents:
diff changeset
156
jurzua
parents:
diff changeset
157 entList = getOm().getSourcesForTargetRelation(person.getId(), "owned_by", "CODEX", -1);
jurzua
parents:
diff changeset
158 for(Entity codex : entList){
jurzua
parents:
diff changeset
159 List<Entity> witnessList = getOm().getSourcesForTargetRelation(codex.getId(), "is_part_of", "WITNESS", -1);
jurzua
parents:
diff changeset
160 for(Entity witness : witnessList){
jurzua
parents:
diff changeset
161 List<Entity> textList = getOm().getTargetsForSourceRelation(witness.getId(), "is_exemplar_of", "TEXT", -1);
jurzua
parents:
diff changeset
162 for(Entity title : textList){
jurzua
parents:
diff changeset
163 String subject = getSubject(title);
jurzua
parents:
diff changeset
164 rs.add(new Titles4PersonEntry(person, title, codex, witness, alias, alias2Person, role, subject,
jurzua
parents:
diff changeset
165 "TEXT is_exemplar_of WITNESS is_part_of CODEX owned_by PERSON"));
jurzua
parents:
diff changeset
166 this.displayCodex = true;
119
4aa8c425685d less System.out.println.
casties
parents: 1
diff changeset
167 //System.out.println("this.displayCodex = true;");
1
jurzua
parents:
diff changeset
168 }
jurzua
parents:
diff changeset
169 }
jurzua
parents:
diff changeset
170 }
jurzua
parents:
diff changeset
171
jurzua
parents:
diff changeset
172 return rs;
jurzua
parents:
diff changeset
173 }
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175 private String getSubject(Entity title){
jurzua
parents:
diff changeset
176 List<Entity> subjectList = getOm().getTargetsForSourceRelation(title.getId(), "has_subject", "SUBJECT", 1);
jurzua
parents:
diff changeset
177 return (subjectList.size() == 0) ? null : subjectList.get(0).getOwnValue();
jurzua
parents:
diff changeset
178 }
jurzua
parents:
diff changeset
179
jurzua
parents:
diff changeset
180 private List<ResultEntry> execute01(String personName, String roleName){
jurzua
parents:
diff changeset
181
jurzua
parents:
diff changeset
182 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
183 List<SRelation> relFilters = new ArrayList<SRelation>();
jurzua
parents:
diff changeset
184
jurzua
parents:
diff changeset
185 //The user can select between:
jurzua
parents:
diff changeset
186 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
187 SEntity role = new SEntity(0, "ROLE");
jurzua
parents:
diff changeset
188 role.addAtt(new SAttributeUniqueName("name", roleName));
jurzua
parents:
diff changeset
189 entFilters.add(role);
jurzua
parents:
diff changeset
190
jurzua
parents:
diff changeset
191 //alias, "is_prime_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
192 //alias, "is_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
193 SEntity person = new SEntity(1, "PERSON");
jurzua
parents:
diff changeset
194 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
195 person.addAtt(new SAttributeMultipleName(personName, "name_translit", "name"));
jurzua
parents:
diff changeset
196 }
jurzua
parents:
diff changeset
197 entFilters.add(person);
jurzua
parents:
diff changeset
198
jurzua
parents:
diff changeset
199 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role");
jurzua
parents:
diff changeset
200 relFilters.add(has_role);
jurzua
parents:
diff changeset
201
jurzua
parents:
diff changeset
202 return this.appBean.getSS().search(entFilters, relFilters);
jurzua
parents:
diff changeset
203 }
jurzua
parents:
diff changeset
204
jurzua
parents:
diff changeset
205 private List<ResultEntry> execute02(String personName, String roleName){
jurzua
parents:
diff changeset
206
jurzua
parents:
diff changeset
207 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
208 List<SRelation> relFilters = new ArrayList<SRelation>();
jurzua
parents:
diff changeset
209
jurzua
parents:
diff changeset
210 //The user can select between:
jurzua
parents:
diff changeset
211 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
212 SEntity role = new SEntity(0, "ROLE");
jurzua
parents:
diff changeset
213 role.addAtt(new SAttributeUniqueName("name", roleName));
jurzua
parents:
diff changeset
214 entFilters.add(role);
jurzua
parents:
diff changeset
215
jurzua
parents:
diff changeset
216 //alias, "is_prime_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
217 //alias, "is_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
218 SEntity person = new SEntity(1, "PERSON");
jurzua
parents:
diff changeset
219 entFilters.add(person);
jurzua
parents:
diff changeset
220
jurzua
parents:
diff changeset
221 SEntity alias = new SEntity(2, "ALIAS");
jurzua
parents:
diff changeset
222 alias.addAtt(new SAttributeUniqueName("alias", personName));
jurzua
parents:
diff changeset
223 entFilters.add(alias);
jurzua
parents:
diff changeset
224
jurzua
parents:
diff changeset
225 SRelationMultipleName is_alias = new SRelationMultipleName(alias, person, "is_alias_name_of", "is_prime_alias_name_of");
jurzua
parents:
diff changeset
226 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role");
jurzua
parents:
diff changeset
227 relFilters.add(has_role);
jurzua
parents:
diff changeset
228 relFilters.add(is_alias);
jurzua
parents:
diff changeset
229
jurzua
parents:
diff changeset
230 return this.appBean.getSS().search(entFilters, relFilters);
jurzua
parents:
diff changeset
231 }
jurzua
parents:
diff changeset
232
jurzua
parents:
diff changeset
233 public String getPersonName() {
jurzua
parents:
diff changeset
234 return personName;
jurzua
parents:
diff changeset
235 }
jurzua
parents:
diff changeset
236
jurzua
parents:
diff changeset
237 public void setPersonName(String personName) {
jurzua
parents:
diff changeset
238 this.personName = personName;
jurzua
parents:
diff changeset
239 }
jurzua
parents:
diff changeset
240
jurzua
parents:
diff changeset
241 public String getRoleName() {
jurzua
parents:
diff changeset
242 return roleName;
jurzua
parents:
diff changeset
243 }
jurzua
parents:
diff changeset
244
jurzua
parents:
diff changeset
245 public void setRoleName(String roleName) {
jurzua
parents:
diff changeset
246 this.roleName = roleName;
jurzua
parents:
diff changeset
247 }
jurzua
parents:
diff changeset
248
jurzua
parents:
diff changeset
249 public List<SRelLongKey> getPersonTitleKeyList() {
jurzua
parents:
diff changeset
250 return personTitleKeyList;
jurzua
parents:
diff changeset
251 }
jurzua
parents:
diff changeset
252
jurzua
parents:
diff changeset
253 public void setPersonTitleKeyList(List<SRelLongKey> personTitleKeyList) {
jurzua
parents:
diff changeset
254 this.personTitleKeyList = personTitleKeyList;
jurzua
parents:
diff changeset
255 }
jurzua
parents:
diff changeset
256
jurzua
parents:
diff changeset
257 public List<SelectItem> getRoleList() {
jurzua
parents:
diff changeset
258 return roleList;
jurzua
parents:
diff changeset
259 }
jurzua
parents:
diff changeset
260
jurzua
parents:
diff changeset
261 public boolean isDisplayCodex() {
jurzua
parents:
diff changeset
262 return displayCodex;
jurzua
parents:
diff changeset
263 }
jurzua
parents:
diff changeset
264
jurzua
parents:
diff changeset
265 public boolean isDisplayAlias() {
jurzua
parents:
diff changeset
266 return displayAlias;
jurzua
parents:
diff changeset
267 }
jurzua
parents:
diff changeset
268
jurzua
parents:
diff changeset
269
jurzua
parents:
diff changeset
270
jurzua
parents:
diff changeset
271 public class Titles4PersonEntry implements Comparable<Titles4PersonEntry>, Serializable{
jurzua
parents:
diff changeset
272 private static final long serialVersionUID = 7798695003500406910L;
jurzua
parents:
diff changeset
273
jurzua
parents:
diff changeset
274 private Long personId;
jurzua
parents:
diff changeset
275 private String personOv;
jurzua
parents:
diff changeset
276 private String personNOv;
jurzua
parents:
diff changeset
277
jurzua
parents:
diff changeset
278 private Long titleId;
jurzua
parents:
diff changeset
279 private String titleOv;
jurzua
parents:
diff changeset
280 private String titleNOv;
jurzua
parents:
diff changeset
281
jurzua
parents:
diff changeset
282 private Long codexId;
jurzua
parents:
diff changeset
283 private String codexOv;
jurzua
parents:
diff changeset
284 private String codex2Person;
jurzua
parents:
diff changeset
285
jurzua
parents:
diff changeset
286 private Long witnessId;
jurzua
parents:
diff changeset
287 private String witnessOv;
jurzua
parents:
diff changeset
288 private String witnessNOv;
jurzua
parents:
diff changeset
289
jurzua
parents:
diff changeset
290 private String alias;
jurzua
parents:
diff changeset
291 private String alias2Person;
jurzua
parents:
diff changeset
292
jurzua
parents:
diff changeset
293 private String role;
jurzua
parents:
diff changeset
294 //private String title2Person;
jurzua
parents:
diff changeset
295 private String subject;
jurzua
parents:
diff changeset
296
jurzua
parents:
diff changeset
297
jurzua
parents:
diff changeset
298
jurzua
parents:
diff changeset
299 private String query;
jurzua
parents:
diff changeset
300
jurzua
parents:
diff changeset
301 public Titles4PersonEntry(
jurzua
parents:
diff changeset
302 Entity person,
jurzua
parents:
diff changeset
303 Entity title,
jurzua
parents:
diff changeset
304 Entity codex,
jurzua
parents:
diff changeset
305 Entity witness,
jurzua
parents:
diff changeset
306 String alias,
jurzua
parents:
diff changeset
307 String alias2Person,
jurzua
parents:
diff changeset
308 String role,
jurzua
parents:
diff changeset
309 String subject,
jurzua
parents:
diff changeset
310 String query
jurzua
parents:
diff changeset
311 ){
jurzua
parents:
diff changeset
312
jurzua
parents:
diff changeset
313 set(person, title);
jurzua
parents:
diff changeset
314 this.alias = alias;
jurzua
parents:
diff changeset
315 this.alias2Person = alias2Person;
jurzua
parents:
diff changeset
316 this.role = role;
jurzua
parents:
diff changeset
317 this.subject = subject;
jurzua
parents:
diff changeset
318 this.query = query;
jurzua
parents:
diff changeset
319 if(codex != null){
jurzua
parents:
diff changeset
320 this.codexId = codex.getId();
jurzua
parents:
diff changeset
321 this.codexOv = codex.getOwnValue();
jurzua
parents:
diff changeset
322 }
jurzua
parents:
diff changeset
323 if(witness != null){
jurzua
parents:
diff changeset
324 this.witnessId = witness.getId();
jurzua
parents:
diff changeset
325 this.witnessOv = witness.getOwnValue();
jurzua
parents:
diff changeset
326 this.witnessNOv = witness.getNormalizedOwnValue();
jurzua
parents:
diff changeset
327 }
jurzua
parents:
diff changeset
328 }
jurzua
parents:
diff changeset
329
jurzua
parents:
diff changeset
330 public Titles4PersonEntry(
jurzua
parents:
diff changeset
331 Entity person,
jurzua
parents:
diff changeset
332 Entity title,
jurzua
parents:
diff changeset
333 String alias,
jurzua
parents:
diff changeset
334 String alias2Person,
jurzua
parents:
diff changeset
335 String role,
jurzua
parents:
diff changeset
336 String subject,
jurzua
parents:
diff changeset
337 String query
jurzua
parents:
diff changeset
338 ){
jurzua
parents:
diff changeset
339
jurzua
parents:
diff changeset
340 set(person, title);
jurzua
parents:
diff changeset
341 this.alias = alias;
jurzua
parents:
diff changeset
342 this.alias2Person = alias2Person;
jurzua
parents:
diff changeset
343 this.role = role;
jurzua
parents:
diff changeset
344 this.subject = subject;
jurzua
parents:
diff changeset
345 this.query = query;
jurzua
parents:
diff changeset
346 }
jurzua
parents:
diff changeset
347
jurzua
parents:
diff changeset
348 private void set(Entity person, Entity title){
jurzua
parents:
diff changeset
349 this.personId = person.getId();
jurzua
parents:
diff changeset
350 this.personOv = person.getOwnValue();
jurzua
parents:
diff changeset
351 this.personNOv = person.getNormalizedOwnValue();
jurzua
parents:
diff changeset
352
jurzua
parents:
diff changeset
353 this.titleId = title.getId();
jurzua
parents:
diff changeset
354 this.titleOv = title.getOwnValue();
jurzua
parents:
diff changeset
355 this.titleNOv = title.getNormalizedOwnValue();
jurzua
parents:
diff changeset
356 }
jurzua
parents:
diff changeset
357
jurzua
parents:
diff changeset
358 public Long getPersonId() {
jurzua
parents:
diff changeset
359 return personId;
jurzua
parents:
diff changeset
360 }
jurzua
parents:
diff changeset
361
jurzua
parents:
diff changeset
362 public String getPersonOv() {
jurzua
parents:
diff changeset
363 return personOv;
jurzua
parents:
diff changeset
364 }
jurzua
parents:
diff changeset
365
jurzua
parents:
diff changeset
366 public String getPersonNOv() {
jurzua
parents:
diff changeset
367 return personNOv;
jurzua
parents:
diff changeset
368 }
jurzua
parents:
diff changeset
369
jurzua
parents:
diff changeset
370 public String getAlias() {
jurzua
parents:
diff changeset
371 return alias;
jurzua
parents:
diff changeset
372 }
jurzua
parents:
diff changeset
373
jurzua
parents:
diff changeset
374 public String getAlias2Person() {
jurzua
parents:
diff changeset
375 return alias2Person;
jurzua
parents:
diff changeset
376 }
jurzua
parents:
diff changeset
377
jurzua
parents:
diff changeset
378 public Long getTitleId() {
jurzua
parents:
diff changeset
379 return titleId;
jurzua
parents:
diff changeset
380 }
jurzua
parents:
diff changeset
381
jurzua
parents:
diff changeset
382 public String getTitleOv() {
jurzua
parents:
diff changeset
383 return titleOv;
jurzua
parents:
diff changeset
384 }
jurzua
parents:
diff changeset
385
jurzua
parents:
diff changeset
386 public String getTitleNOv() {
jurzua
parents:
diff changeset
387 return titleNOv;
jurzua
parents:
diff changeset
388 }
jurzua
parents:
diff changeset
389
jurzua
parents:
diff changeset
390 public String getRole() {
jurzua
parents:
diff changeset
391 return role;
jurzua
parents:
diff changeset
392 }
jurzua
parents:
diff changeset
393
jurzua
parents:
diff changeset
394 public String getSubject() {
jurzua
parents:
diff changeset
395 return subject;
jurzua
parents:
diff changeset
396 }
jurzua
parents:
diff changeset
397
jurzua
parents:
diff changeset
398 public Long getCodexId() {
jurzua
parents:
diff changeset
399 return codexId;
jurzua
parents:
diff changeset
400 }
jurzua
parents:
diff changeset
401
jurzua
parents:
diff changeset
402 public String getCodexOv() {
jurzua
parents:
diff changeset
403 return codexOv;
jurzua
parents:
diff changeset
404 }
jurzua
parents:
diff changeset
405
jurzua
parents:
diff changeset
406
jurzua
parents:
diff changeset
407 public String getCodex2Person() {
jurzua
parents:
diff changeset
408 return codex2Person;
jurzua
parents:
diff changeset
409 }
jurzua
parents:
diff changeset
410
jurzua
parents:
diff changeset
411 public String getQuery() {
jurzua
parents:
diff changeset
412 return query;
jurzua
parents:
diff changeset
413 }
jurzua
parents:
diff changeset
414
jurzua
parents:
diff changeset
415 public Long getWitnessId() {
jurzua
parents:
diff changeset
416 return witnessId;
jurzua
parents:
diff changeset
417 }
jurzua
parents:
diff changeset
418
jurzua
parents:
diff changeset
419 public String getWitnessOv() {
jurzua
parents:
diff changeset
420 return witnessOv;
jurzua
parents:
diff changeset
421 }
jurzua
parents:
diff changeset
422
jurzua
parents:
diff changeset
423 public String getWitnessNOv() {
jurzua
parents:
diff changeset
424 return witnessNOv;
jurzua
parents:
diff changeset
425 }
jurzua
parents:
diff changeset
426
jurzua
parents:
diff changeset
427 @Override
jurzua
parents:
diff changeset
428 public int compareTo(Titles4PersonEntry o) {
jurzua
parents:
diff changeset
429 if(!this.personId.equals(o.personId)){
jurzua
parents:
diff changeset
430
131
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 119
diff changeset
431 int comparisonPerson = OldNormalizerUtils.normalizedToCompare(personNOv).compareTo(
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 119
diff changeset
432 OldNormalizerUtils.normalizedToCompare(o.personNOv));
1
jurzua
parents:
diff changeset
433 if(comparisonPerson != 0){
jurzua
parents:
diff changeset
434 return comparisonPerson;
jurzua
parents:
diff changeset
435 }else{
jurzua
parents:
diff changeset
436 if(StringUtils.isNotEmpty(role) && StringUtils.isNotEmpty(o.role)){
jurzua
parents:
diff changeset
437 int comparisonRole = this.role.compareTo(o.role);
jurzua
parents:
diff changeset
438 if(comparisonRole != 0){
jurzua
parents:
diff changeset
439 return comparisonRole;
jurzua
parents:
diff changeset
440 }
jurzua
parents:
diff changeset
441 }else{
jurzua
parents:
diff changeset
442 if(StringUtils.isNotEmpty(role)){
jurzua
parents:
diff changeset
443 return -1;
jurzua
parents:
diff changeset
444 }else if(StringUtils.isNotEmpty(o.role)){
jurzua
parents:
diff changeset
445 return 1;
jurzua
parents:
diff changeset
446 }
jurzua
parents:
diff changeset
447 }
jurzua
parents:
diff changeset
448 }
jurzua
parents:
diff changeset
449 }else{
jurzua
parents:
diff changeset
450 if(!this.titleId.equals(o.titleId)){
jurzua
parents:
diff changeset
451 //comparing subject
jurzua
parents:
diff changeset
452 if(StringUtils.isNotEmpty(subject) && StringUtils.isNotEmpty(o.subject)){
jurzua
parents:
diff changeset
453 int comparisonSubject = this.subject.compareTo(o.subject);
jurzua
parents:
diff changeset
454 if(comparisonSubject != 0){
jurzua
parents:
diff changeset
455 return comparisonSubject;
jurzua
parents:
diff changeset
456 }
jurzua
parents:
diff changeset
457 }else{
jurzua
parents:
diff changeset
458 if(StringUtils.isNotEmpty(subject)){
jurzua
parents:
diff changeset
459 return -1;
jurzua
parents:
diff changeset
460 }else if(StringUtils.isNotEmpty(o.subject)){
jurzua
parents:
diff changeset
461 return 1;
jurzua
parents:
diff changeset
462 }
jurzua
parents:
diff changeset
463 }
jurzua
parents:
diff changeset
464 //comparing title
131
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 119
diff changeset
465 int comparisonTitle = OldNormalizerUtils.normalizedToCompare(titleNOv).compareTo(
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 119
diff changeset
466 OldNormalizerUtils.normalizedToCompare(o.titleNOv));
1
jurzua
parents:
diff changeset
467 return comparisonTitle;
jurzua
parents:
diff changeset
468 }
jurzua
parents:
diff changeset
469 }
jurzua
parents:
diff changeset
470 return 0;
jurzua
parents:
diff changeset
471 }
jurzua
parents:
diff changeset
472 }
jurzua
parents:
diff changeset
473
jurzua
parents:
diff changeset
474 }