public class FXEntityListModel extends ObservableEntityList implements EntityTableModel<FXEntityEditModel>
EntityTableModel
.Modifier and Type | Class and Description |
---|---|
static class |
FXEntityListModel.PropertyTableColumn
A
TableColumn based on a Property instance |
EntityTableModel.InsertAction
PREFERENCES_COLUMN_INDEX, PREFERENCES_COLUMN_VISIBLE, PREFERENCES_COLUMN_WIDTH, PREFERENCES_COLUMNS
Constructor and Description |
---|
FXEntityListModel(java.lang.String entityId,
EntityConnectionProvider connectionProvider)
Instantiates a new
FXEntityListModel based on the given entityId |
FXEntityListModel(java.lang.String entityId,
EntityConnectionProvider connectionProvider,
EntityTableConditionModel conditionModel)
Instantiates a new
FXEntityListModel based on the given entityId |
Modifier and Type | Method and Description |
---|---|
void |
addEntities(java.util.List<Entity> entities,
boolean atTop,
boolean sortAfterAdding)
Adds the given entities to this table model, it is recommended to only manually add entities
directly to this table model after they have been inserted into the underlying table
since otherwise they will disappear during the next table model refresh.
|
protected void |
bindSelectionModelEvents()
Binds model events to the selection model
|
void |
deleteSelected()
Deletes the selected entities
|
ColumnSummaryModel |
getColumnSummaryModel(java.lang.String propertyId)
Returns the
ColumnSummaryModel associated with the property identified by propertyId |
EntityTableConditionModel |
getConditionModel() |
Domain |
getDomain() |
FXEntityEditModel |
getEditModel()
Returns the
EntityEditModel associated with this table model |
java.util.Collection<Entity> |
getEntitiesByKey(java.util.Collection<Entity.Key> keys)
Finds entities according to the values in
keys |
Entity |
getEntityByKey(Entity.Key primaryKey) |
Entity.Definition |
getEntityDefinition() |
int |
getFetchCount()
Returns the maximum number of records to fetch via the underlying query the next time
this table model is refreshed, a value of -1 means all records should be fetched
|
EntityTableModel.InsertAction |
getInsertAction() |
protected Entity.OrderBy |
getOrderBy()
The order by clause to use when selecting the data for this model,
by default the order by clause defined for the underlying entity
|
javafx.scene.paint.Color |
getPropertyBackgroundColor(int row,
Property property) |
int |
getPropertyColumnIndex(java.lang.String propertyId) |
State |
getQueryConditionRequiredState()
Returns a State controlling whether this table model should display all underlying entities
when no query condition has been set.
|
int |
getRowCount() |
java.util.Iterator<Entity> |
getSelectedEntitiesIterator()
Returns an Iterator which iterates through the selected entities
|
java.lang.String |
getStatusMessage() |
EntityTableColumn |
getTableColumn(java.lang.String propertyId)
Returns the table column for property with the given id
|
java.lang.String |
getTableDataAsDelimitedString(char delimiter) |
protected java.lang.String |
getUserPreferencesKey()
Returns the key used to identify user preferences for this table model, that is column positions, widths and such.
|
boolean |
hasEditModel() |
int |
indexOf(Entity.Key primaryKey) |
boolean |
isBatchUpdateAllowed() |
boolean |
isDeleteAllowed() |
boolean |
isReadOnly() |
boolean |
isRefreshOnForeignKeyConditionValuesSet() |
boolean |
isRemoveEntitiesOnDelete() |
boolean |
isUpdateAllowed() |
protected java.util.List<Entity> |
performQuery()
Queries for the data used to populate this EntityTableModel when it is refreshed,
using the order by clause returned by
getOrderBy() |
void |
refreshEntities(java.util.List<Entity.Key> keys)
Refreshes the entities with the given keys by re-selecting them from the underlying database.
|
void |
replaceEntities(java.util.Collection<Entity> entities)
Replaces the given entities in this table model
|
void |
replaceForeignKeyValues(java.lang.String foreignKeyEntityId,
java.util.Collection<Entity> foreignKeyValues)
For every entity in this table model, replaces the foreign key instance bearing the primary
key with the corresponding entity from
foreignKeyValues , useful when property
values have been changed in the referenced entity that must be reflected in the table model. |
void |
savePreferences()
Saves any user preferences
|
FXEntityListModel |
setBatchUpdateAllowed(boolean batchUpdateAllowed) |
void |
setColumns(javafx.collections.ObservableList<? extends javafx.scene.control.TableColumn<Entity,?>> columns)
Sets the columns for this
FXEntityListModel . |
void |
setColumns(java.lang.String... propertyIds)
Arranges the column model so that only the given columns are visible and in the given order
|
void |
setEditModel(FXEntityEditModel editModel)
Associates the given
EntityEditModel with this EntityTableModel , this enables delete/update
functionality via this table model as well as enabling it to
react to delete events in the edit model. |
FXEntityListModel |
setFetchCount(int fetchCount)
Sets the maximum number of records to fetch via the underlying query the next time
this table model is refreshed, a value of -1 means all records should be fetched
|
void |
setForeignKeyConditionValues(ForeignKeyProperty foreignKeyProperty,
java.util.Collection<Entity> entities)
Sets
foreignKeyValues as the search condition values for the given foreignKeyProperty
and refreshes this table model. |
FXEntityListModel |
setInsertAction(EntityTableModel.InsertAction insertAction) |
FXEntityListModel |
setRefreshOnForeignKeyConditionValuesSet(boolean value) |
FXEntityListModel |
setRemoveEntitiesOnDelete(boolean removeEntitiesOnDelete) |
void |
setSelectedByKey(java.util.Collection<Entity.Key> keys)
Sets the selected entities according to the primary keys in
primaryKeys |
void |
update(java.util.List<Entity> entities)
Updates the given entities.
|
addFilteringListener, addRefreshListener, addSelectionChangedListener, contains, filterContents, getAllItems, getConnectionProvider, getEntityId, getFilterCondition, getFilteredItemCount, getFilteredItems, getFilteredList, getMultipleSelectionObserver, getSelectionEmptyObserver, getSelectionModel, getSingleSelectionObserver, getSortedList, getVisibleItemCount, getVisibleItems, isFiltered, isVisible, refresh, removeFilteringListener, selectionModelHasBeenSet, setFilterCondition, setSelectCondition, setSelectionModel
addListener, addListener, addListener, bind, emptyProperty, fireValueChangedEvent, fireValueChangedEvent, get, invalidated, isBound, removeListener, removeListener, removeListener, set, sizeProperty, toString, unbind
bindBidirectional, setValue, unbindBidirectional
bindContent, bindContentBidirectional, equals, hashCode, unbindContent, unbindContentBidirectional
add, add, addAll, addAll, addAll, asString, clear, contains, containsAll, get, getSize, getValue, indexOf, isEmpty, isEqualTo, isNotEqualTo, isNotNull, isNull, iterator, lastIndexOf, listExpression, listIterator, listIterator, remove, remove, remove, removeAll, removeAll, retainAll, retainAll, set, setAll, setAll, size, subList, toArray, toArray, valueAt, valueAt
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
addSelectionChangedListener, getAllItems, getSelectionModel
getConnectionProvider, getEntityId
addFilteringListener, contains, filterContents, getFilterCondition, getFilteredItemCount, getFilteredItems, getVisibleItemCount, getVisibleItems, isFiltered, isVisible, removeFilteringListener, setFilterCondition
clear, refresh
addAll, addListener, filtered, remove, removeAll, removeListener, retainAll, setAll, setAll, sorted, sorted
add, add, addAll, addAll, clear, contains, containsAll, equals, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray
public FXEntityListModel(java.lang.String entityId, EntityConnectionProvider connectionProvider)
FXEntityListModel
based on the given entityIdentityId
- the entityIdconnectionProvider
- the connection providerpublic FXEntityListModel(java.lang.String entityId, EntityConnectionProvider connectionProvider, EntityTableConditionModel conditionModel)
FXEntityListModel
based on the given entityIdentityId
- the entityIdconnectionProvider
- the connection providerconditionModel
- the EntityTableConditionModel
to usejava.lang.IllegalArgumentException
- in case the condition model is based on a different entitypublic final Domain getDomain()
getDomain
in interface EntityTableModel<FXEntityEditModel>
public final Entity.Definition getEntityDefinition()
getEntityDefinition
in interface EntityTableModel<FXEntityEditModel>
public final void setEditModel(FXEntityEditModel editModel)
EntityEditModel
with this EntityTableModel
, this enables delete/update
functionality via this table model as well as enabling it to
react to delete events in the edit model.
Throws a RuntimeException in case the edit model has been previously setsetEditModel
in interface EntityTableModel<FXEntityEditModel>
editModel
- the edit model to associate with this table modelEntityTableModel.deleteSelected()
,
EntityTableModel.update(java.util.List)
public final FXEntityEditModel getEditModel()
EntityEditModel
associated with this table modelgetEditModel
in interface EntityTableModel<FXEntityEditModel>
EntityTableModel.setEditModel(EntityEditModel)
public final void setColumns(javafx.collections.ObservableList<? extends javafx.scene.control.TableColumn<Entity,?>> columns)
FXEntityListModel
.columns
- the columnsjava.lang.IllegalStateException
- if the columns have already been setpublic final EntityTableColumn getTableColumn(java.lang.String propertyId)
propertyId
- the propertyIdjava.lang.IllegalArgumentException
- in case the column was not foundpublic final EntityTableConditionModel getConditionModel()
getConditionModel
in interface EntityTableModel<FXEntityEditModel>
EntityTableConditionModel
instance used by this table modelpublic final State getQueryConditionRequiredState()
getQueryConditionRequiredState
in interface EntityTableModel<FXEntityEditModel>
public final void setForeignKeyConditionValues(ForeignKeyProperty foreignKeyProperty, java.util.Collection<Entity> entities)
foreignKeyValues
as the search condition values for the given foreignKeyProperty
and refreshes this table model.setForeignKeyConditionValues
in interface EntityTableModel<FXEntityEditModel>
foreignKeyProperty
- the ID of the foreign key propertyentities
- the entities to use as condition valuespublic final void deleteSelected() throws DatabaseException
deleteSelected
in interface EntityTableModel<FXEntityEditModel>
DatabaseException
- in case of a database exceptionpublic final int getRowCount()
getRowCount
in interface EntityTableModel<FXEntityEditModel>
public final boolean hasEditModel()
hasEditModel
in interface EntityTableModel<FXEntityEditModel>
EntityTableModel
contains a EntityEditModel
public final void replaceForeignKeyValues(java.lang.String foreignKeyEntityId, java.util.Collection<Entity> foreignKeyValues)
foreignKeyValues
, useful when property
values have been changed in the referenced entity that must be reflected in the table model.replaceForeignKeyValues
in interface EntityTableModel<FXEntityEditModel>
foreignKeyEntityId
- the entity ID of the foreign key valuesforeignKeyValues
- the foreign key entitiespublic final void addEntities(java.util.List<Entity> entities, boolean atTop, boolean sortAfterAdding)
addEntities
in interface EntityTableModel<FXEntityEditModel>
entities
- the entities to addatTop
- if true then items are added at the top of the table model, else at the bottomsortAfterAdding
- if true and sorting is enabled then the model is sorted after addingTableSortModel.isSortingEnabled()
public final void replaceEntities(java.util.Collection<Entity> entities)
replaceEntities
in interface EntityTableModel<FXEntityEditModel>
entities
- the entities to replacepublic final void refreshEntities(java.util.List<Entity.Key> keys)
refreshEntities
in interface EntityTableModel<FXEntityEditModel>
keys
- the keys of the entities to refreshpublic final boolean isDeleteAllowed()
isDeleteAllowed
in interface EntityTableModel<FXEntityEditModel>
EntityTableModel.hasEditModel()
,
EntityTableModel.setEditModel(EntityEditModel)
public final boolean isReadOnly()
isReadOnly
in interface EntityTableModel<FXEntityEditModel>
EntityEditModel
or if that edit model is read onlyEntityTableModel.hasEditModel()
,
EntityTableModel.setEditModel(EntityEditModel)
public final boolean isUpdateAllowed()
isUpdateAllowed
in interface EntityTableModel<FXEntityEditModel>
EntityTableModel.hasEditModel()
,
EntityTableModel.setEditModel(EntityEditModel)
public final boolean isBatchUpdateAllowed()
isBatchUpdateAllowed
in interface EntityTableModel<FXEntityEditModel>
public final FXEntityListModel setBatchUpdateAllowed(boolean batchUpdateAllowed)
setBatchUpdateAllowed
in interface EntityTableModel<FXEntityEditModel>
batchUpdateAllowed
- true if this model should allow multiple entities to be updated at a timeEntityTableModel
instancepublic final FXEntityListModel setRefreshOnForeignKeyConditionValuesSet(boolean value)
setRefreshOnForeignKeyConditionValuesSet
in interface EntityTableModel<FXEntityEditModel>
value
- true if this table model should automatically refresh when foreign key condition values are setEntityTableModel
instanceEntityTableModel.setForeignKeyConditionValues(ForeignKeyProperty, Collection)
public final boolean isRefreshOnForeignKeyConditionValuesSet()
isRefreshOnForeignKeyConditionValuesSet
in interface EntityTableModel<FXEntityEditModel>
EntityTableModel.setForeignKeyConditionValues(ForeignKeyProperty, Collection)
public final ColumnSummaryModel getColumnSummaryModel(java.lang.String propertyId)
ColumnSummaryModel
associated with the property identified by propertyId
getColumnSummaryModel
in interface EntityTableModel<FXEntityEditModel>
propertyId
- the ID of the propertyColumnSummaryModel
for the given property IDpublic final javafx.scene.paint.Color getPropertyBackgroundColor(int row, Property property)
getPropertyBackgroundColor
in interface EntityTableModel<FXEntityEditModel>
row
- the row for which to retrieve the background colorproperty
- the property for which to retrieve the background colorEntity.Definition.Builder#setColorProvider(Entity.ColorProvider)
public final int getPropertyColumnIndex(java.lang.String propertyId)
getPropertyColumnIndex
in interface EntityTableModel<FXEntityEditModel>
propertyId
- the propertyIdpublic final java.lang.String getStatusMessage()
getStatusMessage
in interface EntityTableModel<FXEntityEditModel>
public final int getFetchCount()
getFetchCount
in interface EntityTableModel<FXEntityEditModel>
public final FXEntityListModel setFetchCount(int fetchCount)
setFetchCount
in interface EntityTableModel<FXEntityEditModel>
fetchCount
- the fetch countpublic final void update(java.util.List<Entity> entities) throws ValidationException, DatabaseException
update
in interface EntityTableModel<FXEntityEditModel>
entities
- the entities to updateValidationException
- in case validation failsDatabaseException
- in case of a database exceptionRecordModifiedException
- in case an entity was modified by another userEntity.Validator.validate(java.util.Collection)
public final boolean isRemoveEntitiesOnDelete()
isRemoveEntitiesOnDelete
in interface EntityTableModel<FXEntityEditModel>
public final FXEntityListModel setRemoveEntitiesOnDelete(boolean removeEntitiesOnDelete)
setRemoveEntitiesOnDelete
in interface EntityTableModel<FXEntityEditModel>
removeEntitiesOnDelete
- true if entities that are deleted via the associated edit model
should be automatically removed from this table modelEntityTableModel
instancepublic final EntityTableModel.InsertAction getInsertAction()
getInsertAction
in interface EntityTableModel<FXEntityEditModel>
public final FXEntityListModel setInsertAction(EntityTableModel.InsertAction insertAction)
setInsertAction
in interface EntityTableModel<FXEntityEditModel>
insertAction
- the action to perform when entities are inserted via the associated edit modelpublic final java.util.Collection<Entity> getEntitiesByKey(java.util.Collection<Entity.Key> keys)
keys
getEntitiesByKey
in interface EntityTableModel<FXEntityEditModel>
keys
- the primary key values to use as conditionkeys
public final void setSelectedByKey(java.util.Collection<Entity.Key> keys)
primaryKeys
setSelectedByKey
in interface EntityTableModel<FXEntityEditModel>
keys
- the primary keys of the entities to selectpublic final Entity getEntityByKey(Entity.Key primaryKey)
getEntityByKey
in interface EntityTableModel<FXEntityEditModel>
primaryKey
- the primary key to search bypublic final java.util.Iterator<Entity> getSelectedEntitiesIterator()
getSelectedEntitiesIterator
in interface EntityTableModel<FXEntityEditModel>
public final int indexOf(Entity.Key primaryKey)
indexOf
in interface EntityTableModel<FXEntityEditModel>
primaryKey
- the primary keypublic final void savePreferences()
savePreferences
in interface EntityTableModel<FXEntityEditModel>
public final void setColumns(java.lang.String... propertyIds)
setColumns
in interface EntityTableModel<FXEntityEditModel>
propertyIds
- the column identifierspublic final java.lang.String getTableDataAsDelimitedString(char delimiter)
getTableDataAsDelimitedString
in interface EntityTableModel<FXEntityEditModel>
delimiter
- the delimiterprotected java.util.List<Entity> performQuery()
getOrderBy()
performQuery
in class ObservableEntityList
getQueryConditionRequiredState()
,
EntityTableConditionModel.getCondition()
protected Entity.OrderBy getOrderBy()
Entity.Definition#getOrderBy()
protected java.lang.String getUserPreferencesKey()
return getClass().getSimpleName() + "-" + getEntityId();
Override in case this key is not unique.protected final void bindSelectionModelEvents()
bindSelectionModelEvents
in class ObservableEntityList