|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.salespointframework.core.data.AbstractNameable
org.salespointframework.core.data.CatalogItemImpl
org.salespointframework.core.data.CatalogImpl<T>
public class CatalogImpl<T extends CatalogItemImpl>
Pure Java implementation of the Catalog
interface.
CatalogImpl can only work together with DataBaskets that are descendants of DataBasketImpl
.
Field Summary | |
---|---|
protected ListenerHelper |
m_lhListeners
The listeners that registered to be informed of changes in this Catalog's contents. |
protected int |
m_nModCount
Modification counter. |
Fields inherited from class org.salespointframework.core.data.AbstractNameable |
---|
m_ncContext, m_pcsPropertyListeners, SOME_PROPERTY |
Fields inherited from interface org.salespointframework.core.data.interfaces.CatalogItem |
---|
VALUE_PROPERTY |
Fields inherited from interface org.salespointframework.core.data.interfaces.Nameable |
---|
NAME_PROPERTY |
Fields inherited from interface org.salespointframework.core.data.interfaces.DataBasketKeys |
---|
CATALOG_ITEM_MAIN_KEY, STOCK_ITEM_MAIN_KEY |
Constructor Summary | |
---|---|
CatalogImpl(CatalogIdentifier<T> id)
Create a new, persistent CatalogImpl. |
|
CatalogImpl(java.lang.String sName)
Create a new, persistent CatalogImpl. |
|
CatalogImpl(java.lang.String sName,
boolean temporary)
Create a new, CatalogImpl. |
Method Summary | |
---|---|
void |
add(T ci,
DataBasket db)
Add the given item to the Catalog. |
void |
addCatalogChangeListener(CatalogChangeListener ccl)
Add a listener that listens for changes in this Catalog's contents. |
void |
checkNameChange(DataBasket db,
java.lang.String sOldName,
java.lang.String sNewName)
Check a name change of a CatalogItem in this Catalog. |
void |
commitAdd(DataBasket db,
DataBasketEntry<T> dbe)
Commit the adding of a CatalogItem. |
void |
commitRemove(DataBasket db,
DataBasketEntry<T> dbe)
Commit the removal of a CatalogItem. |
boolean |
contains(java.lang.String sKey,
DataBasket db)
Check whether the Catalog contains a certain CatalogItem. |
CatalogImpl<T> |
createPeer()
Create and return an empty CatalogImpl of the same name and class. |
void |
DatasourceChanged(boolean pumpUp)
pumps up the change of datasource to catalog listeners |
void |
externalModificationOccurred()
simulates a datasource change to handle external modifications |
protected void |
fireCanEditCatalogItem(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCanRemoveCatalogItem(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAddCommit(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAdded(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAddRollback(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
void |
fireCatalogItemDataChanged(java.beans.PropertyChangeEvent pce)
called by CatalogItem to indicate a change in its data |
protected void |
fireCatalogItemRemoveCommit(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemRemoved(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemRemoveRollback(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCommitEditCatalogItem(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireEditingCatalogItem(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireRollbackEditCatalogItem(T ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
T |
get(java.lang.String sKey,
DataBasket db,
boolean fForEdit)
Get the indicated item from the Catalog. |
CatalogImpl |
getEditableCopy(DataBasket db)
Convenience method, which gets an editable ShallowClone of this Catalog from its parent Catalog and returns it. |
protected java.util.Map<java.lang.String,T> |
getEditingItemsContainer()
Get the map of items that are currently being edited. |
protected java.util.Map<java.lang.String,T> |
getItemsContainer()
Get the map of items that are completely contained in this Catalog. |
protected java.lang.Object |
getItemsLock()
Get the monitor synchronizing access to the several items maps. |
java.lang.Object |
getNCMonitor()
Return the monitor used to synchronize access to the Catalog's internal data. |
protected CatalogItemImpl |
getShallowClone()
Create a shallow clone of this Catalog. |
protected java.util.Map<java.lang.String,T> |
getTemporaryAddedItemsContainer()
Get the map of items that have been temporarily added to this Catalog. |
protected java.util.Map<java.lang.String,T> |
getTemporaryRemovedItemsContainer()
Get the map of items that have been temporarily removed from this Catalog. |
boolean |
isPersistent()
returns true, if this catalog is a persistent one. |
java.util.Iterator<T> |
iterator(DataBasket db,
boolean fForEdit)
Return an iterator of all items in the Catalog. |
java.util.Set<java.lang.String> |
keySet(DataBasket db)
Get a set of all keys currently in the Catalog. |
void |
nameHasChanged(DataBasket db,
java.lang.String sOldName,
java.lang.String sNewName)
Synchronize the Catalog's internal data with the name change. |
T |
remove(java.lang.String sKey,
DataBasket db)
Remove the indicated item from the Catalog. |
T |
remove(T ci,
DataBasket db)
Remove the given item from the Catalog. |
void |
removeCatalogChangeListener(CatalogChangeListener ccl)
Remove a listener that listened for changes in this Catalog's contents. |
void |
rollbackAdd(DataBasket db,
DataBasketEntry<T> dbe)
Roll back the adding of a CatalogItem. |
void |
rollbackRemove(DataBasket db,
DataBasketEntry<T> dbe)
Roll back the removal of a CatalogItem. |
int |
size(DataBasket db)
Calculate the size of the Catalog. |
java.lang.String |
toString()
Return a String representation of this Catalog. |
Methods inherited from class org.salespointframework.core.data.CatalogItemImpl |
---|
addValueListener, compareTo, equals, firePropertyChanged, getCatalog, getImage, getImageBytes, getInternalShallowClone, getValue, isEditable, recover, removeValueListener, setImage, setImageBytes, setValue |
Methods inherited from class org.salespointframework.core.data.AbstractNameable |
---|
addNameListener, addPropertyChangeListener, attach, detachNC, getName, removeNameListener, removePropertyChangeListener, setName |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.salespointframework.core.data.interfaces.CatalogItem |
---|
addValueListener, firePropertyChanged, getCatalog, getImage, getValue, removeValueListener, setImage |
Methods inherited from interface org.salespointframework.core.data.interfaces.Nameable |
---|
addNameListener, addPropertyChangeListener, attach, detachNC, getName, removeNameListener, removePropertyChangeListener, setName |
Methods inherited from interface java.lang.Comparable |
---|
compareTo |
Methods inherited from interface org.salespointframework.core.data.interfaces.SpItem |
---|
getName |
Field Detail |
---|
protected ListenerHelper m_lhListeners
protected int m_nModCount
Constructor Detail |
---|
public CatalogImpl(java.lang.String sName)
sName
- the name of the Catalog.public CatalogImpl(java.lang.String sName, boolean temporary)
sName
- the name of the Catalog.temporary
- true, if catalog should not be persistentpublic CatalogImpl(CatalogIdentifier<T> id)
id
- The identifier of the Catalog.Method Detail |
---|
protected final java.lang.Object getItemsLock()
protected java.util.Map<java.lang.String,T> getItemsContainer()
protected java.util.Map<java.lang.String,T> getTemporaryRemovedItemsContainer()
protected java.util.Map<java.lang.String,T> getTemporaryAddedItemsContainer()
protected java.util.Map<java.lang.String,T> getEditingItemsContainer()
public boolean isPersistent()
public void add(T ci, DataBasket db)
add
in interface Catalog<T extends CatalogItemImpl>
ci
- the CatalogItem to be added.db
- the DataBasket relative to which to perform the operation. Must be null
or a
descendant of DataBasketImpl
.
NotEditableException
- if the Catalog is currently not editable.
DuplicateKeyException
- if a CatalogItem of the same name does already exist in the Catalog.
DataBasketConflictException
- if the CatalogItem cannot be added because an item of the same
name has already been added/removed using another DataBasket.public T remove(T ci, DataBasket db) throws VetoException
remove
in interface Catalog<T extends CatalogItemImpl>
ci
- the CatalogItem to be removed.db
- the DataBasket relative to which to perform the operation. Must be null
or a
descendant of DataBasketImpl
.
NotEditableException
- if the Catalog is currently not editable.
VetoException
- if one of the listeners vetos the removal.
DataBasketConflictException
- if the CatalogItem cannot be removed because an item of the same
name has already been added using another DataBasket.public T remove(java.lang.String sKey, DataBasket db) throws VetoException
remove
in interface Catalog<T extends CatalogItemImpl>
sKey
- the key of the CatalogItem to be removed.db
- the DataBasket relative to which to perform the operation. Must be null
or a
descendant of DataBasketImpl
.
NotEditableException
- if the Catalog is currently not editable.
VetoException
- if one of the listeners vetos the removal.
DataBasketConflictException
- if the CatalogItem cannot be removed because an item of the same
name has already been added using another DataBasket.public T get(java.lang.String sKey, DataBasket db, boolean fForEdit) throws VetoException
get
in interface Catalog<T extends CatalogItemImpl>
sKey
- the key for which to retrieve the item.db
- the DataBasket relative to which to perform the operation. Must be null
or a
descendant of DataBasketImpl
.fForEdit
- if true, the item will be retrieved for editing. Only in this case changes made to the
CatalogItem can be undone via a rollback of the DataBasket. Therefore the DataBasket must not be null
if a CatalogItem is desired to be editable!
A number of events is fired if fForEdit is true:
canEditCatalogItem
with the original item.shallow clone
of the item is created.editingCatalogItem
with the newly created clone.addCatalogItem
with the newly created clone and removeCatalogItem
with
the original item.NotEditableException
- if the Catalog is not currently editable, but an attempt is made to edit
one of its items.
VetoException
- if one of the listeners vetos the editing.
DataBasketConflictException
- if the CatalogItem cannot be retrieved because it is not visible
to users of the given DataBasket.public CatalogImpl getEditableCopy(DataBasket db) throws VetoException
db
- the DataBasket which is passed to get method. Must not be null!
VetoException
public boolean contains(java.lang.String sKey, DataBasket db)
Will return true only if an item of the given key is contained in the Catalog and if that item is visible to users of the given DataBasket.
contains
in interface Catalog<T extends CatalogItemImpl>
sKey
- the key for which to check containment.db
- the DataBasket that defines visibility of items. Must be null
or a
descendant of DataBasketImpl
.public java.util.Iterator<T> iterator(DataBasket db, boolean fForEdit)
The iterator will conceptually call get(java.lang.String, org.salespointframework.core.data.interfaces.DataBasket, boolean)
for each CatalogItem, using the given parameters.
iterator
in interface Catalog<T extends CatalogItemImpl>
db
- the DataBasket that defines visibility.fForEdit
- if true, the items are retrieved for editing. VetoException will be converted into
UnsupportedOperationException
s.public java.util.Set<java.lang.String> keySet(DataBasket db)
This will retrieve a static set that gives the state of the Catalog at the time of the call.
keySet
in interface Catalog<T extends CatalogItemImpl>
db
- the DataBasket used to determine visibility of elements. Must be null
or a
descendant of DataBasketImpl
.public int size(DataBasket db)
size
in interface Catalog<T extends CatalogItemImpl>
db
- the DataBasket used to determine visibility. Must be null
or a
descendant of DataBasketImpl
.protected CatalogItemImpl getShallowClone()
getShallowClone
in class CatalogItemImpl
public CatalogImpl<T> createPeer()
public java.lang.String toString()
String
representation of this Catalog.
toString
in class CatalogItemImpl
public void commitRemove(DataBasket db, DataBasketEntry<T> dbe)
commitRemove
in interface SelfManagingDBESource<T extends CatalogItemImpl>
db
- the DataBasket that issued the rollback requestdbe
- the DataBasketEntry describing the operation to rollback.public void rollbackRemove(DataBasket db, DataBasketEntry<T> dbe)
rollbackRemove
in interface SelfManagingDBESource<T extends CatalogItemImpl>
db
- the DataBasket that issued the commit requestdbe
- the DataBasketEntry describing the operation to commit.public void commitAdd(DataBasket db, DataBasketEntry<T> dbe)
addedCatalogItemCommit
event this
may trigger an editingCatalogItemCommit
event with the CatalogItem that has been edited.
commitAdd
in interface SelfManagingDBEDestination<T extends CatalogItemImpl>
db
- the DataBasket that issued the commit requestdbe
- the DataBasketEntry describing the operation to commit.public void rollbackAdd(DataBasket db, DataBasketEntry<T> dbe)
addedCatalogItemRollback
event
this may trigger an editingCatalogItemRollback
event with the CatalogItem that has been
edited.
rollbackAdd
in interface SelfManagingDBEDestination<T extends CatalogItemImpl>
db
- the DataBasket that issued the rollback requestdbe
- the DataBasketEntry describing the operation to rollback.public void checkNameChange(DataBasket db, java.lang.String sOldName, java.lang.String sNewName) throws NameContextException
The name change will be allowed if the item is editable and the new name can be guaranteed to be unique.
checkNameChange
in interface NameContext
db
- the DataBasket relative to which the name change is to take place.sOldName
- the name to be changed.sNewName
- the new name.
NameContextException
- if the name change would not be valid.public void nameHasChanged(DataBasket db, java.lang.String sOldName, java.lang.String sNewName)
nameHasChanged
in interface NameContext
db
- the DataBasket relative to which the name change has taken place.sOldName
- the old name of the object whose name was changed.sNewName
- the new name of the object.public final java.lang.Object getNCMonitor()
getNCMonitor
in interface NameContext
public void addCatalogChangeListener(CatalogChangeListener ccl)
addCatalogChangeListener
in interface ListenableCatalog<T extends CatalogItemImpl>
ccl
- the listenerpublic void removeCatalogChangeListener(CatalogChangeListener ccl)
removeCatalogChangeListener
in interface ListenableCatalog<T extends CatalogItemImpl>
ccl
- the listenerprotected void fireCatalogItemAdded(T ci, DataBasket db)
protected void fireCatalogItemAddCommit(T ci, DataBasket db)
protected void fireCatalogItemAddRollback(T ci, DataBasket db)
protected void fireCatalogItemRemoved(T ci, DataBasket db)
protected void fireCatalogItemRemoveCommit(T ci, DataBasket db)
protected void fireCatalogItemRemoveRollback(T ci, DataBasket db)
protected void fireCanRemoveCatalogItem(T ci, DataBasket db) throws VetoException
VetoException
protected void fireCanEditCatalogItem(T ci, DataBasket db) throws VetoException
VetoException
protected void fireEditingCatalogItem(T ci, DataBasket db)
protected void fireCommitEditCatalogItem(T ci, DataBasket db)
protected void fireRollbackEditCatalogItem(T ci, DataBasket db)
public void fireCatalogItemDataChanged(java.beans.PropertyChangeEvent pce)
CatalogItem
to indicate a change in its data
pce
- change eventpublic void DatasourceChanged(boolean pumpUp)
DatasourceChanged
in interface DatasourceChangeListener
pumpUp
- true if the event should be pumped up to hosts, because this event is mostly triggered twice.
first time to invalidate caches. second time for load new datapublic void externalModificationOccurred()
externalModificationOccurred
in interface ExternalModificationListener
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |