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.

TableCacheMinimizingOnFetchRows.java 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.vaadin.tests.components.table;
  2. import java.io.Serializable;
  3. import java.util.List;
  4. import com.vaadin.data.util.BeanContainer;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.tests.components.AbstractTestUIWithLog;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.Button.ClickEvent;
  9. import com.vaadin.ui.Table;
  10. @SuppressWarnings("serial")
  11. public class TableCacheMinimizingOnFetchRows extends AbstractTestUIWithLog {
  12. @Override
  13. protected void setup(VaadinRequest request) {
  14. getLayout().setMargin(true);
  15. final Table table = new Table("Beans of All Sorts");
  16. BeanContainer<String, Bean> beans = new BeanContainer<String, Bean>(
  17. Bean.class) {
  18. @Override
  19. public List<String> getItemIds(int startIndex, int numberOfIds) {
  20. // numberOfIds should be about 60 after scrolling down the table
  21. log.log("requested " + numberOfIds + " rows");
  22. return super.getItemIds(startIndex, numberOfIds);
  23. }
  24. };
  25. beans.setBeanIdProperty("name");
  26. for (int i = 0; i < 10000; i++) {
  27. beans.addBean(new Bean("Common bean" + i, i));
  28. }
  29. table.setContainerDataSource(beans);
  30. table.setPageLength(20);
  31. table.setVisibleColumns(new Object[] { "name", "value" });
  32. table.setWidth("800px");
  33. Button button = new Button("scroll down");
  34. button.addClickListener(new Button.ClickListener() {
  35. @Override
  36. public void buttonClick(ClickEvent event) {
  37. table.setCurrentPageFirstItemIndex(table.size());
  38. }
  39. });
  40. addComponent(table);
  41. addComponent(button);
  42. }
  43. public class Bean implements Serializable {
  44. String name;
  45. int value;
  46. public Bean(String name, int value) {
  47. this.name = name;
  48. this.value = value;
  49. }
  50. public String getName() {
  51. return name;
  52. }
  53. public void setName(String name) {
  54. this.name = name;
  55. }
  56. public int getValue() {
  57. return value;
  58. }
  59. public void setValue(int value) {
  60. this.value = value;
  61. }
  62. }
  63. @Override
  64. protected String getTestDescription() {
  65. return "Ensure that when scrolling from top to bottom in a big table with 10000 items, not all rows in the range are cached";
  66. }
  67. @Override
  68. protected Integer getTicketNumber() {
  69. return 13576;
  70. }
  71. }