]> source.dussan.org Git - vaadin-framework.git/commitdiff
Testcase and fix for #2917 - BeanItemContainer.sort fails if property value is null
authorArtur Signell <artur.signell@itmill.com>
Fri, 8 May 2009 14:31:14 +0000 (14:31 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 8 May 2009 14:31:14 +0000 (14:31 +0000)
svn changeset:7690/svn branch:6.0

src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerGenerator.java [new file with mode: 0644]
src/com/itmill/toolkit/tests/components/beanitemcontainer/BeanItemContainerNullValues.java [new file with mode: 0644]

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 (file)
index 0000000..b08f317
--- /dev/null
@@ -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<TestBean> createContainer(int size) {
+
+        BeanItemContainer<TestBean> container = new BeanItemContainer<TestBean>(
+                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 (file)
index 0000000..c647689
--- /dev/null
@@ -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);
+    }
+
+}