|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.vaadin.data.util.AbstractContainer com.vaadin.data.util.AbstractInMemoryContainer<ITEMIDTYPE,PROPERTYIDCLASS,ITEMCLASS>
ITEMIDTYPE
- the class of item identifiers in the container, use Object if can
be any classPROPERTYIDCLASS
- the class of property identifiers for the items in the container,
use Object if can be any classITEMCLASS
- the (base) class of the Item instances in the container, use
Item
if unknownpublic abstract class AbstractInMemoryContainer<ITEMIDTYPE,PROPERTYIDCLASS,ITEMCLASS extends Item>
Abstract Container
class that handles common functionality for
in-memory containers. Concrete in-memory container classes can either inherit
this class, inherit AbstractContainer
, or implement the
Container
interface directly.
Adding and removing items (if desired) must be implemented in subclasses by
overriding the appropriate add*Item() and remove*Item() and removeAllItems()
methods, calling the corresponding
#internalAddItemAfter(Object, Object, Item)
,
#internalAddItemAt(int, Object, Item)
,
internalAddItemAtEnd(Object, Item, boolean)
,
internalRemoveItem(Object)
and internalRemoveAllItems()
methods.
By default, adding and removing container properties is not supported, and
subclasses need to implement Container.getContainerPropertyIds()
. Optionally,
subclasses can override addContainerProperty(Object, Class, Object)
and removeContainerProperty(Object)
to implement them.
Features:
Container.Ordered
Container.Indexed
Filterable
and SimpleFilterable
(internal implementation,
does not implement the interface directly)
Sortable
(internal implementation, does not implement the
interface directly)
Sortable
, subclasses need to implement
getSortablePropertyIds()
and call the superclass method
sortContainer(Object[], boolean[])
in the method
sort(Object[], boolean[])
.
To implement Filterable
, subclasses need to implement the methods
Filterable#addContainerFilter(com.vaadin.data.Container.Filter)
(calling #addFilter(Filter)
),
Filterable#removeAllContainerFilters()
(calling
removeAllFilters()
) and
Filterable#removeContainerFilter(com.vaadin.data.Container.Filter)
(calling removeFilter(com.vaadin.data.Container.Filter)
).
To implement SimpleFilterable
, subclasses also need to implement the
methods
SimpleFilterable#addContainerFilter(Object, String, boolean, boolean)
and SimpleFilterable#removeContainerFilters(Object)
calling
addFilter(com.vaadin.data.Container.Filter)
and
removeFilters(Object)
respectively.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class com.vaadin.data.util.AbstractContainer |
---|
AbstractContainer.BaseItemSetChangeEvent, AbstractContainer.BasePropertySetChangeEvent |
Nested classes/interfaces inherited from interface com.vaadin.data.Container |
---|
Container.Editor, Container.Filter, Container.Filterable, Container.Hierarchical, Container.Indexed, Container.ItemSetChangeEvent, Container.ItemSetChangeListener, Container.ItemSetChangeNotifier, Container.Ordered, Container.PropertySetChangeEvent, Container.PropertySetChangeListener, Container.PropertySetChangeNotifier, Container.SimpleFilterable, Container.Sortable, Container.Viewer |
Constructor Summary | |
---|---|
protected |
AbstractInMemoryContainer()
Constructor for an abstract in-memory container. |
Method Summary | |
---|---|
boolean |
addContainerProperty(Object propertyId,
Class<?> type,
Object defaultValue)
Adds a new Property to all Items in the Container. |
protected void |
addFilter(Container.Filter filter)
Adds a container filter and re-filter the view. |
Object |
addItem()
Creates a new Item into the Container, and assign it an automatic ID. |
Item |
addItem(Object itemId)
Creates a new Item with the given ID in the Container. |
Object |
addItemAfter(Object previousItemId)
Adds a new item after the given item. |
Item |
addItemAfter(Object previousItemId,
Object newItemId)
Adds a new item after the given item. |
Object |
addItemAt(int index)
Adds a new item at given index (in the filtered view). |
Item |
addItemAt(int index,
Object newItemId)
Adds a new item at given index (in the filtered view). |
void |
addListener(Container.ItemSetChangeListener listener)
Implementation of the corresponding method in ItemSetChangeNotifier , override with the corresponding public
method and implement the interface to use this. |
boolean |
containsId(Object itemId)
Tests if the Container contains the specified Item. |
protected boolean |
doFilterContainer(boolean hasFilters)
Filters the data in the container and updates internal data structures. |
protected void |
doSort()
Perform the sorting of the data structures in the container. |
protected void |
filterAll()
Filter the view to recreate the visible item list from the unfiltered items, and send a notification if the set of visible items changed in any way. |
protected void |
fireItemAdded(int position,
ITEMIDTYPE itemId,
ITEMCLASS item)
Notify item set change listeners that an item has been added to the container. |
protected void |
fireItemRemoved(int position,
Object itemId)
Notify item set change listeners that an item has been removed from the container. |
ITEMIDTYPE |
firstItemId()
Gets the ID of the first Item in the Container. |
protected List<ITEMIDTYPE> |
getAllItemIds()
Internal helper method to get the internal list of all item identifiers. |
protected List<ITEMIDTYPE> |
getFilteredItemIds()
Internal helper method to get the internal list of filtered item identifiers. |
protected Set<Container.Filter> |
getFilters()
Returns the internal collection of filters. |
ITEMIDTYPE |
getIdByIndex(int index)
Gets the ID of an Item by an index number. |
ITEMCLASS |
getItem(Object itemId)
Gets the Item with the given Item ID from the Container. |
List<?> |
getItemIds()
Gets the ID's of all visible (after filtering and sorting) Items stored in the Container. |
protected ItemSorter |
getItemSorter()
Returns the ItemSorter used for comparing items in a sort. |
protected Collection<?> |
getSortablePropertyIds()
Returns the sortable property identifiers for the container. |
protected abstract ITEMCLASS |
getUnfilteredItem(Object itemId)
Get an item even if filtered out. |
protected List<ITEMIDTYPE> |
getVisibleItemIds()
Returns the internal list of visible item identifiers after filtering. |
int |
indexOfId(Object itemId)
Gets the index of the Item corresponding to the itemId. |
protected ITEMCLASS |
internalAddItemAfter(ITEMIDTYPE previousItemId,
ITEMIDTYPE newItemId,
ITEMCLASS item,
boolean filter)
Add an item after a given (visible) item, and perform filtering. |
protected ITEMCLASS |
internalAddItemAt(int index,
ITEMIDTYPE newItemId,
ITEMCLASS item,
boolean filter)
Add an item at a given (visible after filtering) item index, and perform filtering. |
protected ITEMCLASS |
internalAddItemAtEnd(ITEMIDTYPE newItemId,
ITEMCLASS item,
boolean filter)
Add an item at the end of the container, and perform filtering if necessary. |
protected void |
internalRemoveAllItems()
Removes all items from the internal data structures of this class. |
protected boolean |
internalRemoveItem(Object itemId)
Removes a single item from the internal data structures of this class. |
protected boolean |
isFiltered()
Returns true is the container has active filters. |
boolean |
isFirstId(Object itemId)
Tests if the Item corresponding to the given Item ID is the first Item in the Container. |
boolean |
isLastId(Object itemId)
Tests if the Item corresponding to the given Item ID is the last Item in the Container. |
protected boolean |
isPropertyFiltered(Object propertyId)
Checks if there is a filter that applies to a given property. |
ITEMIDTYPE |
lastItemId()
Gets the ID of the last Item in the Container.. |
ITEMIDTYPE |
nextItemId(Object itemId)
Gets the ID of the Item following the Item that corresponds to itemId . |
protected boolean |
passesFilters(Object itemId)
Checks if the given itemId passes the filters set for the container. |
ITEMIDTYPE |
prevItemId(Object itemId)
Gets the ID of the Item preceding the Item that corresponds to itemId . |
protected void |
registerNewItem(int position,
ITEMIDTYPE itemId,
ITEMCLASS item)
Registers a new item as having been added to the container. |
protected void |
removeAllFilters()
Remove all container filters for all properties and re-filter the view. |
boolean |
removeAllItems()
Removes all Items from the Container. |
boolean |
removeContainerProperty(Object propertyId)
Removes a Property specified by the given Property ID from the Container. |
protected void |
removeFilter(Container.Filter filter)
Remove a specific container filter and re-filter the view (if necessary). |
protected Collection<Container.Filter> |
removeFilters(Object propertyId)
Remove all container filters for a given property identifier and re-filter the view. |
boolean |
removeItem(Object itemId)
Removes the Item identified by ItemId from the Container. |
void |
removeListener(Container.ItemSetChangeListener listener)
Implementation of the corresponding method in ItemSetChangeNotifier , override with the corresponding public
method and implement the interface to use this. |
protected void |
setAllItemIds(List<ITEMIDTYPE> allItemIds)
Deprecated. |
protected void |
setFilteredItemIds(List<ITEMIDTYPE> filteredItemIds)
Deprecated. |
protected void |
setFilters(Set<Container.Filter> filters)
Set the internal collection of filters without performing filtering. |
protected void |
setItemSorter(ItemSorter itemSorter)
Sets the ItemSorter used for comparing items in a sort. |
int |
size()
Gets the number of visible Items in the Container. |
protected void |
sortContainer(Object[] propertyId,
boolean[] ascending)
Sort base implementation to be used to implement Sortable . |
Methods inherited from class com.vaadin.data.util.AbstractContainer |
---|
addListener, fireContainerPropertySetChange, fireContainerPropertySetChange, fireItemSetChange, fireItemSetChange, getItemSetChangeListeners, getListeners, getPropertySetChangeListeners, removeListener, setItemSetChangeListeners, setPropertySetChangeListeners |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.vaadin.data.Container |
---|
getContainerProperty, getContainerPropertyIds, getType |
Constructor Detail |
---|
protected AbstractInMemoryContainer()
Method Detail |
---|
public ITEMCLASS getItem(Object itemId)
Container
Item
with the given Item ID from the Container. If the
Container does not contain the requested Item, null
is
returned.
Containers should not return Items that are filtered out.
getItem
in interface Container
itemId
- ID of the Item
to retrieve
Item
with the given ID or null
if the
Item is not found in the Containerprotected abstract ITEMCLASS getUnfilteredItem(Object itemId)
itemId
-
public int size()
Container
size
in interface Container
public boolean containsId(Object itemId)
Container
containsId
in interface Container
itemId
- ID the of Item to be tested
public List<?> getItemIds()
Container
Container.Ordered
, the collection returned by this
method should follow that order. If the container is Container.Sortable
,
the items should be in the sorted order.
Calling this method for large lazy containers can be an expensive
operation and should be avoided when practical.
getItemIds
in interface Container
public ITEMIDTYPE nextItemId(Object itemId)
Container.Ordered
itemId
. If the given Item is the last or not found in
the Container, null
is returned.
nextItemId
in interface Container.Ordered
itemId
- ID of a visible Item in the Container
null
public ITEMIDTYPE prevItemId(Object itemId)
Container.Ordered
itemId
. If the given Item is the first or not found in
the Container, null
is returned.
prevItemId
in interface Container.Ordered
itemId
- ID of a visible Item in the Container
null
public ITEMIDTYPE firstItemId()
Container.Ordered
firstItemId
in interface Container.Ordered
public ITEMIDTYPE lastItemId()
Container.Ordered
lastItemId
in interface Container.Ordered
public boolean isFirstId(Object itemId)
Container.Ordered
isFirstId
in interface Container.Ordered
itemId
- ID of an Item in the Container
true
if the Item is first visible item in the
Container, false
if notpublic boolean isLastId(Object itemId)
Container.Ordered
isLastId
in interface Container.Ordered
true
if the Item is last visible item in the
Container, false
if notpublic ITEMIDTYPE getIdByIndex(int index)
Container.Indexed
getIdByIndex
in interface Container.Indexed
index
- Index of the requested id in (the filtered and sorted view
of) the Container
public int indexOfId(Object itemId)
Container.Indexed
true
for the returned index: 0 <= index < size(), or
index = -1 if there is no visible item with that id in the container.
indexOfId
in interface Container.Indexed
itemId
- ID of an Item in the Container
public Object addItemAt(int index) throws UnsupportedOperationException
Container.Indexed
The indices of the item currently in the given position and all the following items are incremented.
This method should apply filters to the added item after inserting
it, possibly hiding it immediately. If the container is being sorted,
the item may be added at the correct sorted position instead of the
given position. See Container.Indexed
, Container.Ordered
,
Container.SimpleFilterable
and Container.Sortable
for more information.
addItemAt
in interface Container.Indexed
index
- Index (in the filtered and sorted view) to add the new
item.
UnsupportedOperationException
- if the operation is not supported by the containerpublic Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException
Container.Indexed
The indexes of the item currently in the given position and all the following items are incremented.
This method should apply filters to the added item after inserting
it, possibly hiding it immediately. If the container is being sorted,
the item may be added at the correct sorted position instead of the
given position. See Container.Indexed
, Container.SimpleFilterable
and
Container.Sortable
for more information.
addItemAt
in interface Container.Indexed
index
- Index (in the filtered and sorted view) at which to add
the new item.newItemId
- Id of the new item to be added.
Item
or null if the operation fails.
UnsupportedOperationException
- if the operation is not supported by the containerpublic Object addItemAfter(Object previousItemId) throws UnsupportedOperationException
Container.Ordered
Adding an item after null item adds the item as first item of the ordered container.
addItemAfter
in interface Container.Ordered
previousItemId
- Id of the visible item in ordered container after which to
insert the new item.
UnsupportedOperationException
- if the operation is not supported by the containerOrdered: adding items in filtered or sorted containers
public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException
Container.Ordered
Adding an item after null item adds the item as first item of the ordered container.
addItemAfter
in interface Container.Ordered
previousItemId
- Id of the visible item in ordered container after which to
insert the new item.newItemId
- Id of the new item to be added.
UnsupportedOperationException
- if the operation is not supported by the containerOrdered: adding items in filtered or sorted containers
public Item addItem(Object itemId) throws UnsupportedOperationException
Container
The new Item is returned, and it is ready to have its Properties
modified. Returns null
if the operation fails or the
Container already contains a Item with the given ID.
This functionality is optional.
addItem
in interface Container
itemId
- ID of the Item to be created
null
in case of a failure
UnsupportedOperationException
- if adding an item with an explicit item ID is not supported
by the containerpublic Object addItem() throws UnsupportedOperationException
Container
The new ID is returned, or null
if the operation fails.
After a successful call you can use the
method to fetch the Item.
getItem
This functionality is optional.
addItem
in interface Container
null
in case of a
failure
UnsupportedOperationException
- if adding an item without an explicit item ID is not
supported by the containerpublic boolean removeItem(Object itemId) throws UnsupportedOperationException
Container
ItemId
from the Container.
Containers that support filtering should also allow removing an item that is currently filtered out.
This functionality is optional.
removeItem
in interface Container
itemId
- ID of the Item to remove
true
if the operation succeeded, false
if not
UnsupportedOperationException
- if the container does not support removing individual itemspublic boolean removeAllItems() throws UnsupportedOperationException
Container
Note that Property ID and type information is preserved. This functionality is optional.
removeAllItems
in interface Container
true
if the operation succeeded, false
if not
UnsupportedOperationException
- if the container does not support removing all itemspublic boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException
Container
addContainerProperty
in interface Container
propertyId
- ID of the Propertytype
- Data type of the new PropertydefaultValue
- The value all created Properties are initialized to
true
if the operation succeeded, false
if not
UnsupportedOperationException
- if the container does not support explicitly adding container
propertiespublic boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException
Container
removeContainerProperty
in interface Container
propertyId
- ID of the Property to remove
true
if the operation succeeded, false
if not
UnsupportedOperationException
- if the container does not support removing container
propertiespublic void addListener(Container.ItemSetChangeListener listener)
AbstractContainer
ItemSetChangeNotifier
, override with the corresponding public
method and implement the interface to use this.
addListener
in interface Container.ItemSetChangeNotifier
addListener
in class AbstractContainer
listener
- listener to be addedItemSetChangeNotifier#addListener(com.vaadin.data.Container.ItemSetChangeListener)
public void removeListener(Container.ItemSetChangeListener listener)
AbstractContainer
ItemSetChangeNotifier
, override with the corresponding public
method and implement the interface to use this.
removeListener
in interface Container.ItemSetChangeNotifier
removeListener
in class AbstractContainer
listener
- listener to be removedItemSetChangeNotifier#removeListener(com.vaadin.data.Container.ItemSetChangeListener)
protected void filterAll()
protected boolean doFilterContainer(boolean hasFilters)
getItemIds()
and other methods only return the filtered
items.
hasFilters
- true if filters has been set for the container, false
otherwise
protected boolean passesFilters(Object itemId)
itemId
- An itemId that exists in the container.
protected void addFilter(Container.Filter filter) throws UnsupportedFilterException
Filterable#addContainerFilter(com.vaadin.data.Container.Filter)
and optionally also
SimpleFilterable#addContainerFilter(Object, String, boolean, boolean)
(with SimpleStringFilter
).
Note that in some cases, incompatible filters cannot be detected when
added and an UnsupportedFilterException
may occur when performing
filtering.
UnsupportedFilterException
- if the filter is detected as not supported by the containerprotected void removeFilter(Container.Filter filter)
Filterable#removeContainerFilter(com.vaadin.data.Container.Filter)
.
protected void removeAllFilters()
Filterable#removeAllContainerFilters()
.
protected boolean isPropertyFiltered(Object propertyId)
propertyId
-
protected Collection<Container.Filter> removeFilters(Object propertyId)
Filterable#removeContainerFilters(Object)
.
propertyId
-
protected ItemSorter getItemSorter()
setItemSorter(ItemSorter)
for more information.
protected void setItemSorter(ItemSorter itemSorter)
ItemSorter.compare(Object, Object)
method is called with item ids
to perform the sorting. A default ItemSorter is used if this is not
explicitly set.
itemSorter
- The ItemSorter used for comparing two items in a sort (not
null).protected void sortContainer(Object[] propertyId, boolean[] ascending)
Sortable
.
Subclasses should call this from a public
#sort(Object[], boolean[])
method when implementing Sortable.
Container.Sortable.sort(java.lang.Object[],
boolean[])
protected void doSort()
itemSorter
has been prepared for the sort
operation. Typically this method calls
Collections.sort(aCollection, getItemSorter())
on all arrays
(containing item ids) that need to be sorted.
protected Collection<?> getSortablePropertyIds()
Sortable#getSortableContainerPropertyIds()
.
protected void internalRemoveAllItems()
removeAllItems()
in subclasses.
No notification is sent, the caller has to fire a suitable item set
change notification.
protected boolean internalRemoveItem(Object itemId)
removeItem(Object)
in subclasses.
No notification is sent, the caller has to fire a suitable item set
change notification.
itemId
- the identifier of the item to remove
protected ITEMCLASS internalAddItemAtEnd(ITEMIDTYPE newItemId, ITEMCLASS item, boolean filter)
newItemId
- item
- new item to addfilter
- true to perform filtering and send event after adding the
item, false to skip these operations for batch inserts - if
false, caller needs to make sure these operations are
performed at the end of the batch
protected ITEMCLASS internalAddItemAfter(ITEMIDTYPE previousItemId, ITEMIDTYPE newItemId, ITEMCLASS item, boolean filter)
previousItemId
- item id of a visible item after which to add the new item, or
null to add at the beginningnewItemId
- item
- new item to addfilter
- true to perform filtering and send event after adding the
item, false to skip these operations for batch inserts - if
false, caller needs to make sure these operations are
performed at the end of the batch
protected ITEMCLASS internalAddItemAt(int index, ITEMIDTYPE newItemId, ITEMCLASS item, boolean filter)
index
- position where to add the item (visible/view index)newItemId
- item
- new item to addfilter
- true to perform filtering and send event after adding the
item, false to skip these operations for batch inserts - if
false, caller needs to make sure these operations are
performed at the end of the batch
protected void registerNewItem(int position, ITEMIDTYPE itemId, ITEMCLASS item)
AbstractInMemoryContainer
has already
been updated to reflect the new item when this method is called.
position
- itemId
- item
- protected void fireItemAdded(int position, ITEMIDTYPE itemId, ITEMCLASS item)
postion
- position of the added item in the view (if visible)itemId
- id of the added itemitem
- the added itemprotected void fireItemRemoved(int position, Object itemId)
postion
- position of the removed item in the view prior to removal (if
was visible)itemId
- id of the removed item, of type Object
to satisfy
Container.removeItem(Object)
APIprotected List<ITEMIDTYPE> getVisibleItemIds()
protected boolean isFiltered()
@Deprecated protected void setFilteredItemIds(List<ITEMIDTYPE> filteredItemIds)
filteredItemIds
- protected List<ITEMIDTYPE> getFilteredItemIds()
getVisibleItemIds()
in other contexts.
@Deprecated protected void setAllItemIds(List<ITEMIDTYPE> allItemIds)
allItemIds
- protected List<ITEMIDTYPE> getAllItemIds()
protected void setFilters(Set<Container.Filter> filters)
addFilter(com.vaadin.data.Container.Filter)
and
remove*Filter*
(which also re-filter the container) instead
when possible.
filters
- protected Set<Container.Filter> getFilters()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |