annotate src/main/java/de/mpiwg/itgroup/ismi/search/beans/SampleSearch06.java @ 153:3c83f42a8a39 public_by_author

first stab at new public-by-author interface.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 18 Aug 2017 14:58:11 -0400
parents 8ae989269f51
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.Collection;
jurzua
parents:
diff changeset
6 import java.util.Collections;
jurzua
parents:
diff changeset
7 import java.util.List;
jurzua
parents:
diff changeset
8
jurzua
parents:
diff changeset
9 import javax.faces.event.ValueChangeEvent;
jurzua
parents:
diff changeset
10 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
11
jurzua
parents:
diff changeset
12 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
13 import org.mpi.openmind.repository.bo.Entity;
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: 1
diff changeset
15 import org.mpi.openmind.repository.utils.OldNormalizerUtils;
1
jurzua
parents:
diff changeset
16 import org.mpi.openmind.repository.utils.TransliterationUtil;
jurzua
parents:
diff changeset
17 import org.mpi.openmind.search.utils.ResultEntry;
jurzua
parents:
diff changeset
18 import org.mpi.openmind.search.utils.SAttributeMultipleName;
jurzua
parents:
diff changeset
19 import org.mpi.openmind.search.utils.SAttributeUniqueName;
jurzua
parents:
diff changeset
20 import org.mpi.openmind.search.utils.SEntity;
jurzua
parents:
diff changeset
21 import org.mpi.openmind.search.utils.SRelLongKey;
jurzua
parents:
diff changeset
22 import org.mpi.openmind.search.utils.SRelation;
jurzua
parents:
diff changeset
23 import org.mpi.openmind.search.utils.SRelationMultipleName;
jurzua
parents:
diff changeset
24 import org.mpi.openmind.search.utils.SRelationUniqueName;
jurzua
parents:
diff changeset
25
jurzua
parents:
diff changeset
26 import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean;
jurzua
parents:
diff changeset
27
jurzua
parents:
diff changeset
28 /**
jurzua
parents:
diff changeset
29 * 7) Bring up people associated with a particular witness
jurzua
parents:
diff changeset
30 * (not just one huge list of people, but be able to distinguish owner, say, from commentator)
jurzua
parents:
diff changeset
31 * @author jurzua
jurzua
parents:
diff changeset
32 *
jurzua
parents:
diff changeset
33 */
jurzua
parents:
diff changeset
34 public class SampleSearch06 extends AbstractQuery implements Serializable{
jurzua
parents:
diff changeset
35
jurzua
parents:
diff changeset
36 private static final long serialVersionUID = 3749889381908517654L;
jurzua
parents:
diff changeset
37 private String personName;
jurzua
parents:
diff changeset
38 private String roleName = "Author";
jurzua
parents:
diff changeset
39 private static List<SelectItem> roleList;
jurzua
parents:
diff changeset
40
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
43 static{
jurzua
parents:
diff changeset
44 roleList = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
45 roleList.add(new SelectItem("Author"));
jurzua
parents:
diff changeset
46 roleList.add(new SelectItem("Annotator"));
jurzua
parents:
diff changeset
47 roleList.add(new SelectItem("Copyist"));
jurzua
parents:
diff changeset
48 roleList.add(new SelectItem("Corrector"));
jurzua
parents:
diff changeset
49 roleList.add(new SelectItem("Dedicatee"));
jurzua
parents:
diff changeset
50 roleList.add(new SelectItem("Illuminator"));
jurzua
parents:
diff changeset
51 roleList.add(new SelectItem("Illustrator"));
jurzua
parents:
diff changeset
52 roleList.add(new SelectItem("Owner"));
jurzua
parents:
diff changeset
53 roleList.add(new SelectItem("Patron"));
jurzua
parents:
diff changeset
54 roleList.add(new SelectItem("Inspector"));
jurzua
parents:
diff changeset
55 }
jurzua
parents:
diff changeset
56
jurzua
parents:
diff changeset
57
jurzua
parents:
diff changeset
58 public SampleSearch06(ApplicationBean appBean){
jurzua
parents:
diff changeset
59 super(appBean);
jurzua
parents:
diff changeset
60 this.exportUrlRoot = ApplicationBean.urlISMIExportServiceAuthors;
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 @Override
jurzua
parents:
diff changeset
64 public void reset(){
jurzua
parents:
diff changeset
65 super.reset();
jurzua
parents:
diff changeset
66 this.personName = null;
jurzua
parents:
diff changeset
67 this.roleName = "Author";
jurzua
parents:
diff changeset
68 this.rs = null;
jurzua
parents:
diff changeset
69 this.personTitleKeyList = null;
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 List<ResultEntry> rs0 = this.execute01(personName, roleName);
jurzua
parents:
diff changeset
76 List<ResultEntry> rs1 = null;
jurzua
parents:
diff changeset
77 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
78 rs1 = this.execute02(personName, roleName);
jurzua
parents:
diff changeset
79 }
jurzua
parents:
diff changeset
80 rs = loadResultSet(rs0, rs1);
jurzua
parents:
diff changeset
81
jurzua
parents:
diff changeset
82 List<Long> idLongList = new ArrayList<Long>();
jurzua
parents:
diff changeset
83 for(Object e : rs){
jurzua
parents:
diff changeset
84 ResultEntry06 entry = (ResultEntry06)e;
jurzua
parents:
diff changeset
85 if(!idLongList.contains(entry.getPersonId()))
jurzua
parents:
diff changeset
86 idLongList.add(entry.getPersonId());
jurzua
parents:
diff changeset
87 }
jurzua
parents:
diff changeset
88 this.idList = ApplicationBean.generateIdList(idLongList);
jurzua
parents:
diff changeset
89
jurzua
parents:
diff changeset
90 this.exportDirkUrl = ApplicationBean.generateExportURL(exportUrlRoot, idList, "xml");
jurzua
parents:
diff changeset
91 }
jurzua
parents:
diff changeset
92
jurzua
parents:
diff changeset
93 private List<ResultEntry06> loadResultSet(List<ResultEntry> rs0, List<ResultEntry> rs1){
jurzua
parents:
diff changeset
94 List<ResultEntry06> currentRs = new ArrayList<SampleSearch06.ResultEntry06>();
jurzua
parents:
diff changeset
95 personTitleKeyList = new ArrayList<SRelLongKey>();
jurzua
parents:
diff changeset
96
jurzua
parents:
diff changeset
97 for(ResultEntry re : rs0){
jurzua
parents:
diff changeset
98
jurzua
parents:
diff changeset
99 Entity person = getOm().getEntityById(re.getEntMap().get(1));
jurzua
parents:
diff changeset
100 Entity title = getOm().getEntityById(re.getEntMap().get(2));
jurzua
parents:
diff changeset
101
jurzua
parents:
diff changeset
102 String alias = null;
jurzua
parents:
diff changeset
103 String alias2Person = null;
jurzua
parents:
diff changeset
104 String role = this.roleName;
jurzua
parents:
diff changeset
105 String title2Person = re.getRel(2, 1);
jurzua
parents:
diff changeset
106 List<Entity> subjectList = getOm().getTargetsForSourceRelation(title.getId(), "has_subject", "SUBJECT", 1);
jurzua
parents:
diff changeset
107 String subject = (subjectList.size() == 0) ? null : subjectList.get(0).getOwnValue();
jurzua
parents:
diff changeset
108
jurzua
parents:
diff changeset
109 currentRs.add(new ResultEntry06(person, title, alias, alias2Person, role, title2Person, subject));
jurzua
parents:
diff changeset
110 putPersonTitleKey(person.getId(), title.getId());
jurzua
parents:
diff changeset
111 }
jurzua
parents:
diff changeset
112 if(rs1 != null){
jurzua
parents:
diff changeset
113 for(ResultEntry re : rs1){
jurzua
parents:
diff changeset
114 Entity person = getOm().getEntityById(re.getEntMap().get(1));
jurzua
parents:
diff changeset
115 Entity title = getOm().getEntityById(re.getEntMap().get(3));
jurzua
parents:
diff changeset
116 if(!containsPersonTitleKey(person.getId(), title.getId())){
jurzua
parents:
diff changeset
117
jurzua
parents:
diff changeset
118 String alias = getOm().getEntityById(re.getEntMap().get(2)).getOwnValue();
jurzua
parents:
diff changeset
119 String alias2Person = re.getRel(2, 1);
jurzua
parents:
diff changeset
120 String role = this.roleName;
jurzua
parents:
diff changeset
121 String title2Person = re.getRel(3, 1);
jurzua
parents:
diff changeset
122 List<Entity> subjectList = getOm().getTargetsForSourceRelation(title.getId(), "has_subject", "SUBJECT", 1);
jurzua
parents:
diff changeset
123 String subject = (subjectList.size() == 0) ? null : subjectList.get(0).getOwnValue();
jurzua
parents:
diff changeset
124
jurzua
parents:
diff changeset
125 currentRs.add(new ResultEntry06(person, title, alias, alias2Person, role, title2Person, subject));
jurzua
parents:
diff changeset
126 putPersonTitleKey(person.getId(), title.getId());
jurzua
parents:
diff changeset
127 }
jurzua
parents:
diff changeset
128 }
jurzua
parents:
diff changeset
129 }
jurzua
parents:
diff changeset
130
jurzua
parents:
diff changeset
131 Collections.sort(currentRs);
jurzua
parents:
diff changeset
132
jurzua
parents:
diff changeset
133 return currentRs;
jurzua
parents:
diff changeset
134 }
jurzua
parents:
diff changeset
135
jurzua
parents:
diff changeset
136 private List<SRelLongKey> personTitleKeyList;
jurzua
parents:
diff changeset
137 private boolean containsPersonTitleKey(Long personId, Long titleId){
jurzua
parents:
diff changeset
138 return personTitleKeyList.contains(new SRelLongKey(personId, titleId));
jurzua
parents:
diff changeset
139 }
jurzua
parents:
diff changeset
140 private void putPersonTitleKey(Long personId, Long titleId){
jurzua
parents:
diff changeset
141 personTitleKeyList.add(new SRelLongKey(personId, titleId));
jurzua
parents:
diff changeset
142 }
jurzua
parents:
diff changeset
143
jurzua
parents:
diff changeset
144
jurzua
parents:
diff changeset
145
jurzua
parents:
diff changeset
146 private List<ResultEntry> execute01(String personName, String roleName){
jurzua
parents:
diff changeset
147
jurzua
parents:
diff changeset
148 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
149 List<SRelation> relFilters = new ArrayList<SRelation>();
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 //The user can select between:
jurzua
parents:
diff changeset
152 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
153 SEntity role = new SEntity(0, "ROLE");
jurzua
parents:
diff changeset
154 role.addAtt(new SAttributeUniqueName("name", roleName));
jurzua
parents:
diff changeset
155 entFilters.add(role);
jurzua
parents:
diff changeset
156
jurzua
parents:
diff changeset
157 //alias, "is_prime_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
158 //alias, "is_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
159 SEntity person = new SEntity(1, "PERSON");
jurzua
parents:
diff changeset
160 if(StringUtils.isNotEmpty(personName)){
jurzua
parents:
diff changeset
161 person.addAtt(new SAttributeMultipleName(personName, "name_translit", "name"));
jurzua
parents:
diff changeset
162 }
jurzua
parents:
diff changeset
163 entFilters.add(person);
jurzua
parents:
diff changeset
164
jurzua
parents:
diff changeset
165 SEntity text = new SEntity(2, "TEXT");
jurzua
parents:
diff changeset
166 entFilters.add(text);
jurzua
parents:
diff changeset
167
jurzua
parents:
diff changeset
168
jurzua
parents:
diff changeset
169 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role");
jurzua
parents:
diff changeset
170 SRelationMultipleName text_to_person = new SRelationMultipleName(text, person, "was_created_by", "had_patron", "was_dedicated_to");
jurzua
parents:
diff changeset
171 relFilters.add(text_to_person);
jurzua
parents:
diff changeset
172 relFilters.add(has_role);
jurzua
parents:
diff changeset
173
jurzua
parents:
diff changeset
174 return this.appBean.getSS().search(entFilters, relFilters);
jurzua
parents:
diff changeset
175 }
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 private List<ResultEntry> execute02(String personName, String roleName){
jurzua
parents:
diff changeset
178
jurzua
parents:
diff changeset
179 List<SEntity> entFilters = new ArrayList<SEntity>();
jurzua
parents:
diff changeset
180 List<SRelation> relFilters = new ArrayList<SRelation>();
jurzua
parents:
diff changeset
181
jurzua
parents:
diff changeset
182 //The user can select between:
jurzua
parents:
diff changeset
183 //"Author", "Annotator", "Copyist", "Corrector", "Dedicatee", "Illuminator", "Illustrator", "Owner", "Patron", "inspector"
jurzua
parents:
diff changeset
184 SEntity role = new SEntity(0, "ROLE");
jurzua
parents:
diff changeset
185 role.addAtt(new SAttributeUniqueName("name", roleName));
jurzua
parents:
diff changeset
186 entFilters.add(role);
jurzua
parents:
diff changeset
187
jurzua
parents:
diff changeset
188 //alias, "is_prime_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
189 //alias, "is_alias_name_of", "PERSON"
jurzua
parents:
diff changeset
190 SEntity person = new SEntity(1, "PERSON");
jurzua
parents:
diff changeset
191 entFilters.add(person);
jurzua
parents:
diff changeset
192
jurzua
parents:
diff changeset
193 SEntity alias = new SEntity(2, "ALIAS");
jurzua
parents:
diff changeset
194 alias.addAtt(new SAttributeUniqueName("alias", personName));
jurzua
parents:
diff changeset
195 entFilters.add(alias);
jurzua
parents:
diff changeset
196
jurzua
parents:
diff changeset
197 SEntity text = new SEntity(3, "TEXT");
jurzua
parents:
diff changeset
198 entFilters.add(text);
jurzua
parents:
diff changeset
199
jurzua
parents:
diff changeset
200
jurzua
parents:
diff changeset
201 SRelationMultipleName is_alias = new SRelationMultipleName(alias, person, "is_alias_name_of", "is_prime_alias_name_of");
jurzua
parents:
diff changeset
202 SRelationUniqueName has_role = new SRelationUniqueName(person, role, "has_role");
jurzua
parents:
diff changeset
203 SRelationMultipleName text_to_person = new SRelationMultipleName(text, person, "was_created_by", "had_patron", "was_dedicated_to");
jurzua
parents:
diff changeset
204 relFilters.add(text_to_person);
jurzua
parents:
diff changeset
205 relFilters.add(has_role);
jurzua
parents:
diff changeset
206 relFilters.add(is_alias);
jurzua
parents:
diff changeset
207
jurzua
parents:
diff changeset
208 return this.appBean.getSS().search(entFilters, relFilters);
jurzua
parents:
diff changeset
209 }
jurzua
parents:
diff changeset
210
jurzua
parents:
diff changeset
211
jurzua
parents:
diff changeset
212 public String getPersonName() {
jurzua
parents:
diff changeset
213 return personName;
jurzua
parents:
diff changeset
214 }
jurzua
parents:
diff changeset
215
jurzua
parents:
diff changeset
216 public void setPersonName(String personName) {
jurzua
parents:
diff changeset
217 this.personName = personName;
jurzua
parents:
diff changeset
218 }
jurzua
parents:
diff changeset
219
jurzua
parents:
diff changeset
220 public String getRoleName() {
jurzua
parents:
diff changeset
221 return roleName;
jurzua
parents:
diff changeset
222 }
jurzua
parents:
diff changeset
223
jurzua
parents:
diff changeset
224 public void setRoleName(String roleName) {
jurzua
parents:
diff changeset
225 this.roleName = roleName;
jurzua
parents:
diff changeset
226 }
jurzua
parents:
diff changeset
227
jurzua
parents:
diff changeset
228 public List<SelectItem> getRoleList() {
jurzua
parents:
diff changeset
229 return roleList;
jurzua
parents:
diff changeset
230 }
jurzua
parents:
diff changeset
231
jurzua
parents:
diff changeset
232 public class ResultEntry06 implements Comparable<ResultEntry06>, Serializable{
jurzua
parents:
diff changeset
233 private static final long serialVersionUID = 3814421582310240565L;
jurzua
parents:
diff changeset
234
jurzua
parents:
diff changeset
235 private Long personId;
jurzua
parents:
diff changeset
236 private String personOv;
jurzua
parents:
diff changeset
237 private String personNOv;
jurzua
parents:
diff changeset
238 private String alias;
jurzua
parents:
diff changeset
239 private String alias2Person;
jurzua
parents:
diff changeset
240 private Long titleId;
jurzua
parents:
diff changeset
241 private String titleOv;
jurzua
parents:
diff changeset
242 private String titleNOv;
jurzua
parents:
diff changeset
243 private String role;
jurzua
parents:
diff changeset
244 private String title2Person;
jurzua
parents:
diff changeset
245 private String subject;
jurzua
parents:
diff changeset
246
jurzua
parents:
diff changeset
247 public ResultEntry06(
jurzua
parents:
diff changeset
248 Entity person,
jurzua
parents:
diff changeset
249 Entity title,
jurzua
parents:
diff changeset
250 String alias,
jurzua
parents:
diff changeset
251 String alias2Person,
jurzua
parents:
diff changeset
252 String role,
jurzua
parents:
diff changeset
253 String title2Person,
jurzua
parents:
diff changeset
254 String subject
jurzua
parents:
diff changeset
255 ){
jurzua
parents:
diff changeset
256
jurzua
parents:
diff changeset
257 set(person, title);
jurzua
parents:
diff changeset
258 this.alias = alias;
jurzua
parents:
diff changeset
259 this.alias2Person = alias2Person;
jurzua
parents:
diff changeset
260 this.role = role;
jurzua
parents:
diff changeset
261 this.title2Person = title2Person;
jurzua
parents:
diff changeset
262 this.subject = subject;
jurzua
parents:
diff changeset
263 }
jurzua
parents:
diff changeset
264
jurzua
parents:
diff changeset
265 private void set(Entity person, Entity title){
jurzua
parents:
diff changeset
266 this.personId = person.getId();
jurzua
parents:
diff changeset
267 this.personOv = person.getOwnValue();
jurzua
parents:
diff changeset
268 this.personNOv = person.getNormalizedOwnValue();
jurzua
parents:
diff changeset
269
jurzua
parents:
diff changeset
270 this.titleId = title.getId();
jurzua
parents:
diff changeset
271 this.titleOv = title.getOwnValue();
jurzua
parents:
diff changeset
272 this.titleNOv = title.getNormalizedOwnValue();
jurzua
parents:
diff changeset
273 }
jurzua
parents:
diff changeset
274
jurzua
parents:
diff changeset
275 public Long getPersonId() {
jurzua
parents:
diff changeset
276 return personId;
jurzua
parents:
diff changeset
277 }
jurzua
parents:
diff changeset
278
jurzua
parents:
diff changeset
279 public String getPersonOv() {
jurzua
parents:
diff changeset
280 return personOv;
jurzua
parents:
diff changeset
281 }
jurzua
parents:
diff changeset
282
jurzua
parents:
diff changeset
283 public String getPersonNOv() {
jurzua
parents:
diff changeset
284 return personNOv;
jurzua
parents:
diff changeset
285 }
jurzua
parents:
diff changeset
286
jurzua
parents:
diff changeset
287 public String getAlias() {
jurzua
parents:
diff changeset
288 return alias;
jurzua
parents:
diff changeset
289 }
jurzua
parents:
diff changeset
290
jurzua
parents:
diff changeset
291 public String getAlias2Person() {
jurzua
parents:
diff changeset
292 return alias2Person;
jurzua
parents:
diff changeset
293 }
jurzua
parents:
diff changeset
294
jurzua
parents:
diff changeset
295 public Long getTitleId() {
jurzua
parents:
diff changeset
296 return titleId;
jurzua
parents:
diff changeset
297 }
jurzua
parents:
diff changeset
298
jurzua
parents:
diff changeset
299 public String getTitleOv() {
jurzua
parents:
diff changeset
300 return titleOv;
jurzua
parents:
diff changeset
301 }
jurzua
parents:
diff changeset
302
jurzua
parents:
diff changeset
303 public String getTitleNOv() {
jurzua
parents:
diff changeset
304 return titleNOv;
jurzua
parents:
diff changeset
305 }
jurzua
parents:
diff changeset
306
jurzua
parents:
diff changeset
307 public String getRole() {
jurzua
parents:
diff changeset
308 return role;
jurzua
parents:
diff changeset
309 }
jurzua
parents:
diff changeset
310
jurzua
parents:
diff changeset
311 public String getTitle2Person() {
jurzua
parents:
diff changeset
312 return title2Person;
jurzua
parents:
diff changeset
313 }
jurzua
parents:
diff changeset
314
jurzua
parents:
diff changeset
315 public String getSubject() {
jurzua
parents:
diff changeset
316 return subject;
jurzua
parents:
diff changeset
317 }
jurzua
parents:
diff changeset
318
jurzua
parents:
diff changeset
319 @Override
jurzua
parents:
diff changeset
320 public int compareTo(ResultEntry06 o) {
jurzua
parents:
diff changeset
321 if(!this.personId.equals(o.personId)){
jurzua
parents:
diff changeset
322
131
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 1
diff changeset
323 int comparisonPerson = OldNormalizerUtils.normalizedToCompare(personNOv).compareTo(
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 1
diff changeset
324 OldNormalizerUtils.normalizedToCompare(o.personNOv));
1
jurzua
parents:
diff changeset
325 if(comparisonPerson != 0){
jurzua
parents:
diff changeset
326 return comparisonPerson;
jurzua
parents:
diff changeset
327 }else{
jurzua
parents:
diff changeset
328 if(StringUtils.isNotEmpty(role) && StringUtils.isNotEmpty(o.role)){
jurzua
parents:
diff changeset
329 int comparisonRole = this.role.compareTo(o.role);
jurzua
parents:
diff changeset
330 if(comparisonRole != 0){
jurzua
parents:
diff changeset
331 return comparisonRole;
jurzua
parents:
diff changeset
332 }
jurzua
parents:
diff changeset
333 }else{
jurzua
parents:
diff changeset
334 if(StringUtils.isNotEmpty(role)){
jurzua
parents:
diff changeset
335 return -1;
jurzua
parents:
diff changeset
336 }else if(StringUtils.isNotEmpty(o.role)){
jurzua
parents:
diff changeset
337 return 1;
jurzua
parents:
diff changeset
338 }
jurzua
parents:
diff changeset
339 }
jurzua
parents:
diff changeset
340 }
jurzua
parents:
diff changeset
341 }else{
jurzua
parents:
diff changeset
342 if(!this.titleId.equals(o.titleId)){
jurzua
parents:
diff changeset
343 //comparing subject
jurzua
parents:
diff changeset
344 if(StringUtils.isNotEmpty(subject) && StringUtils.isNotEmpty(o.subject)){
jurzua
parents:
diff changeset
345 int comparisonSubject = this.subject.compareTo(o.subject);
jurzua
parents:
diff changeset
346 if(comparisonSubject != 0){
jurzua
parents:
diff changeset
347 return comparisonSubject;
jurzua
parents:
diff changeset
348 }
jurzua
parents:
diff changeset
349 }else{
jurzua
parents:
diff changeset
350 if(StringUtils.isNotEmpty(subject)){
jurzua
parents:
diff changeset
351 return -1;
jurzua
parents:
diff changeset
352 }else if(StringUtils.isNotEmpty(o.subject)){
jurzua
parents:
diff changeset
353 return 1;
jurzua
parents:
diff changeset
354 }
jurzua
parents:
diff changeset
355 }
jurzua
parents:
diff changeset
356 //comparing title
131
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 1
diff changeset
357 int comparisonTitle = OldNormalizerUtils.normalizedToCompare(titleNOv).compareTo(
8ae989269f51 New ArabicNormalizer. NormalizerUtils.normalize() now does both translit and arabic normalization.
casties
parents: 1
diff changeset
358 OldNormalizerUtils.normalizedToCompare(o.titleNOv));
1
jurzua
parents:
diff changeset
359 return comparisonTitle;
jurzua
parents:
diff changeset
360 }
jurzua
parents:
diff changeset
361 }
jurzua
parents:
diff changeset
362 return 0;
jurzua
parents:
diff changeset
363 }
jurzua
parents:
diff changeset
364 }
jurzua
parents:
diff changeset
365 }