1
22
23 package com.liferay.portal.kernel.search;
24
25 import java.util.ArrayList;
26 import java.util.Comparator;
27 import java.util.List;
28
29
35 public class DocumentComparator implements Comparator<Document> {
36
37 public DocumentComparator() {
38 this(true, false);
39 }
40
41 public DocumentComparator(boolean asc, boolean caseSensitive) {
42 _asc = asc;
43 _caseSensitive = caseSensitive;
44 }
45
46 public void addOrderBy(String name) {
47 addOrderBy(name, _asc, _caseSensitive);
48 }
49
50 public void addOrderBy(String name, boolean asc, boolean caseSensitive) {
51 DocumentComparatorOrderBy orderBy = new DocumentComparatorOrderBy(
52 name, asc, caseSensitive);
53
54 _columns.add(orderBy);
55 }
56
57 public int compare(Document doc1, Document doc2) {
58 for (DocumentComparatorOrderBy orderBy : _columns) {
59 String value1 = doc1.get(orderBy.getName());
60 String value2 = doc2.get(orderBy.getName());
61
62 if (!orderBy.isAsc()) {
63 String temp = value1;
64
65 value1 = value2;
66 value2 = temp;
67 }
68
69 int result = 0;
70
71 if ((value1 != null) && (value2 != null)) {
72 if (orderBy.isCaseSensitive()) {
73 result = value1.compareTo(value2);
74 }
75 else {
76 result = value1.compareToIgnoreCase(value2);
77 }
78 }
79
80 if (result != 0) {
81 return result;
82 }
83 }
84
85 return 0;
86 }
87
88 private boolean _asc;
89 private boolean _caseSensitive;
90 private List<DocumentComparatorOrderBy> _columns =
91 new ArrayList<DocumentComparatorOrderBy>();
92
93 }