com.vaadin.data.util.
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:
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and 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 properties
class
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.Indexed
Container.Indexed.ItemAddEvent, Container.Indexed.ItemRemoveEvent
-
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
Constructors Constructor and Description GeneratedPropertyContainer(Container.Indexed container)
Constructor for GeneratedPropertyContainer.
-
Method Summary
All Methods Modifier and Type Method and 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 in
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 in
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 container
Property<?>
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 by
index
.Item
getItem(Object itemId)
Gets the
Item
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)
Get
numberOfItems
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 to
itemId
.Object
prevItemId(Object itemId)
Gets the ID of the Item preceding the Item that corresponds to
itemId
.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 by
ItemId
from the Container.void
removeItemSetChangeListener(Container.ItemSetChangeListener listener)
Implementation of the corresponding method in
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 in
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 in
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 addedSee Also:
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 in
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 removedSee Also:
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 in
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 registeredSee Also:
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 in
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 removedSee Also:
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 containerSee Also:
-
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 createdReturns:
Created new Item, or
null
in case of a failureThrows:
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 the
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.
-
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 retrieveReturns:
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 toReturns:
true
if the operation succeeded,false
if notThrows:
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 from
getContainerPropertyIds()
and is no longer be available in Items retrieved from this container.Specified by:
removeContainerProperty
in interfaceContainer
Parameters:
propertyId
- ID of the Property to removeReturns:
true
if the operation succeeded,false
if notThrows:
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 to
itemId
. 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 ContainerReturns:
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 to
itemId
. 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 ContainerReturns:
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 ContainerReturns:
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 containerSee Also:
-
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 testedReturns:
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 failureThrows:
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 by
ItemId
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 removeReturns:
true
if the operation succeeded,false
if notThrows:
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 notThrows:
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 is
true
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 ContainerReturns:
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 by
index
.Specified by:
getIdByIndex
in interfaceContainer.Indexed
Parameters:
index
- the index of the requested item idReturns:
the item id of the item at the given index
-
getItemIds
public List<?> getItemIds(int startIndex, int numberOfItems)
Description copied from interface:
Container.Indexed
Get
numberOfItems
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 >= 0Returns:
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
-
-