From: Artur Signell Date: Fri, 8 May 2009 14:31:14 +0000 (+0000) Subject: Testcase and fix for #2917 - BeanItemContainer.sort fails if property value is null X-Git-Tag: 6.7.0.beta1~2935 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c409e55e940a89bcea658ef5bd2b1ea098fd2005;p=vaadin-framework.git Testcase and fix for #2917 - BeanItemContainer.sort fails if property value is null svn changeset:7690/svn branch:6.0 --- diff --git a/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerGenerator.java b/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerGenerator.java new file mode 100644 index 0000000000..b08f317f3c --- /dev/null +++ b/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerGenerator.java @@ -0,0 +1,98 @@ +package com.itmill.toolkit.tests.components.beanitemcontainer; + +import java.util.Date; +import java.util.Random; + +import com.itmill.toolkit.data.util.BeanItemContainer; + +public class BeanItemContainerGenerator { + + public static BeanItemContainer createContainer(int size) { + + BeanItemContainer container = new BeanItemContainer( + TestBean.class); + Random r = new Random(new Date().getTime()); + for (int i = 0; i < size; i++) { + container.addBean(new TestBean(r)); + } + + return container; + + } + + public static class TestBean { + private String name, address, city, country; + private int age, shoesize; + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public int getShoesize() { + return shoesize; + } + + public void setShoesize(int shoesize) { + this.shoesize = shoesize; + } + + public TestBean(Random r) { + age = r.nextInt(100) + 5; + shoesize = r.nextInt(10) + 35; + name = createRandomString(r, r.nextInt(5) + 5); + address = createRandomString(r, r.nextInt(15) + 5) + " " + + r.nextInt(100) + 1; + city = createRandomString(r, r.nextInt(7) + 3); + if (r.nextBoolean()) { + country = createRandomString(r, r.nextInt(4) + 4); + } + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + } + + public static String createRandomString(Random r, int len) { + StringBuilder b = new StringBuilder(); + for (int i = 0; i < len; i++) { + b.append((char) (r.nextInt('z' - 'a') + 'a')); + } + + return b.toString(); + } + +} diff --git a/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerNullValues.java b/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerNullValues.java new file mode 100644 index 0000000000..c64768975e --- /dev/null +++ b/src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerNullValues.java @@ -0,0 +1,47 @@ +package com.itmill.toolkit.tests.components.beanitemcontainer; + +import com.itmill.toolkit.tests.components.TestBase; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Table; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class BeanItemContainerNullValues extends TestBase { + + private Table table; + + @Override + protected String getDescription() { + return "Null values should be sorted first (ascending sort) in a BeanItemContainer. Sort the 'country' column to see that the empty values come first."; + } + + @Override + protected Integer getTicketNumber() { + return 2917; + } + + @Override + protected void setup() { + table = new Table(); + table.setSortDisabled(false); + table.setContainerDataSource(BeanItemContainerGenerator + .createContainer(100)); + table.setColumnCollapsingAllowed(true); + + Button b = new Button("Disable sorting", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + table.setSortDisabled(!table.isSortDisabled()); + if (table.isSortDisabled()) { + event.getButton().setCaption("Enable sorting"); + } else { + event.getButton().setCaption("Disable sorting"); + } + } + + }); + + addComponent(table); + addComponent(b); + } + +}