com.vaadin.addon.jpacontainer
Class JPAContainerItem<T>

java.lang.Object
  extended by com.vaadin.addon.jpacontainer.JPAContainerItem<T>
All Implemented Interfaces:
EntityItem<T>, com.vaadin.data.Buffered, com.vaadin.data.Item, com.vaadin.data.Property.ValueChangeNotifier, Serializable

public final class JPAContainerItem<T>
extends Object
implements EntityItem<T>

EntityItem-implementation that is used by JPAContainer. Should not be used directly by clients.

Since:
1.0
Author:
Petter Holmström (Vaadin Ltd)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.vaadin.data.Item
com.vaadin.data.Item.Editor, com.vaadin.data.Item.PropertySetChangeEvent, com.vaadin.data.Item.PropertySetChangeListener, com.vaadin.data.Item.PropertySetChangeNotifier, com.vaadin.data.Item.Viewer
 
Nested classes/interfaces inherited from interface com.vaadin.data.Buffered
com.vaadin.data.Buffered.SourceException
 
Method Summary
 boolean addItemProperty(Object id, com.vaadin.data.Property property)
          This functionality is not supported.
 void addListener(com.vaadin.data.Property.ValueChangeListener listener)
          Registers a new value change listener for all the properties of this item.
 void addNestedContainerProperty(String nestedProperty)
          Originally, all nested properties are inherited from the EntityContainer.
 void addValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
           
 void commit()
           
 void discard()
           
 EntityContainer<T> getContainer()
          Gets the container that contains this item.
 T getEntity()
          Gets the underlying entity instance that contains the actual data being accessed by this item.
 Object getItemId()
          Gets the item ID of the item.
 EntityItemProperty getItemProperty(Object id)
          
 Collection<String> getItemPropertyIds()
          
 boolean isBuffered()
           
 boolean isDeleted()
          Checks whether this item has been marked for deletion.
 boolean isDirty()
          Checks whether the underlying entity (returned by EntityItem.getEntity()) has been modified after it was fetched from the entity provider.
 boolean isModified()
          When using item-level buffering, this method tests whether there are changes made to the EntityItem that have not yet been committed to the underlying Entity (EntityItem.getEntity()).
 boolean isPersistent()
          Checks if the underlying entity (EntityItem.getEntity()) is persistent (i.e.
 boolean isReadThrough()
           
 boolean isWriteThrough()
           
 void refresh()
          This method refreshes persisted entity from EntityProvider and calls value change listeners for all properties.
 boolean removeItemProperty(Object id)
          Removes a nested property added with EntityItem.addNestedContainerProperty(java.lang.String).
 void removeListener(com.vaadin.data.Property.ValueChangeListener listener)
          Removes a previously registered value change listener.
 void removeValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
           
 void setBuffered(boolean buffered)
           
 void setReadThrough(boolean readThrough)
           
 void setWriteThrough(boolean writeThrough)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getItemId

public Object getItemId()
Description copied from interface: EntityItem
Gets the item ID of the item. This ID can be used to uniquely identify the item inside the container. It may not necessarily be the same as the entity ID.

If the item ID is null, the entity item was created by a container, but not yet added to it.

Specified by:
getItemId in interface EntityItem<T>
Returns:
the item ID or null if the item is not yet inside a container.
See Also:
EntityContainer.createEntityItem(java.lang.Object)

addItemProperty

public boolean addItemProperty(Object id,
                               com.vaadin.data.Property property)
                        throws UnsupportedOperationException
Description copied from interface: EntityItem
This functionality is not supported.

Specified by:
addItemProperty in interface EntityItem<T>
Specified by:
addItemProperty in interface com.vaadin.data.Item
Throws:
UnsupportedOperationException - always thrown.

addNestedContainerProperty

public void addNestedContainerProperty(String nestedProperty)
                                throws UnsupportedOperationException
Description copied from interface: EntityItem
Originally, all nested properties are inherited from the EntityContainer. However, if additional properties are needed, this method can be used to add the nested property nestedProperty to the set of properties for this particular item.

Otherwise, this method behaves just like EntityContainer.addNestedContainerProperty(java.lang.String).

Specified by:
addNestedContainerProperty in interface EntityItem<T>
Parameters:
nestedProperty - the nested property to add (must not be null).
Throws:
UnsupportedOperationException - if nested properties are not supported by the container.

getItemProperty

public EntityItemProperty getItemProperty(Object id)
Description copied from interface: EntityItem

Specified by:
getItemProperty in interface EntityItem<T>
Specified by:
getItemProperty in interface com.vaadin.data.Item

getItemPropertyIds

public Collection<String> getItemPropertyIds()
Description copied from interface: EntityItem

In practice, this means all the properties of the underlying entity class, any nested properties defined in the container and any nested properties added using EntityItem.addNestedContainerProperty(java.lang.String). Any non-nested properties that have been removed from the container will still show up in this collection.

Specified by:
getItemPropertyIds in interface EntityItem<T>
Specified by:
getItemPropertyIds in interface com.vaadin.data.Item

removeItemProperty

public boolean removeItemProperty(Object id)
                           throws UnsupportedOperationException
Description copied from interface: EntityItem
Removes a nested property added with EntityItem.addNestedContainerProperty(java.lang.String). This method cannot be used to remove any other properties.

Specified by:
removeItemProperty in interface EntityItem<T>
Specified by:
removeItemProperty in interface com.vaadin.data.Item
Parameters:
id - the ID (name) of the nested property.
Returns:
true if a nested property was removed by this method, false otherwise.
Throws:
UnsupportedOperationException - if the implementation does not support removing nested properties.

isModified

public boolean isModified()
Description copied from interface: EntityItem
When using item-level buffering, this method tests whether there are changes made to the EntityItem that have not yet been committed to the underlying Entity (EntityItem.getEntity()). If item-level buffering is not used, this method always returns false.

Specified by:
isModified in interface EntityItem<T>
Specified by:
isModified in interface com.vaadin.data.Buffered
Returns:
true if #isWriteThrough() returns false and there are changes that have not yet been commited to the underlying Entity, false otherwise.
See Also:
EntityItem.isDirty()

isDirty

public boolean isDirty()
Description copied from interface: EntityItem
Checks whether the underlying entity (returned by EntityItem.getEntity()) has been modified after it was fetched from the entity provider. When the changes have been persisted, this flag will be reset.

This flag is only of relevance when container buffering is used. If the container is in write-through mode, any changes made to the entity will automatically be propagated back to the entity provider and hence, this method will always return false as there are no dirty entities.

However, if container write-through mode is turned off, any changes made to the entity will not be propagated back until explicitly committed. Modified entities that have not yet been propagated back to the entity provider are considered dirty.

Please note, that this is not the same as the EntityItem.isModified() flag, which is of relevance when item buffering is used.

If the item is not persistent, this method always returns false.

Specified by:
isDirty in interface EntityItem<T>
Returns:
true if the underlying entity has been modified, false if not.

isPersistent

public boolean isPersistent()
Description copied from interface: EntityItem
Checks if the underlying entity (EntityItem.getEntity()) is persistent (i.e. fetched from a persistence storage) or transient (created and buffered by the container). This method always returns false if EntityItem.getItemId() is null, even if the underlying entity actually is persistent.

Specified by:
isPersistent in interface EntityItem<T>
Returns:
true if the underlying entity is persistent, false if it is transient.

isDeleted

public boolean isDeleted()
Description copied from interface: EntityItem
Checks whether this item has been marked for deletion. This method can only return true if EntityItem.isPersistent() is true and the container is running in buffered mode.

Specified by:
isDeleted in interface EntityItem<T>
Returns:
true if the item has been deleted, false otherwise.

getContainer

public EntityContainer<T> getContainer()
Description copied from interface: EntityItem
Gets the container that contains this item. If EntityItem.getItemId() is null, the container created the item but does not yet contain it.

Specified by:
getContainer in interface EntityItem<T>
Returns:
the container (never null).

getEntity

public T getEntity()
Description copied from interface: EntityItem
Gets the underlying entity instance that contains the actual data being accessed by this item.

Specified by:
getEntity in interface EntityItem<T>
Returns:
the entity (never null).

commit

public void commit()
            throws com.vaadin.data.Buffered.SourceException,
                   com.vaadin.data.Validator.InvalidValueException
Specified by:
commit in interface com.vaadin.data.Buffered
Throws:
com.vaadin.data.Buffered.SourceException
com.vaadin.data.Validator.InvalidValueException

discard

public void discard()
             throws com.vaadin.data.Buffered.SourceException
Specified by:
discard in interface com.vaadin.data.Buffered
Throws:
com.vaadin.data.Buffered.SourceException

isReadThrough

public boolean isReadThrough()

isWriteThrough

public boolean isWriteThrough()

setReadThrough

public void setReadThrough(boolean readThrough)
                    throws com.vaadin.data.Buffered.SourceException
Throws:
com.vaadin.data.Buffered.SourceException

setWriteThrough

public void setWriteThrough(boolean writeThrough)
                     throws com.vaadin.data.Buffered.SourceException,
                            com.vaadin.data.Validator.InvalidValueException
Throws:
com.vaadin.data.Buffered.SourceException
com.vaadin.data.Validator.InvalidValueException

addListener

public void addListener(com.vaadin.data.Property.ValueChangeListener listener)
Description copied from interface: EntityItem
Registers a new value change listener for all the properties of this item.

Specified by:
addListener in interface EntityItem<T>
Specified by:
addListener in interface com.vaadin.data.Property.ValueChangeNotifier
Parameters:
listener - the new listener to be registered.

removeListener

public void removeListener(com.vaadin.data.Property.ValueChangeListener listener)
Description copied from interface: EntityItem
Removes a previously registered value change listener. The listener will be unregistered from all the properties of this item.

Specified by:
removeListener in interface EntityItem<T>
Specified by:
removeListener in interface com.vaadin.data.Property.ValueChangeNotifier
Parameters:
listener - listener to be removed.

addValueChangeListener

public void addValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
Specified by:
addValueChangeListener in interface com.vaadin.data.Property.ValueChangeNotifier

removeValueChangeListener

public void removeValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
Specified by:
removeValueChangeListener in interface com.vaadin.data.Property.ValueChangeNotifier

toString

public String toString()
Overrides:
toString in class Object

refresh

public void refresh()
Description copied from interface: EntityItem
This method refreshes persisted entity from EntityProvider and calls value change listeners for all properties.

The method can be used to update one item if developer know it has been changed either straight to the entity object or to backend.

Note, that in case the write buffering and EntityItem.isDirty() flag is on, all changes will be lost and property values are overridden from the backend.

Also note that the entire container might get reloaded when calling this method when e.g. the entity has been deleted from the database.

Specified by:
refresh in interface EntityItem<T>

setBuffered

public void setBuffered(boolean buffered)
Specified by:
setBuffered in interface com.vaadin.data.Buffered

isBuffered

public boolean isBuffered()
Specified by:
isBuffered in interface com.vaadin.data.Buffered


Copyright © 2013 Vaadin Ltd. All rights reserved.