You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridSortComplexity.java 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. import com.vaadin.data.provider.DataProvider;
  6. import com.vaadin.server.VaadinRequest;
  7. import com.vaadin.tests.components.AbstractTestUIWithLog;
  8. import com.vaadin.ui.Grid;
  9. import com.vaadin.ui.Grid.SelectionMode;
  10. public class GridSortComplexity extends AbstractTestUIWithLog {
  11. @Override
  12. protected int getLogSize() {
  13. return 10;
  14. }
  15. @Override
  16. protected void setup(VaadinRequest request) {
  17. List<Integer> data = new ArrayList<>();
  18. data.add(0);
  19. data.add(1);
  20. data.add(2);
  21. Grid<Integer> grid = new Grid<>();
  22. grid.addSortListener(event -> {
  23. log("ON SORT: "
  24. + event.getSortOrder().get(0).getDirection().name());
  25. });
  26. grid.addColumn(Integer::valueOf).setCaption("ID").setId("id")
  27. .setSortable(true).setSortProperty("id");
  28. grid.setDataProvider(DataProvider.fromCallbacks(query -> {
  29. log("FETCH");
  30. if (query.getSortOrders().isEmpty() || "ASCENDING".equals(
  31. query.getSortOrders().get(0).getDirection().name())) {
  32. return data.stream();
  33. } else {
  34. return data.stream().sorted(Collections.reverseOrder());
  35. }
  36. }, query -> {
  37. log("SIZE");
  38. return data.size();
  39. }));
  40. grid.setSelectionMode(SelectionMode.NONE);
  41. grid.setWidth("250px");
  42. grid.setHeightByRows(3);
  43. addComponent(grid);
  44. }
  45. @Override
  46. protected String getTestDescription() {
  47. return "Sorting Grid should not fetch data and recalculate size multiple times.";
  48. }
  49. @Override
  50. protected Integer getTicketNumber() {
  51. return 11532;
  52. }
  53. }