package org.apache.solr.schema;
import java.io.IOException;
import java.io.Reader;
import java.util.Locale;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.EmbeddedFieldComparator;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.FieldComparatorSource;
import org.apache.lucene.search.SortComparatorSource;
import org.apache.lucene.search.SortField;
@SuppressWarnings("deprecation")
public class EmbeddedSortField extends SortField implements Fieldable {
private static final long serialVersionUID = -1183402498125438208L;
private int fieldNumber = 0;
public EmbeddedSortField(String field) {
super(field);
}
public EmbeddedSortField(String field, boolean reverse) {
super(field, reverse);
}
public EmbeddedSortField(String field, int type) {
super(field, type);
}
public EmbeddedSortField(String field, int type, boolean reverse) {
super(field, type, reverse);
}
public EmbeddedSortField(String field, int type, boolean reverse, int fieldNumber) {
super(field, type, reverse);
this.setFieldNumber(fieldNumber);
}
@Override
public FieldComparator getComparator(int numHits, int sortPos) throws IOException {
String field = getField();
Locale locale = getLocale();
int type = getType();
boolean reverse = getReverse();
FieldCache.Parser parser = getParser();
if (locale != null) {
// TODO: it'd be nice to allow FieldCache.getStringIndex
// to optionally accept a Locale so sorting could then use
// the faster StringComparator impls
return new EmbeddedFieldComparator.StringComparatorLocale(numHits, field, locale);
}
switch (getType()) {
case SortField.SCORE:
return new EmbeddedFieldComparator.RelevanceComparator(numHits);
case SortField.DOC:
return new EmbeddedFieldComparator.DocComparator(numHits);
case SortField.INT:
return new EmbeddedFieldComparator.IntComparator(numHits, field, parser, getFieldNumber());
case SortField.FLOAT:
return new EmbeddedFieldComparator.FloatComparator(numHits, field, parser);
case SortField.LONG:
return new EmbeddedFieldComparator.LongComparator(numHits, field, parser);
case SortField.DOUBLE:
return new EmbeddedFieldComparator.DoubleComparator(numHits, field, parser);
case SortField.BYTE:
return new EmbeddedFieldComparator.ByteComparator(numHits, field, parser);
case SortField.SHORT:
return new EmbeddedFieldComparator.ShortComparator(numHits, field, parser);
case SortField.CUSTOM:
FieldComparatorSource comparatorSource = getComparatorSource();
assert getFactory() == null && comparatorSource != null;
return comparatorSource.newComparator(field, numHits, sortPos, reverse);
case SortField.STRING:
return new FieldComparator.StringOrdValComparator(numHits, field, sortPos, reverse);
case SortField.STRING_VAL:
return new EmbeddedFieldComparator.StringValComparator(numHits, field);
default:
throw new IllegalStateException("Illegal sort type: " + type);
}
}
public EmbeddedSortField(String field, FieldCache.Parser parser) {
super(field, parser);
}
public EmbeddedSortField(String field, FieldCache.Parser parser, boolean reverse) {
super(field, parser, reverse);
}
public EmbeddedSortField(String field, Locale locale) {
super(field, locale);
}
public EmbeddedSortField(String field, Locale locale, boolean reverse) {
super(field, locale, reverse);
}
public EmbeddedSortField(String field, SortComparatorSource comparator) {
super(field, comparator);
}
public EmbeddedSortField(String field, FieldComparatorSource comparator) {
super(field, comparator);
}
public EmbeddedSortField(String field, SortComparatorSource comparator, boolean reverse) {
super(field, comparator, reverse);
}
public EmbeddedSortField(String field, FieldComparatorSource comparator, boolean reverse) {
super(field, comparator, reverse);
}
public void setFieldNumber(int fieldNumber) {
this.fieldNumber = fieldNumber;
}
public int getFieldNumber() {
return fieldNumber;
}
@Override
public void setBoost(float boost) {
// TODO Auto-generated method stub
}
@Override
public float getBoost() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String name() {
// TODO Auto-generated method stub
return null;
}
@Override
public String stringValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public Reader readerValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public byte[] binaryValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public TokenStream tokenStreamValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isStored() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isIndexed() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isTokenized() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isCompressed() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isTermVectorStored() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isStoreOffsetWithTermVector() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isStorePositionWithTermVector() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isBinary() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getOmitNorms() {
// TODO Auto-generated method stub
return false;
}
@Override
public void setOmitNorms(boolean omitNorms) {
// TODO Auto-generated method stub
}
@Override
public void setOmitTf(boolean omitTf) {
// TODO Auto-generated method stub
}
@Override
public boolean getOmitTf() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isLazy() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getBinaryOffset() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getBinaryLength() {
// TODO Auto-generated method stub
return 0;
}
@Override
public byte[] getBinaryValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public byte[] getBinaryValue(byte[] result) {
// TODO Auto-generated method stub
return null;
}
}