diff options
author | Artur Signell <artur@vaadin.com> | 2012-10-02 06:29:01 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-10-02 06:29:01 +0000 |
commit | 79338ff6c3de371cd7f6fca6aa4ce9449bccd6ee (patch) | |
tree | 5a4e98f6aaedf575acf19e6680a78482d51afbd5 /uitest | |
parent | 233be6f0e57c5a991e4d8587ce13d7010377d2a9 (diff) | |
parent | 3537127077043c8eeb62aa11f6bdbad635931e54 (diff) | |
download | vaadin-framework-79338ff6c3de371cd7f6fca6aa4ce9449bccd6ee.tar.gz vaadin-framework-79338ff6c3de371cd7f6fca6aa4ce9449bccd6ee.zip |
Merge "Merge from 6.8: Large lazy container for tests"
Diffstat (limited to 'uitest')
-rw-r--r-- | uitest/src/com/vaadin/tests/util/LargeContainer.java | 219 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/util/RangeCollection.java | 48 |
2 files changed, 267 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/util/LargeContainer.java b/uitest/src/com/vaadin/tests/util/LargeContainer.java new file mode 100644 index 0000000000..9d02cfa53c --- /dev/null +++ b/uitest/src/com/vaadin/tests/util/LargeContainer.java @@ -0,0 +1,219 @@ +package com.vaadin.tests.util; + +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.vaadin.data.Container; +import com.vaadin.data.ContainerHelpers; +import com.vaadin.data.Item; +import com.vaadin.data.Property; +import com.vaadin.data.util.AbstractContainer; +import com.vaadin.data.util.ObjectProperty; + +public class LargeContainer extends AbstractContainer implements + Container.Indexed { + + public class TestItem implements Item { + + private final Object itemId; + + public TestItem(Object itemId) { + this.itemId = itemId; + } + + public Property<?> getItemProperty(Object propertyId) { + ObjectProperty<String> property = new ObjectProperty<String>( + containerPropertyIdDefaults.get(propertyId) + " (item " + + itemId + ")"); + return property; + + } + + public Collection<?> getItemPropertyIds() { + return getContainerPropertyIds(); + } + + @SuppressWarnings("rawtypes") + public boolean addItemProperty(Object id, Property property) + throws UnsupportedOperationException { + throw new UnsupportedOperationException("Cannot add item property"); + } + + public boolean removeItemProperty(Object id) + throws UnsupportedOperationException { + throw new UnsupportedOperationException( + "Cannot remove item property"); + } + + } + + private int size = 1000; + + private Map<Object, Class<?>> containerPropertyIdTypes = new HashMap<Object, Class<?>>(); + private Map<Object, Object> containerPropertyIdDefaults = new HashMap<Object, Object>(); + + public Object nextItemId(Object itemId) { + Integer id = (Integer) itemId; + if (id >= size() - 1) { + return null; + } + return (id + 1); + } + + public Object prevItemId(Object itemId) { + Integer id = (Integer) itemId; + if (id <= 0) { + return null; + } + return (id - 1); + } + + public Object firstItemId() { + if (0 == size()) { + return null; + } + return 0; + } + + public Object lastItemId() { + if (0 == size()) { + return null; + } + return (size() - 1); + } + + public boolean isFirstId(Object itemId) { + if (null == itemId) { + return false; + } + return itemId.equals(firstItemId()); + } + + public boolean isLastId(Object itemId) { + if (null == itemId) { + return false; + } + return itemId.equals(lastItemId()); + } + + public TestItem getItem(Object itemId) { + if (!containsId(itemId)) { + return null; + } + return new TestItem(itemId); + } + + public Collection<?> getItemIds() { + return new RangeCollection(size()); + } + + @Override + public List<?> getItemIds(int startIndex, int numberOfIds) { + // TODO use a lazy list for better performance + return ContainerHelpers.getItemIdsUsingGetIdByIndex(startIndex, + numberOfIds, this); + } + + public Property<?> getContainerProperty(Object itemId, Object propertyId) { + TestItem item = getItem(itemId); + if (null == item) { + return null; + } + return item.getItemProperty(propertyId); + } + + public int size() { + return size; + } + + public boolean containsId(Object itemId) { + if (!(itemId instanceof Integer)) { + return false; + } + Integer id = (Integer) itemId; + return (id >= 0 && id < (size() - 1)); + } + + public int indexOfId(Object itemId) { + if (!containsId(itemId)) { + return -1; + } + return (Integer) itemId; + } + + public Object getIdByIndex(int index) { + return index; + } + + public void setSize(int newSize) { + size = newSize; + } + + public boolean removeAllItems() throws UnsupportedOperationException { + setSize(0); + return true; + } + + public Class<?> getType(Object propertyId) { + return containerPropertyIdTypes.get(propertyId); + } + + public Collection<?> getContainerPropertyIds() { + return containerPropertyIdTypes.keySet(); + } + + public boolean addContainerProperty(Object propertyId, Class<?> type, + Object defaultValue) throws UnsupportedOperationException { + if (containerPropertyIdTypes.containsKey(propertyId) || null == type) { + return false; + } + containerPropertyIdTypes.put(propertyId, type); + containerPropertyIdDefaults.put(propertyId, defaultValue); + return true; + } + + public boolean removeContainerProperty(Object propertyId) + throws UnsupportedOperationException { + if (!containerPropertyIdTypes.containsKey(propertyId)) { + return false; + } + containerPropertyIdTypes.remove(propertyId); + containerPropertyIdDefaults.remove(propertyId); + return true; + } + + public Item addItem(Object itemId) throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public Object addItem() throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public boolean removeItem(Object itemId) + throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public Object addItemAt(int index) throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public Item addItemAt(int index, Object newItemId) + throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public Object addItemAfter(Object previousItemId) + throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + + public Item addItemAfter(Object previousItemId, Object newItemId) + throws UnsupportedOperationException { + throw new UnsupportedOperationException("Not supported"); + } + +}
\ No newline at end of file diff --git a/uitest/src/com/vaadin/tests/util/RangeCollection.java b/uitest/src/com/vaadin/tests/util/RangeCollection.java new file mode 100644 index 0000000000..f26e3cfb15 --- /dev/null +++ b/uitest/src/com/vaadin/tests/util/RangeCollection.java @@ -0,0 +1,48 @@ +package com.vaadin.tests.util; + +import java.util.AbstractCollection; +import java.util.Iterator; + +public class RangeCollection extends AbstractCollection<Integer> { + + public static class RangeIterator implements Iterator<Integer> { + + private int value; + private int max; + + public RangeIterator(int max) { + this.max = max; + value = 0; + } + + public boolean hasNext() { + return (value < max - 1); + } + + public Integer next() { + return value++; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + + } + + private int size = 0; + + public RangeCollection(int size) { + this.size = size; + } + + @Override + public Iterator<Integer> iterator() { + return new RangeIterator(size - 1); + } + + @Override + public int size() { + return size; + } + +}
\ No newline at end of file |