|
SalesPoint v3.3 API | ||||||||
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<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 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(CatalogIdentifier<T> id)
Create a new, initially empty CatalogImpl. |
|
CatalogImpl(String sName)
Create a new, initially empty 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,
String sOldName,
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(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. |
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. |
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(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<String,T> |
getEditingItemsContainer()
Get the map of items that are currently being edited. |
protected Map<String,T> |
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<String,T> |
getTemporaryAddedItemsContainer()
Get the map of items that have been temporaryly added to this Catalog. |
protected Map<String,T> |
getTemporaryRemovedItemsContainer()
Get the map of items that have been temporaryly removed from this Catalog. |
Iterator<T> |
iterator(DataBasket db,
boolean fForEdit)
Return an iterator of all items in the Catalog. |
Set<String> |
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. |
T |
remove(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. |
String |
toString()
Return a String representation of this Catalog. |
Methods inherited from class data.ooimpl.CatalogItemImpl |
---|
addValueListener, compareTo, equals, getCatalog, getInternalShallowClone, 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.public CatalogImpl(CatalogIdentifier<T> id)
id
- The identifier of the Catalog.Method Detail |
---|
protected final Object getItemsLock()
protected Map<String,T> getItemsContainer()
protected Map<String,T> getTemporaryRemovedItemsContainer()
protected Map<String,T> getTemporaryAddedItemsContainer()
protected Map<String,T> getEditingItemsContainer()
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(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(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(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 Iterator<T> 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<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 Set<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
createPeer()
.public CatalogImpl<T> createPeer()
public 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, 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<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)
|
SalesPoint v3.3 API | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |