diff options
author | Henri Sara <henri.sara@itmill.com> | 2011-09-01 12:11:39 +0000 |
---|---|---|
committer | Henri Sara <henri.sara@itmill.com> | 2011-09-01 12:11:39 +0000 |
commit | 835a4f80470827c8b2a2eeda51b18a9a447036b1 (patch) | |
tree | 49eff3914f9837060f96cd3f9f5d705338229c75 /src | |
parent | a8d6138ab0e42a1412d37ef151d77b8e40152271 (diff) | |
download | vaadin-framework-835a4f80470827c8b2a2eeda51b18a9a447036b1.tar.gz vaadin-framework-835a4f80470827c8b2a2eeda51b18a9a447036b1.zip |
#7517 IndexedContainer.addItem() performance improvement, related performance test
svn changeset:20789/svn branch:6.6
Diffstat (limited to 'src')
-rw-r--r-- | src/com/vaadin/data/util/AbstractInMemoryContainer.java | 2 | ||||
-rw-r--r-- | src/com/vaadin/data/util/IndexedContainer.java | 18 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/com/vaadin/data/util/AbstractInMemoryContainer.java b/src/com/vaadin/data/util/AbstractInMemoryContainer.java index 3a9a0a8987..3a48d9e0de 100644 --- a/src/com/vaadin/data/util/AbstractInMemoryContainer.java +++ b/src/com/vaadin/data/util/AbstractInMemoryContainer.java @@ -722,7 +722,7 @@ public abstract class AbstractInMemoryContainer<ITEMIDTYPE, PROPERTYIDCLASS, ITE getAllItemIds().indexOf(previousItemId) + 1, newItemId, item); } - if (newItem != null) { + if (newItem != null && filter) { // TODO filter only this item, use fireItemAdded() filterAll(); if (!isFiltered()) { diff --git a/src/com/vaadin/data/util/IndexedContainer.java b/src/com/vaadin/data/util/IndexedContainer.java index 7fbb1e9128..2f45def4f1 100644 --- a/src/com/vaadin/data/util/IndexedContainer.java +++ b/src/com/vaadin/data/util/IndexedContainer.java @@ -106,8 +106,11 @@ public class IndexedContainer extends this(); if (items != null) { for (final Iterator<?> i = itemIds.iterator(); i.hasNext();) { - this.addItem(i.next()); + Object itemId = i.next(); + internalAddItemAtEnd(itemId, new IndexedContainerItem(itemId), + false); } + filterAll(); } } @@ -246,8 +249,17 @@ public class IndexedContainer extends */ @Override public Item addItem(Object itemId) { - return internalAddItemAtEnd(itemId, new IndexedContainerItem(itemId), - true); + Item item = internalAddItemAtEnd(itemId, new IndexedContainerItem( + itemId), false); + if (!isFiltered()) { + // always the last item + fireItemAdded(size() - 1, itemId, item); + } else if (passesFilters(itemId)) { + getFilteredItemIds().add(itemId); + // always the last item + fireItemAdded(size() - 1, itemId, item); + } + return item; } /** |