I'm trying to implement PredicateEvaluator for ordering purpose only - no filtering.
So I started with:
public class OrderByTagPredicate implements PredicateEvaluator {
private static final Logger log = Logger.getLogger(OrderByTagPredicate.class.getSimpleName());
public OrderByTagPredicate() {
super();
}
@Override
public Comparator<Row> getOrderByComparator(final Predicate predicate, final EvaluationContext context) {
return new Comparator<Row>() {
@Override
public int compare(Row o1, Row o2) {
// TODO Auto-generated method stub
return 0;
}
};
}
@Override
public boolean canFilter(Predicate arg0, EvaluationContext arg1) {
return true;
}
@Override
public boolean canXpath(Predicate arg0, EvaluationContext arg1) {
return true;
}
@Override
public FacetExtractor getFacetExtractor(Predicate arg0, EvaluationContext arg1) {
return null;
}
@Override
public String[] getOrderByProperties(Predicate arg0, EvaluationContext arg1) {
return null;
}
@Override
public String getXPathExpression(Predicate arg0, EvaluationContext arg1) {
return null;
}
@Override
public boolean includes(Predicate arg0, Row arg1, EvaluationContext arg2) {
return true;
}
@Override
public boolean isFiltering(Predicate arg0, EvaluationContext arg1) {
return false;
}
}
I registered the predicate with: query.registerPredicateEvaluator("orderbytag", new OrderByTagPredicate()); And added it the map: map.put("orderbytag","xxx"); which is then used to create a PredicateGroup.
I've tried to debug by putting breakpoints in all the methods from the OrderByTagPredicate class, but it seems like the methods "getOrderByComparator(...)" never got called.
Any clue?