Class GeneratedPropertyContainer
- java.lang.Object
-
- com.vaadin.data.util.AbstractContainer
-
- com.vaadin.data.util.GeneratedPropertyContainer
-
- All Implemented Interfaces:
Container
,Container.Filterable
,Container.Indexed
,Container.ItemSetChangeNotifier
,Container.Ordered
,Container.PropertySetChangeNotifier
,Container.Sortable
,Serializable
public class GeneratedPropertyContainer extends AbstractContainer implements Container.Indexed, Container.Sortable, Container.Filterable, Container.PropertySetChangeNotifier, Container.ItemSetChangeNotifier
Container wrapper that adds support for generated properties. This container only supports adding new generated properties. Adding new normal properties should be done for the wrapped container.Removing properties from this container does not remove anything from the wrapped container but instead only hides them from the results. These properties can be returned to this container by calling
addContainerProperty(Object, Class, Object)
with same property id which was removed.If wrapped container is Filterable and/or Sortable it should only be handled through this container as generated properties need to be handled in a specific way when sorting/filtering.
Items returned by this container do not support adding or removing properties. Generated properties are always read-only. Trying to make them editable throws an exception.
- Since:
- 7.4
- Author:
- Vaadin Ltd
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
GeneratedPropertyContainer.GeneratedItemAddEvent
protected class
GeneratedPropertyContainer.GeneratedItemAddOrRemoveEvent
Base implementation for item add or remove events.protected class
GeneratedPropertyContainer.GeneratedItemRemoveEvent
protected static class
GeneratedPropertyContainer.GeneratedProperty<T>
Property implementation for generated propertiesclass
GeneratedPropertyContainer.GeneratedPropertyItem
Item implementation for generated properties, used to wrap the Item that belongs to the wrapped container.-
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
-
Nested classes/interfaces inherited from interface com.vaadin.data.Container.Indexed
Container.Indexed.ItemAddEvent, Container.Indexed.ItemRemoveEvent
-
-
Constructor Summary
Constructors Constructor Description GeneratedPropertyContainer(Container.Indexed container)
Constructor for GeneratedPropertyContainer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addContainerFilter(Container.Filter filter)
Adds a filter for the container.boolean
addContainerProperty(Object propertyId, Class<?> type, Object defaultValue)
Adds a previously removed property back to GeneratedPropertyContainer.void
addGeneratedProperty(Object propertyId, PropertyValueGenerator<?> generator)
Add a new PropertyValueGenerator with given property id.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
addItemSetChangeListener(Container.ItemSetChangeListener listener)
Implementation of the corresponding method inContainer.ItemSetChangeNotifier
, override with the corresponding public method and implement the interface to use this.void
addListener(Container.ItemSetChangeListener listener)
void
addListener(Container.PropertySetChangeListener listener)
void
addPropertySetChangeListener(Container.PropertySetChangeListener listener)
Implementation of the corresponding method inContainer.PropertySetChangeNotifier
, 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.Object
firstItemId()
Gets the ID of the first Item in the Container.Collection<Container.Filter>
getContainerFilters()
Returns the filters which have been applied to the containerProperty<?>
getContainerProperty(Object itemId, Object propertyId)
Gets the Property identified by the given itemId and propertyId from the Container.Collection<?>
getContainerPropertyIds()
Returns a list of propety ids available in this container.Object
getIdByIndex(int index)
Get the item id for the item at the position given byindex
.Item
getItem(Object itemId)
Gets theItem
with the given Item ID from the Container.Collection<?>
getItemIds()
Gets the ID's of all visible (after filtering and sorting) Items stored in the Container.List<?>
getItemIds(int startIndex, int numberOfItems)
GetnumberOfItems
consecutive item ids from the container, starting with the item id atstartIndex
.Collection<?>
getSortableContainerPropertyIds()
Gets the container property IDs which can be used to sort the items.Class<?>
getType(Object propertyId)
Gets the data type of all Properties identified by the given Property ID.Container.Indexed
getWrappedContainer()
Returns the original underlying container.int
indexOfId(Object itemId)
Gets the index of the Item corresponding to the itemId.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.Object
lastItemId()
Gets the ID of the last Item in the Container..Object
nextItemId(Object itemId)
Gets the ID of the Item following the Item that corresponds toitemId
.Object
prevItemId(Object itemId)
Gets the ID of the Item preceding the Item that corresponds toitemId
.void
removeAllContainerFilters()
Remove all active filters from the container.boolean
removeAllItems()
Removes all Items from the Container.void
removeContainerFilter(Container.Filter filter)
Removes a filter from the container.boolean
removeContainerProperty(Object propertyId)
Marks the given property as hidden.void
removeGeneratedProperty(Object propertyId)
Removes any possible PropertyValueGenerator with given property id.boolean
removeItem(Object itemId)
Removes the Item identified byItemId
from the Container.void
removeItemSetChangeListener(Container.ItemSetChangeListener listener)
Implementation of the corresponding method inContainer.ItemSetChangeNotifier
, override with the corresponding public method and implement the interface to use this.void
removeListener(Container.ItemSetChangeListener listener)
void
removeListener(Container.PropertySetChangeListener listener)
void
removePropertySetChangeListener(Container.PropertySetChangeListener listener)
Implementation of the corresponding method inContainer.PropertySetChangeNotifier
, override with the corresponding public method and implement the interface to use this.int
size()
Gets the number of visible Items in the Container.void
sort(Object[] propertyId, boolean[] ascending)
Sorts the container items.-
Methods inherited from class com.vaadin.data.util.AbstractContainer
fireContainerPropertySetChange, fireContainerPropertySetChange, fireItemSetChange, fireItemSetChange, getItemSetChangeListeners, getListeners, getPropertySetChangeListeners, setItemSetChangeListeners, setPropertySetChangeListeners
-
-
-
-
Constructor Detail
-
GeneratedPropertyContainer
public GeneratedPropertyContainer(Container.Indexed container)
Constructor for GeneratedPropertyContainer.- Parameters:
container
- underlying indexed container
-
-
Method Detail
-
addGeneratedProperty
public void addGeneratedProperty(Object propertyId, PropertyValueGenerator<?> generator)
Add a new PropertyValueGenerator with given property id. This will override any existing properties with the same property id. Fires a PropertySetChangeEvent.- Parameters:
propertyId
- property idgenerator
- a property value generator
-
removeGeneratedProperty
public void removeGeneratedProperty(Object propertyId)
Removes any possible PropertyValueGenerator with given property id. Fires a PropertySetChangeEvent.- Parameters:
propertyId
- property id
-
addItemSetChangeListener
public void addItemSetChangeListener(Container.ItemSetChangeListener listener)
Description copied from class:AbstractContainer
Implementation of the corresponding method inContainer.ItemSetChangeNotifier
, override with the corresponding public method and implement the interface to use this.- Specified by:
addItemSetChangeListener
in interfaceContainer.ItemSetChangeNotifier
- Overrides:
addItemSetChangeListener
in classAbstractContainer
- Parameters:
listener
- listener to be added- See Also:
Container.ItemSetChangeNotifier.addListener(Container.ItemSetChangeListener)
-
addListener
public void addListener(Container.ItemSetChangeListener listener)
- Specified by:
addListener
in interfaceContainer.ItemSetChangeNotifier
- Overrides:
addListener
in classAbstractContainer
-
removeItemSetChangeListener
public void removeItemSetChangeListener(Container.ItemSetChangeListener listener)
Description copied from class:AbstractContainer
Implementation of the corresponding method inContainer.ItemSetChangeNotifier
, override with the corresponding public method and implement the interface to use this.- Specified by:
removeItemSetChangeListener
in interfaceContainer.ItemSetChangeNotifier
- Overrides:
removeItemSetChangeListener
in classAbstractContainer
- Parameters:
listener
- listener to be removed- See Also:
Container.ItemSetChangeNotifier.removeListener(Container.ItemSetChangeListener)
-
removeListener
public void removeListener(Container.ItemSetChangeListener listener)
- Specified by:
removeListener
in interfaceContainer.ItemSetChangeNotifier
- Overrides:
removeListener
in classAbstractContainer
-
addPropertySetChangeListener
public void addPropertySetChangeListener(Container.PropertySetChangeListener listener)
Description copied from class:AbstractContainer
Implementation of the corresponding method inContainer.PropertySetChangeNotifier
, override with the corresponding public method and implement the interface to use this.- Specified by:
addPropertySetChangeListener
in interfaceContainer.PropertySetChangeNotifier
- Overrides:
addPropertySetChangeListener
in classAbstractContainer
- Parameters:
listener
- The new Listener to be registered- See Also:
Container.PropertySetChangeNotifier.addListener(Container.PropertySetChangeListener)
-
addListener
public void addListener(Container.PropertySetChangeListener listener)
- Specified by:
addListener
in interfaceContainer.PropertySetChangeNotifier
- Overrides:
addListener
in classAbstractContainer
-
removePropertySetChangeListener
public void removePropertySetChangeListener(Container.PropertySetChangeListener listener)
Description copied from class:AbstractContainer
Implementation of the corresponding method inContainer.PropertySetChangeNotifier
, override with the corresponding public method and implement the interface to use this.- Specified by:
removePropertySetChangeListener
in interfaceContainer.PropertySetChangeNotifier
- Overrides:
removePropertySetChangeListener
in classAbstractContainer
- Parameters:
listener
- Listener to be removed- See Also:
Container.PropertySetChangeNotifier.removeListener(Container. PropertySetChangeListener)
-
removeListener
public void removeListener(Container.PropertySetChangeListener listener)
- Specified by:
removeListener
in interfaceContainer.PropertySetChangeNotifier
- Overrides:
removeListener
in classAbstractContainer
-
addContainerFilter
public void addContainerFilter(Container.Filter filter) throws UnsupportedFilterException
Description copied from interface:Container.Filterable
Adds a filter for the container.If a container has multiple filters, only items accepted by all filters are visible.
- Specified by:
addContainerFilter
in interfaceContainer.Filterable
- Throws:
UnsupportedFilterException
- if the filter is not supported by the container
-
removeContainerFilter
public void removeContainerFilter(Container.Filter filter)
Description copied from interface:Container.Filterable
Removes a filter from the container.This requires that the equals() method considers the filters as equivalent (same instance or properly implemented equals() method).
- Specified by:
removeContainerFilter
in interfaceContainer.Filterable
-
removeAllContainerFilters
public void removeAllContainerFilters()
Description copied from interface:Container.Filterable
Remove all active filters from the container.- Specified by:
removeAllContainerFilters
in interfaceContainer.Filterable
-
getContainerFilters
public Collection<Container.Filter> getContainerFilters()
Description copied from interface:Container.Filterable
Returns the filters which have been applied to the container- Specified by:
getContainerFilters
in interfaceContainer.Filterable
- Returns:
- A collection of filters which have been applied to the container. An empty collection if no filters have been applied.
-
sort
public void sort(Object[] propertyId, boolean[] ascending)
Description copied from interface:Container.Sortable
Sorts the container items.Sorting a container can irreversibly change the order of its items or only change the order temporarily, depending on the container.
- Specified by:
sort
in interfaceContainer.Sortable
- Parameters:
propertyId
- Array of container property IDs, whose values are used to sort the items in container as primary, secondary, ... sorting criterion. All of the item IDs must be in the collection returned byContainer.Sortable.getSortableContainerPropertyIds()
ascending
- Array of sorting order flags corresponding to each property ID used in sorting. If this array is shorter than propertyId array, ascending order is assumed for items where the order is not specified. Usetrue
to sort in ascending order,false
to use descending order.
-
getSortableContainerPropertyIds
public Collection<?> getSortableContainerPropertyIds()
Description copied from interface:Container.Sortable
Gets the container property IDs which can be used to sort the items.- Specified by:
getSortableContainerPropertyIds
in interfaceContainer.Sortable
- Returns:
- the IDs of the properties that can be used for sorting the container
-
addItemAfter
public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException
Description copied from interface:Container.Ordered
Adds a new item after the given item.Adding an item after null item adds the item as first item of the ordered container.
- Specified by:
addItemAfter
in interfaceContainer.Ordered
- Parameters:
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.- Returns:
- new item or null if the operation fails.
- Throws:
UnsupportedOperationException
- if the operation is not supported by the container- See Also:
Ordered: adding items in filtered or sorted containers
-
addItem
public Item addItem(Object itemId) throws UnsupportedOperationException
Description copied from interface:Container
Creates a new Item with the given ID in the 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.
- Specified by:
addItem
in interfaceContainer
- Parameters:
itemId
- ID of the Item to be created- Returns:
- Created new Item, or
null
in case of a failure - Throws:
UnsupportedOperationException
- if adding an item with an explicit item ID is not supported by the container
-
addItemAt
public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException
Description copied from interface:Container.Indexed
Adds a new item at given index (in the filtered view).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.Filterable
andContainer.Sortable
for more information.- Specified by:
addItemAt
in interfaceContainer.Indexed
- Parameters:
index
- Index (in the filtered and sorted view) at which to add the new item.newItemId
- Id of the new item to be added.- Returns:
- new
Item
or null if the operation fails. - Throws:
UnsupportedOperationException
- if the operation is not supported by the container
-
getItem
public Item getItem(Object itemId)
Description copied from interface:Container
Gets theItem
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.
-
getContainerProperty
public Property<?> getContainerProperty(Object itemId, Object propertyId)
Description copied from interface:Container
Gets the Property identified by the given itemId and propertyId from the Container. If the Container does not contain the item or it is filtered out, or the Container does not have the Property,null
is returned.- Specified by:
getContainerProperty
in interfaceContainer
- Parameters:
itemId
- ID of the visible Item which contains the PropertypropertyId
- ID of the Property to retrieve- Returns:
- Property with the given ID or
null
-
getContainerPropertyIds
public Collection<?> getContainerPropertyIds()
Returns a list of propety ids available in this container. This collection will contain properties for generated properties. Removed properties will not show unless there is a generated property overriding those.- Specified by:
getContainerPropertyIds
in interfaceContainer
- Returns:
- unmodifiable collection of Property IDs
-
addContainerProperty
public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException
Adds a previously removed property back to GeneratedPropertyContainer. Adding a property that is not previously removed causes an UnsupportedOperationException.- Specified by:
addContainerProperty
in interfaceContainer
- Parameters:
propertyId
- ID of the Propertytype
- Data type of the new PropertydefaultValue
- The value all created Properties are initialized to- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the container does not support explicitly adding container properties
-
removeContainerProperty
public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException
Marks the given property as hidden. This property from wrapped container will be removed fromgetContainerPropertyIds()
and is no longer be available in Items retrieved from this container.- Specified by:
removeContainerProperty
in interfaceContainer
- Parameters:
propertyId
- ID of the Property to remove- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the container does not support removing container properties
-
getType
public Class<?> getType(Object propertyId)
Description copied from interface:Container
Gets the data type of all Properties identified by the given Property ID.
-
nextItemId
public Object nextItemId(Object itemId)
Description copied from interface:Container.Ordered
Gets the ID of the Item following the Item that corresponds toitemId
. If the given Item is the last or not found in the Container,null
is returned.- Specified by:
nextItemId
in interfaceContainer.Ordered
- Parameters:
itemId
- ID of a visible Item in the Container- Returns:
- ID of the next visible Item or
null
-
prevItemId
public Object prevItemId(Object itemId)
Description copied from interface:Container.Ordered
Gets the ID of the Item preceding the Item that corresponds toitemId
. If the given Item is the first or not found in the Container,null
is returned.- Specified by:
prevItemId
in interfaceContainer.Ordered
- Parameters:
itemId
- ID of a visible Item in the Container- Returns:
- ID of the previous visible Item or
null
-
firstItemId
public Object firstItemId()
Description copied from interface:Container.Ordered
Gets the ID of the first Item in the Container.- Specified by:
firstItemId
in interfaceContainer.Ordered
- Returns:
- ID of the first visible Item in the Container
-
lastItemId
public Object lastItemId()
Description copied from interface:Container.Ordered
Gets the ID of the last Item in the Container..- Specified by:
lastItemId
in interfaceContainer.Ordered
- Returns:
- ID of the last visible Item in the Container
-
isFirstId
public boolean isFirstId(Object itemId)
Description copied from interface:Container.Ordered
Tests if the Item corresponding to the given Item ID is the first Item in the Container.- Specified by:
isFirstId
in interfaceContainer.Ordered
- Parameters:
itemId
- ID of an Item in the Container- Returns:
true
if the Item is first visible item in the Container,false
if not
-
isLastId
public boolean isLastId(Object itemId)
Description copied from interface:Container.Ordered
Tests if the Item corresponding to the given Item ID is the last Item in the Container.- Specified by:
isLastId
in interfaceContainer.Ordered
- Returns:
true
if the Item is last visible item in the Container,false
if not
-
addItemAfter
public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException
Description copied from interface:Container.Ordered
Adds a new item after the given item.Adding an item after null item adds the item as first item of the ordered container.
- Specified by:
addItemAfter
in interfaceContainer.Ordered
- Parameters:
previousItemId
- Id of the visible item in ordered container after which to insert the new item.- Returns:
- item id the the created new item or null if the operation fails.
- Throws:
UnsupportedOperationException
- if the operation is not supported by the container- See Also:
Ordered: adding items in filtered or sorted containers
-
getItemIds
public Collection<?> getItemIds()
Description copied from interface:Container
Gets the ID's of all visible (after filtering and sorting) Items stored in the Container. The ID's cannot be modified through the returned collection.If the container is
Container.Ordered
, the collection returned by this method should follow that order. If the container isContainer.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.
- Specified by:
getItemIds
in interfaceContainer
- Returns:
- unmodifiable collection of Item IDs
-
size
public int size()
Description copied from interface:Container
Gets the number of visible Items in the Container.Filtering can hide items so that they will not be visible through the container API.
-
containsId
public boolean containsId(Object itemId)
Description copied from interface:Container
Tests if the Container contains the specified Item.Filtering can hide items so that they will not be visible through the container API, and this method should respect visibility of items (i.e. only indicate visible items as being in the container) if feasible for the container.
- Specified by:
containsId
in interfaceContainer
- Parameters:
itemId
- ID the of Item to be tested- Returns:
- boolean indicating if the Container holds the specified Item
-
addItem
public Object addItem() throws UnsupportedOperationException
Description copied from interface:Container
Creates a new Item into the Container, and assign it an automatic ID.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.
- Specified by:
addItem
in interfaceContainer
- Returns:
- ID of the newly created Item, or
null
in case of a failure - Throws:
UnsupportedOperationException
- if adding an item without an explicit item ID is not supported by the container
-
removeItem
public boolean removeItem(Object itemId) throws UnsupportedOperationException
Description copied from interface:Container
Removes the Item identified byItemId
from the Container.Containers that support filtering should also allow removing an item that is currently filtered out.
This functionality is optional.
- Specified by:
removeItem
in interfaceContainer
- Parameters:
itemId
- ID of the Item to remove- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the container does not support removing individual items
-
removeAllItems
public boolean removeAllItems() throws UnsupportedOperationException
Description copied from interface:Container
Removes all Items from the Container.Note that Property ID and type information is preserved. This functionality is optional.
- Specified by:
removeAllItems
in interfaceContainer
- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the container does not support removing all items
-
indexOfId
public int indexOfId(Object itemId)
Description copied from interface:Container.Indexed
Gets the index of the Item corresponding to the itemId. The following istrue
for the returned index: 0 <= index < size(), or index = -1 if there is no visible item with that id in the container.- Specified by:
indexOfId
in interfaceContainer.Indexed
- Parameters:
itemId
- ID of an Item in the Container- Returns:
- index of the Item, or -1 if (the filtered and sorted view of) the Container does not include the Item
-
getIdByIndex
public Object getIdByIndex(int index)
Description copied from interface:Container.Indexed
Get the item id for the item at the position given byindex
.- Specified by:
getIdByIndex
in interfaceContainer.Indexed
- Parameters:
index
- the index of the requested item id- Returns:
- the item id of the item at the given index
-
getItemIds
public List<?> getItemIds(int startIndex, int numberOfItems)
Description copied from interface:Container.Indexed
GetnumberOfItems
consecutive item ids from the container, starting with the item id atstartIndex
.Implementations should return at most
numberOfItems
item ids, but can contain less if the container has less items than required to fulfill the request. The returned list must hence contain all of the item ids from the range:startIndex
tomax(startIndex + (numberOfItems-1), container.size()-1)
.For quick migration to new API see:
ContainerHelpers.getItemIdsUsingGetIdByIndex(int, int, Indexed)
- Specified by:
getItemIds
in interfaceContainer.Indexed
- Parameters:
startIndex
- the index for the first item which id to includenumberOfItems
- the number of consecutive item ids to get from the given start index, must be >= 0- Returns:
- List containing the requested item ids or empty list if
numberOfItems
== 0; not null
-
addItemAt
public Object addItemAt(int index) throws UnsupportedOperationException
Description copied from interface:Container.Indexed
Adds a new item at given index (in the filtered view).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.Filterable
andContainer.Sortable
for more information.- Specified by:
addItemAt
in interfaceContainer.Indexed
- Parameters:
index
- Index (in the filtered and sorted view) to add the new item.- Returns:
- item id of the created item or null if the operation fails.
- Throws:
UnsupportedOperationException
- if the operation is not supported by the container
-
getWrappedContainer
public Container.Indexed getWrappedContainer()
Returns the original underlying container.- Returns:
- the original underlying container
-
-