M
- the type of DefaultEntityModel
used for detail modelsE
- the type of DefaultEntityEditModel
used by this EntityModel
T
- the type of EntityTableModel
used by this EntityModel
public class DefaultEntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>> extends java.lang.Object implements EntityModel<M,E,T>
String entityId = "some.entity"; String clientTypeId = "JavadocDemo"; User user = new User("scott", "tiger"); EntityConnectionProvider connectionProvider = EntityConnectionProviders.createConnectionProvider(user, clientTypeId); EntityModel model = new DefaultEntityModel(entityId, connectionProvider); EntityPanel panel = new EntityPanel(model);
Modifier and Type | Field and Description |
---|---|
protected static org.slf4j.Logger |
LOG |
FILTER_ON_MASTER_INSERT, USE_CLIENT_PREFERENCES
Constructor and Description |
---|
DefaultEntityModel(E editModel,
T tableModel)
Instantiates a new DefaultEntityModel
|
Modifier and Type | Method and Description |
---|---|
void |
addAfterRefreshListener(EventListener listener) |
void |
addBeforeRefreshListener(EventListener listener) |
M |
addDetailModel(M detailModel)
Adds the given detail model to this model, sets this model as the master model of the
given detail model via
EntityModel.setMasterModel(EntityModel) , a side-effect if the detail model contains
a table model is that it is configured so that a query condition is required for it to show
any data, via EntityTableModel.getQueryConditionRequiredState() |
void |
addDetailModels(M... detailModels)
Adds the given detail model to this model, sets this model as the master model of the
given detail models via
EntityModel.setMasterModel(EntityModel) , a side-effect if the detail model contains
a table model is that it is configured so that a query condition is required for it to show
any data, via EntityTableModel.getQueryConditionRequiredState() |
void |
addLinkedDetailModel(M detailModel)
Adds the given model to the currently linked detail models.
|
void |
addLinkedDetailModelAddedListener(EventDataListener<M> listener) |
void |
addLinkedDetailModelRemovedListener(EventDataListener<M> listener) |
void |
clear()
Clears all data from this refreshable instance
|
void |
clearDetailModels()
Clears the detail models.
|
boolean |
containsDetailModel(java.lang.Class<? extends M> modelClass) |
boolean |
containsDetailModel(M detailModel) |
boolean |
containsDetailModel(java.lang.String entityId) |
boolean |
containsTableModel() |
EntityConnectionProvider |
getConnectionProvider() |
M |
getDetailModel(java.lang.Class<? extends M> modelClass)
Returns the first detail model of the given type
|
M |
getDetailModel(java.lang.String entityId)
Returns a detail model of the given type
|
ForeignKeyProperty |
getDetailModelForeignKey(M detailModel) |
java.util.Collection<M> |
getDetailModels() |
E |
getEditModel() |
java.lang.String |
getEntityId() |
java.util.Collection<M> |
getLinkedDetailModels() |
M |
getMasterModel() |
T |
getTableModel() |
protected void |
handleInitialization(ForeignKeyProperty foreignKeyProperty,
java.util.List<Entity> foreignKeyValues)
By default this method sets the foreign key value in the edit model if the entity is new, using the first item in
foreignKeyValues . |
protected void |
handleMasterDelete(EntityEditModel.DeleteEvent deleteEvent) |
protected void |
handleMasterInsert(EntityEditModel.InsertEvent insertEvent)
Adds the inserted entities to the EntityComboBoxModels based on the inserted entity type,
sets the value of the master foreign key property and filters the table model if applicable
|
protected void |
handleMasterUpdate(EntityEditModel.UpdateEvent updateEvent)
Replaces the updated master entities wherever they are referenced
|
void |
initialize(ForeignKeyProperty foreignKeyProperty,
java.util.List<Entity> foreignKeyValues)
Initializes this
EntityModel according to the given foreign key entities,
sets the appropriate property value in the EntityEditModel and filters the EntityTableModel |
void |
initialize(java.lang.String foreignKeyEntityId,
java.util.List<Entity> foreignKeyValues)
Initializes this
EntityModel according to the given foreign key entities. |
protected void |
initializeDetailModels()
Initializes all linked detail models according to the active entities in this master model
|
boolean |
isFilterOnMasterInsert() |
void |
refresh()
Performs a refresh, reloading the relevant data
|
void |
refreshDetailModels()
Refreshes the detail models.
|
void |
removeAfterRefreshListener(EventListener listener) |
void |
removeBeforeRefreshListener(EventListener listener) |
void |
removeLinkedDetailModel(M detailModel)
Removes the given model from the currently linked detail models.
|
void |
removeLinkedDetailModelAddedListener(EventDataListener listener) |
void |
removeLinkedDetailModelRemovedListener(EventDataListener listener) |
void |
savePreferences()
Saves any user preferences
|
void |
setDetailModelForeignKey(M detailModel,
java.lang.String foreignKeyPropertyId)
Indicates that the given detail model is based on the foreign key with the given ID, this becomes
practical when a detail model is based on an entity which contains multiple foreign keys to the
same master entity.
|
void |
setFilterOnMasterInsert(boolean filterOnMasterInsert) |
void |
setMasterModel(M entityModel)
Sets the model serving as master model
|
java.lang.String |
toString() |
public final java.lang.String toString()
toString
in class java.lang.Object
public final java.lang.String getEntityId()
getEntityId
in interface EntityDataProvider
public final EntityConnectionProvider getConnectionProvider()
getConnectionProvider
in interface EntityDataProvider
public final M getMasterModel()
getMasterModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final void setMasterModel(M entityModel)
setMasterModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
entityModel
- the master entity modelpublic final E getEditModel()
getEditModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
EntityEditModel
instance used by this EntityModel
public final T getTableModel()
getTableModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
EntityTableModel
, null if none is specifiedpublic final boolean containsTableModel()
containsTableModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
EntityModel
contains a EntityTableModel
public final void addDetailModels(M... detailModels)
EntityModel.setMasterModel(EntityModel)
, a side-effect if the detail model contains
a table model is that it is configured so that a query condition is required for it to show
any data, via EntityTableModel.getQueryConditionRequiredState()
addDetailModels
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModels
- the detail models to addpublic final M addDetailModel(M detailModel)
EntityModel.setMasterModel(EntityModel)
, a side-effect if the detail model contains
a table model is that it is configured so that a query condition is required for it to show
any data, via EntityTableModel.getQueryConditionRequiredState()
addDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- the detail modelpublic final boolean containsDetailModel(java.lang.Class<? extends M> modelClass)
containsDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
modelClass
- the detail model classpublic final boolean containsDetailModel(java.lang.String entityId)
containsDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
entityId
- the entity IDpublic final boolean containsDetailModel(M detailModel)
containsDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- the detail modelpublic final java.util.Collection<M> getDetailModels()
getDetailModels
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final void addLinkedDetailModel(M detailModel)
addLinkedDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- links the given detail model to this modelpublic final void removeLinkedDetailModel(M detailModel)
removeLinkedDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- unlinks the given detail model from this modelpublic final java.util.Collection<M> getLinkedDetailModels()
getLinkedDetailModels
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final M getDetailModel(java.lang.Class<? extends M> modelClass)
getDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
modelClass
- the type of the required EntityModel
entityModelClass
public final M getDetailModel(java.lang.String entityId)
getDetailModel
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
entityId
- the entity ID of the required EntityModelentityModelClass
public final void setDetailModelForeignKey(M detailModel, java.lang.String foreignKeyPropertyId)
foreignKeyPropertyId
is null the association is removed.setDetailModelForeignKey
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- the detail modelforeignKeyPropertyId
- the foreign key property IDEntityModel.initialize(ForeignKeyProperty, java.util.List)
public final ForeignKeyProperty getDetailModelForeignKey(M detailModel)
getDetailModelForeignKey
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
detailModel
- the detail modelForeignKeyProperty
the given detail model is based on, null if none has been definedpublic final void refresh()
refresh
in interface Refreshable
public final void refreshDetailModels()
refreshDetailModels
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final void clear()
clear
in interface Refreshable
public final void clearDetailModels()
clearDetailModels
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final void initialize(java.lang.String foreignKeyEntityId, java.util.List<Entity> foreignKeyValues)
EntityModel
according to the given foreign key entities.
It sets the value for the first available foreign key property representing the given entityId
in the EntityEditModel
and sets the search values in the EntityTableModel
.initialize
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
foreignKeyEntityId
- the ID of the master entityforeignKeyValues
- the master entitiespublic final void initialize(ForeignKeyProperty foreignKeyProperty, java.util.List<Entity> foreignKeyValues)
EntityModel
according to the given foreign key entities,
sets the appropriate property value in the EntityEditModel
and filters the EntityTableModel
initialize
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
foreignKeyProperty
- the ID of the foreign keyforeignKeyValues
- the foreign key valuespublic void savePreferences()
savePreferences
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
public final boolean isFilterOnMasterInsert()
isFilterOnMasterInsert
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
EntityModel.FILTER_ON_MASTER_INSERT
public final void setFilterOnMasterInsert(boolean filterOnMasterInsert)
setFilterOnMasterInsert
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
filterOnMasterInsert
- if true then the table model is automatically filtered when insert is performed in a master modelEntityModel.FILTER_ON_MASTER_INSERT
public final void addLinkedDetailModelAddedListener(EventDataListener<M> listener)
addLinkedDetailModelAddedListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be notified each time a linked detail model is addedpublic final void removeLinkedDetailModelAddedListener(EventDataListener listener)
removeLinkedDetailModelAddedListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be removedpublic final void addLinkedDetailModelRemovedListener(EventDataListener<M> listener)
addLinkedDetailModelRemovedListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be notified each time a linked detail model is removedpublic final void removeLinkedDetailModelRemovedListener(EventDataListener listener)
removeLinkedDetailModelRemovedListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be removedpublic final void addBeforeRefreshListener(EventListener listener)
addBeforeRefreshListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be notified before a refresh is performedpublic final void removeBeforeRefreshListener(EventListener listener)
removeBeforeRefreshListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- the listener to removepublic final void addAfterRefreshListener(EventListener listener)
addAfterRefreshListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- a listener to be notified each time a refresh has been performedpublic final void removeAfterRefreshListener(EventListener listener)
removeAfterRefreshListener
in interface EntityModel<M extends DefaultEntityModel<M,E,T>,E extends DefaultEntityEditModel,T extends EntityTableModel<E>>
listener
- the listener to removeprotected void handleInitialization(ForeignKeyProperty foreignKeyProperty, java.util.List<Entity> foreignKeyValues)
foreignKeyValues
.foreignKeyProperty
- the foreign key referring to the master model doing the initializationforeignKeyValues
- the foreign key entities selected or otherwise indicated as being active in the master modelprotected final void initializeDetailModels()
protected final void handleMasterInsert(EntityEditModel.InsertEvent insertEvent)
insertEvent
- the insert eventEntityModel.FILTER_ON_MASTER_INSERT
protected final void handleMasterUpdate(EntityEditModel.UpdateEvent updateEvent)
updateEvent
- the update eventprotected final void handleMasterDelete(EntityEditModel.DeleteEvent deleteEvent)