package fr.openwide.core.jpa.more.business.generic.model.search;
import java.util.List;
import org.apache.lucene.search.SortField;
import com.google.common.collect.ImmutableList;
import fr.openwide.core.jpa.more.business.generic.model.GenericListItem;
import fr.openwide.core.jpa.more.business.sort.ISort;
import fr.openwide.core.jpa.more.business.sort.SortUtils;
public enum GenericListItemSort implements ISort<SortField> {
SCORE {
@Override
public List<SortField> getSortFields(SortOrder sortOrder) {
return GenericEntitySort.SCORE.getSortFields(sortOrder);
}
@Override
public SortOrder getDefaultOrder() {
return GenericEntitySort.SCORE.getDefaultOrder();
}
},
ID {
@Override
public List<SortField> getSortFields(SortOrder sortOrder) {
return GenericEntitySort.ID.getSortFields(sortOrder);
}
@Override
public SortOrder getDefaultOrder() {
return GenericEntitySort.ID.getDefaultOrder();
}
},
LABEL {
@Override
public List<SortField> getSortFields(SortOrder sortOrder) {
return ImmutableList.of(
SortUtils.luceneSortField(
this, sortOrder, SortField.Type.STRING,
GenericListItem.LABEL_SORT_FIELD_NAME
)
);
}
@Override
public SortOrder getDefaultOrder() {
return SortOrder.ASC;
}
},
CODE {
@Override
public List<SortField> getSortFields(SortOrder sortOrder) {
return ImmutableList.of(
SortUtils.luceneSortField(
this, sortOrder, SortField.Type.STRING,
GenericListItem.CODE_SORT_FIELD_NAME
)
);
}
@Override
public SortOrder getDefaultOrder() {
return SortOrder.ASC;
}
},
POSITION {
@Override
public List<SortField> getSortFields(SortOrder sortOrder) {
return ImmutableList.of(
SortUtils.luceneSortField(
this, sortOrder, SortField.Type.INT,
GenericListItem.POSITION_FIELD_NAME
)
);
}
@Override
public SortOrder getDefaultOrder() {
return SortOrder.ASC;
}
};
@Override
public abstract List<SortField> getSortFields(SortOrder sortOrder);
@Override
public abstract SortOrder getDefaultOrder();
}