|
SalesPoint Framework v3.1 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object data.AbstractNameable data.ooimpl.CatalogItemImpl data.ooimpl.CatalogImpl
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 data.AbstractNameable |
m_ncContext, m_pcsPropertyListeners |
Fields inherited from interface data.CatalogItem |
VALUE_PROPERTY |
Fields inherited from interface data.Nameable |
NAME_PROPERTY |
Fields inherited from interface data.DataBasketKeys |
CATALOG_ITEM_MAIN_KEY, STOCK_ITEM_MAIN_KEY |
Constructor Summary | |
CatalogImpl(String sName)
Create a new, initially empty CatalogImpl. |
Method Summary | |
void |
add(CatalogItem 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,
String sOldName,
String sNewName)
Check a name change of a CatalogItem in this Catalog. |
void |
commitAdd(DataBasket db,
DataBasketEntry dbe)
Commit the adding of a CatalogItem. |
void |
commitRemove(DataBasket db,
DataBasketEntry dbe)
Commit the removal of a CatalogItem. |
boolean |
contains(String sKey,
DataBasket db)
Check whether the Catalog contains a certain CatalogItem. |
CatalogImpl |
createPeer()
Create and return an empty CatalogImpl of the same name and class. |
protected void |
fireCanEditCatalogItem(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCanRemoveCatalogItem(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAddCommit(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAdded(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemAddRollback(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemRemoveCommit(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemRemoved(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCatalogItemRemoveRollback(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireCommitEditCatalogItem(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireEditingCatalogItem(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
protected void |
fireRollbackEditCatalogItem(CatalogItem ci,
DataBasket db)
Fire an event to all listeners listening to this Catalog. |
CatalogItem |
get(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 Map |
getEditingItemsContainer()
Get the map of items that are currently being edited. |
protected Map |
getItemsContainer()
Get the map of items that are completely contained in this Catalog. |
protected Object |
getItemsLock()
Get the monitor synchronizing access to the several items maps. |
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 Map |
getTemporaryAddedItemsContainer()
Get the map of items that have been temporaryly added to this Catalog. |
protected Map |
getTemporaryRemovedItemsContainer()
Get the map of items that have been temporaryly removed from this Catalog. |
Iterator |
iterator(DataBasket db,
boolean fForEdit)
Return an iterator of all items in the Catalog. |
Set |
keySet(DataBasket db)
Get a set of all keys currently in the Catalog. |
void |
nameHasChanged(DataBasket db,
String sOldName,
String sNewName)
Synchronize the Catalog's internal data with the name change. |
CatalogItem |
remove(CatalogItem ci,
DataBasket db)
Remove the given item from the Catalog. |
CatalogItem |
remove(String sKey,
DataBasket db)
Remove the indicated 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 dbe)
Roll back the adding of a CatalogItem. |
void |
rollbackRemove(DataBasket db,
DataBasketEntry dbe)
Roll back the removal of a CatalogItem. |
int |
size(DataBasket db)
Calculate the size of the Catalog. |
String |
toString()
Return a String representation of this Catalog. |
Methods inherited from class data.ooimpl.CatalogItemImpl |
addValueListener, compareTo, equals, getCatalog, getValue, isEditable, removeValueListener, setValue |
Methods inherited from class 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 data.CatalogItem |
addValueListener, getCatalog, getValue, removeValueListener |
Methods inherited from interface data.Nameable |
addNameListener, addPropertyChangeListener, attach, detachNC, getName, removeNameListener, removePropertyChangeListener, setName |
Methods inherited from interface java.lang.Comparable |
compareTo |
Field Detail |
protected ListenerHelper m_lhListeners
protected int m_nModCount
Constructor Detail |
public CatalogImpl(String sName)
sName
- the name of the Catalog.Method Detail |
protected final Object getItemsLock()
protected Map getItemsContainer()
protected Map getTemporaryRemovedItemsContainer()
protected Map getTemporaryAddedItemsContainer()
protected Map getEditingItemsContainer()
public void add(CatalogItem ci, DataBasket db)
add
in interface Catalog
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 CatalogItem remove(CatalogItem ci, DataBasket db) throws VetoException
remove
in interface Catalog
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 CatalogItem remove(String sKey, DataBasket db) throws VetoException
remove
in interface Catalog
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 CatalogItem get(String sKey, DataBasket db, boolean fForEdit) throws VetoException
get
in interface Catalog
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(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
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 Iterator iterator(DataBasket db, boolean fForEdit)
The iterator will conceptually call get(java.lang.String, data.DataBasket, boolean)
for each CatalogItem, using the given parameters.
iterator
in interface Catalog
db
- the DataBasket that defines visibility.fForEdit
- if true, the items are retrieved for editing. VetoException will be converted into
UnsupportedOperationException
s.public Set 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
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
db
- the DataBasket used to determine visibility. Must be null
or a
descendant of DataBasketImpl
.protected CatalogItemImpl getShallowClone()
getShallowClone
in class CatalogItemImpl
createPeer()
.public CatalogImpl createPeer()
public String toString()
String
representation of this Catalog.
toString
in class CatalogItemImpl
public void commitRemove(DataBasket db, DataBasketEntry dbe)
commitRemove
in interface SelfManagingDBESource
db
- the DataBasket that issued the rollback requestdbe
- the DataBasketEntry describing the operation to rollback.public void rollbackRemove(DataBasket db, DataBasketEntry dbe)
rollbackRemove
in interface SelfManagingDBESource
db
- the DataBasket that issued the commit requestdbe
- the DataBasketEntry describing the operation to commit.public void commitAdd(DataBasket db, DataBasketEntry dbe)
addedCatalogItemCommit
event this
may trigger an editingCatalogItemCommit
event with the CatalogItem that has been edited.
commitAdd
in interface SelfManagingDBEDestination
db
- the DataBasket that issued the commit requestdbe
- the DataBasketEntry describing the operation to commit.public void rollbackAdd(DataBasket db, DataBasketEntry dbe)
addedCatalogItemRollback
event
this may trigger an editingCatalogItemRollback
event with the CatalogItem that has been
edited.
rollbackAdd
in interface SelfManagingDBEDestination
db
- the DataBasket that issued the rollback requestdbe
- the DataBasketEntry describing the operation to rollback.public void checkNameChange(DataBasket db, String sOldName, 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, String sOldName, 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 Object getNCMonitor()
getNCMonitor
in interface NameContext
public void addCatalogChangeListener(CatalogChangeListener ccl)
addCatalogChangeListener
in interface ListenableCatalog
ccl
- the listenerpublic void removeCatalogChangeListener(CatalogChangeListener ccl)
removeCatalogChangeListener
in interface ListenableCatalog
ccl
- the listenerprotected void fireCatalogItemAdded(CatalogItem ci, DataBasket db)
protected void fireCatalogItemAddCommit(CatalogItem ci, DataBasket db)
protected void fireCatalogItemAddRollback(CatalogItem ci, DataBasket db)
protected void fireCatalogItemRemoved(CatalogItem ci, DataBasket db)
protected void fireCatalogItemRemoveCommit(CatalogItem ci, DataBasket db)
protected void fireCatalogItemRemoveRollback(CatalogItem ci, DataBasket db)
protected void fireCanRemoveCatalogItem(CatalogItem ci, DataBasket db) throws VetoException
VetoException
protected void fireCanEditCatalogItem(CatalogItem ci, DataBasket db) throws VetoException
VetoException
protected void fireEditingCatalogItem(CatalogItem ci, DataBasket db)
protected void fireCommitEditCatalogItem(CatalogItem ci, DataBasket db)
protected void fireRollbackEditCatalogItem(CatalogItem ci, DataBasket db)
|
SalesPoint Framework v3.1 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |