import java.util.List;
public interface PartitionedFinder
> extends Finder {
// public List bestLanguageMatch(List list, List languageOrder);
public > List bestPartitionMatch(List list, List partitionOrder);
}
aspect PartitionedFinderAspect {
public Class extends P> PartitionedFinder.getPartitionedType(){
return ClassUtils.guessGenericType(getClass());
}
public List PartitionedFinder.getPartitionOrder(){
return H2Deployment.instance().getPartitionOrder(getPartitionedType());
}
public > List PartitionedFinder.bestPartitionMatch(List list, List partitionOrder){
return new OrderComparator(partitionOrder){
@Override
public String getOrdering(T partitioned){
return partitioned.getPartitionId();
}
}.bestMatch(list);
}
}
class OrderComparator {
OrderComparator(List ls) {}
public String getOrdering(A a) {return "";}
List bestMatch(List l) {return null;}
}