SortableSoccerMatchAnalysisDataProvider.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package components.matchtable;
  2. import objects.SoccerMatchAnalysis;
  3. import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
  4. import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
  5. import org.apache.wicket.model.IModel;
  6. import org.apache.wicket.model.Model;
  7. import org.apache.wicket.model.PropertyModel;
  8. import java.io.Serializable;
  9. import java.util.Comparator;
  10. import java.util.Iterator;
  11. import java.util.List;
  12. public class SortableSoccerMatchAnalysisDataProvider extends SortableDataProvider<SoccerMatchAnalysis, String> {
  13. class SortableDataProviderComparator implements Comparator<SoccerMatchAnalysis>, Serializable {
  14. @Override
  15. public int compare(SoccerMatchAnalysis o1, SoccerMatchAnalysis o2) {
  16. PropertyModel<Comparable> model1 = new PropertyModel<>(o1, getSort().getProperty());
  17. PropertyModel<Comparable> model2 = new PropertyModel<>(o2, getSort().getProperty());
  18. int result = model1.getObject().compareTo(model2.getObject());
  19. if (!getSort().isAscending()) {
  20. result = -result;
  21. }
  22. return result;
  23. }
  24. }
  25. List<SoccerMatchAnalysis> matches;
  26. private SortableDataProviderComparator comparator = new SortableDataProviderComparator();
  27. public SortableSoccerMatchAnalysisDataProvider(List<SoccerMatchAnalysis> matches) {
  28. this.matches = matches;
  29. setSort("calculatedPercentages.drawPercentage", SortOrder.DESCENDING);
  30. }
  31. @Override
  32. public Iterator<SoccerMatchAnalysis> iterator(long first, long count) {
  33. matches.sort(comparator);
  34. return matches.subList((int)first, (int)(first + count)).iterator();
  35. }
  36. @Override
  37. public long size() {
  38. return matches.size();
  39. }
  40. @Override
  41. public IModel<SoccerMatchAnalysis> model(SoccerMatchAnalysis object) {
  42. return Model.of(object);
  43. }
  44. }