You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/01/15 20:44:07 UTC
svn commit: r1558552 - in
/lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search:
MissingStringLastComparatorSource.java Sorting.java
Author: rmuir
Date: Wed Jan 15 19:44:06 2014
New Revision: 1558552
URL: http://svn.apache.org/r1558552
Log:
LUCENE-5399: remove code duplication
Removed:
lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java
Modified:
lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/Sorting.java
Modified: lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/Sorting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/Sorting.java?rev=1558552&r1=1558551&r2=1558552&view=diff
==============================================================================
--- lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/Sorting.java (original)
+++ lucene/dev/branches/lucene539399/solr/core/src/java/org/apache/solr/search/Sorting.java Wed Jan 15 19:44:06 2014
@@ -40,18 +40,25 @@ public class Sorting {
* @return SortField
*/
public static SortField getStringSortField(String fieldName, boolean reverse, boolean nullLast, boolean nullFirst) {
- if (nullLast) {
- if (!reverse) return new SortField(fieldName, nullStringLastComparatorSource);
- else return new SortField(fieldName, SortField.Type.STRING, true);
- } else if (nullFirst) {
- if (reverse) return new SortField(fieldName, nullStringLastComparatorSource, true);
- else return new SortField(fieldName, SortField.Type.STRING, false);
- } else {
- return new SortField(fieldName, SortField.Type.STRING, reverse);
+ if (nullFirst && nullLast) {
+ throw new IllegalArgumentException("Cannot specify missing values as both first and last");
}
- }
+ SortField sortField = new SortField(fieldName, SortField.Type.STRING, reverse);
+
+ // 4 cases:
+ // missingFirst / forward: default lucene behavior
+ // missingFirst / reverse: set sortMissingLast
+ // missingLast / forward: set sortMissingLast
+ // missingLast / reverse: default lucene behavior
+
+ if (nullFirst && reverse) {
+ sortField.setMissingValue(SortField.STRING_LAST);
+ } else if (nullLast && !reverse) {
+ sortField.setMissingValue(SortField.STRING_LAST);
+ }
- static final FieldComparatorSource nullStringLastComparatorSource = new MissingStringLastComparatorSource(null);
+ return sortField;
+ }
}