summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHenri Sara <henri.sara@itmill.com>2011-09-01 12:11:39 +0000
committerHenri Sara <henri.sara@itmill.com>2011-09-01 12:11:39 +0000
commit835a4f80470827c8b2a2eeda51b18a9a447036b1 (patch)
tree49eff3914f9837060f96cd3f9f5d705338229c75 /src
parenta8d6138ab0e42a1412d37ef151d77b8e40152271 (diff)
downloadvaadin-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.java2
-rw-r--r--src/com/vaadin/data/util/IndexedContainer.java18
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;
}
/**