From 835a4f80470827c8b2a2eeda51b18a9a447036b1 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 1 Sep 2011 12:11:39 +0000 Subject: #7517 IndexedContainer.addItem() performance improvement, related performance test svn changeset:20789/svn branch:6.6 --- .../vaadin/data/util/AbstractInMemoryContainer.java | 2 +- src/com/vaadin/data/util/IndexedContainer.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src') 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 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; } /** -- cgit v1.2.3