Module is.codion.framework.model
Package is.codion.framework.model
Interface EntityTableModel<E extends EntityEditModel>
- Type Parameters:
E- the type ofEntityEditModelused by thisEntityTableModel
- All Superinterfaces:
is.codion.common.model.FilterModel<is.codion.framework.domain.entity.Entity>
public interface EntityTableModel<E extends EntityEditModel>
extends is.codion.common.model.FilterModel<is.codion.framework.domain.entity.Entity>
Specifies a table model containing
Entity instances.-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enumDefines the actions a table model can perform when entities are inserted via the associated edit model -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final is.codion.common.property.PropertyValue<Boolean>Specifies whether table models handle entity edit events, by replacing updated entities
Value type: Boolean
Default value: truestatic final is.codion.common.property.PropertyValue<EntityTableModel.OnInsert>Specifies the default action a table model takes when entities are inserted via its edit model.Fields inherited from interface is.codion.common.model.FilterModel
ASYNC_REFRESH -
Method Summary
Modifier and TypeMethodDescriptionis.codion.common.value.ValueSet<is.codion.framework.domain.entity.attribute.Attribute<?>>Returns the ValueSet controlling which attributes are included when selecting entities to populate this model.backgroundColor(int row, is.codion.framework.domain.entity.attribute.Attribute<?> attribute) voidclear()Clears all items from this table modelis.codion.common.state.StateObserveris.codion.common.state.StateReturns a State controlling whether this table model should display all underlying entities when no query condition has been set.is.codion.framework.db.EntityConnectionDo not cache or keep the connection returned by this method in a long living field, since it may become invalid and thereby unusable.is.codion.framework.db.EntityConnectionProviderCollection<is.codion.framework.domain.entity.Entity>Deletes the selected entitiesis.codion.common.state.Stateeditable()<C extends E>
Cis.codion.framework.domain.entity.Entitiesentities()is.codion.framework.domain.entity.EntityDefinitionis.codion.framework.domain.entity.EntityTypeOptional<is.codion.framework.domain.entity.Entity>find(is.codion.framework.domain.entity.Entity.Key primaryKey) Finds the entity in this table model having the given primary keyCollection<is.codion.framework.domain.entity.Entity>find(Collection<is.codion.framework.domain.entity.Entity.Key> keys) Finds entities in this table model according to the values inkeysforegroundColor(int row, is.codion.framework.domain.entity.attribute.Attribute<?> attribute) intis.codion.common.state.StateintindexOf(is.codion.framework.domain.entity.Entity.Key primaryKey) is.codion.common.value.Value<Integer>limit()Returns the Value controlling the maximum number of rows to fetch via the underlying query the next time this table model is refreshed, a null value means all rows should be fetchedis.codion.common.value.Value<EntityTableModel.OnInsert>onInsert()is.codion.common.value.Value<is.codion.framework.domain.entity.OrderBy>orderBy()Controls the order by clause to use when selecting the data for this model.voidrefresh()Refreshes the items in this table model, according to the underlying conditionvoidrefresh(Collection<is.codion.framework.domain.entity.Entity.Key> keys) Refreshes the entities with the given keys by re-selecting them from the underlying database.is.codion.common.state.Statevoidreplace(is.codion.framework.domain.entity.attribute.ForeignKey foreignKey, Collection<is.codion.framework.domain.entity.Entity> foreignKeyValues) For every entity in this table model, replaces the foreign key instance bearing the primary key with the corresponding entity fromforeignKeyValues, useful when attribute values have been changed in the referenced entity that must be reflected in the table model.voidreplace(Collection<is.codion.framework.domain.entity.Entity> entities) Replaces the given entities in this table modelvoidselect(Collection<is.codion.framework.domain.entity.Entity.Key> keys) Selects entities according to the primary keys inprimaryKeysis.codion.common.event.EventObserver<?>is.codion.common.model.table.TableSelectionModel<is.codion.framework.domain.entity.Entity>Methods inherited from interface is.codion.common.model.FilterModel
containsItem, filtered, filteredCount, filteredItems, filterItems, includeCondition, items, refresher, refreshThen, visible, visibleCount, visibleItems
-
Field Details
-
ON_INSERT
Specifies the default action a table model takes when entities are inserted via its edit model. Value type:EntityTableModel.OnInsert
Default value:EntityTableModel.OnInsert.ADD_TOP -
HANDLE_EDIT_EVENTS
Specifies whether table models handle entity edit events, by replacing updated entities
Value type: Boolean
Default value: true
-
-
Method Details
-
entityType
is.codion.framework.domain.entity.EntityType entityType()- Returns:
- the type of the entity this table model is based on
-
connectionProvider
is.codion.framework.db.EntityConnectionProvider connectionProvider()- Returns:
- the connection provider used by this table model
-
connection
is.codion.framework.db.EntityConnection connection()Do not cache or keep the connection returned by this method in a long living field, since it may become invalid and thereby unusable.- Returns:
- the connection used by this table model
-
entities
is.codion.framework.domain.entity.Entities entities()- Returns:
- the underlying domain entities
-
entityDefinition
is.codion.framework.domain.entity.EntityDefinition entityDefinition()- Returns:
- the definition of the underlying entity
-
editModel
- Type Parameters:
C- the edit model type Returns theEntityEditModelassociated with this table model- Returns:
- the edit model associated with this table model
-
replace
void replace(is.codion.framework.domain.entity.attribute.ForeignKey foreignKey, Collection<is.codion.framework.domain.entity.Entity> foreignKeyValues) For every entity in this table model, replaces the foreign key instance bearing the primary key with the corresponding entity fromforeignKeyValues, useful when attribute values have been changed in the referenced entity that must be reflected in the table model.- Parameters:
foreignKey- the foreign keyforeignKeyValues- the foreign key entities
-
replace
Replaces the given entities in this table model- Parameters:
entities- the entities to replace
-
refresh
Refreshes the entities with the given keys by re-selecting them from the underlying database.- Parameters:
keys- the keys of the entities to refresh
-
conditionModel
EntityTableConditionModel conditionModel()- Returns:
- the
EntityTableConditionModelinstance used by this table model
-
editable
is.codion.common.state.State editable()- Returns:
- the State controlling whether this table model is editable
-
backgroundColor
- Parameters:
row- the row for which to retrieve the background colorattribute- the attribute for which to retrieve the background color- Returns:
- an Object representing the background color for this row and attribute, specified by the row entity
- See Also:
-
EntityDefinition.Builder.backgroundColorProvider(ColorProvider)
-
foregroundColor
- Parameters:
row- the row for which to retrieve the foreground colorattribute- the attribute for which to retrieve the foreground color- Returns:
- an Object representing the foreground color for this row and attribute, specified by the row entity
- See Also:
-
EntityDefinition.Builder.foregroundColorProvider(ColorProvider)
-
attributes
is.codion.common.value.ValueSet<is.codion.framework.domain.entity.attribute.Attribute<?>> attributes()Returns the ValueSet controlling which attributes are included when selecting entities to populate this model. Note that an empty ValueSet indicates that the default select attributes should be used.- Returns:
- the ValueSet controlling the selected attributes
-
limit
is.codion.common.value.Value<Integer> limit()Returns the Value controlling the maximum number of rows to fetch via the underlying query the next time this table model is refreshed, a null value means all rows should be fetched- Returns:
- the value controlling the limit
-
orderBy
is.codion.common.value.Value<is.codion.framework.domain.entity.OrderBy> orderBy()Controls the order by clause to use when selecting the data for this model. Setting this value to null reverts back to the default order by for the underlying entity, if one has been specified- Returns:
- the value controlling the order by clause
- See Also:
-
EntityDefinition.orderBy()
-
deleteSelected
Collection<is.codion.framework.domain.entity.Entity> deleteSelected() throws is.codion.common.db.exception.DatabaseExceptionDeletes the selected entities- Returns:
- the deleted entities
- Throws:
is.codion.common.db.exception.DatabaseException- in case of a database exceptionis.codion.common.model.CancelException- in case the user cancels the operationIllegalStateException- in case this table model has no edit model or if the edit model does not allow deleting
-
conditionRequired
is.codion.common.state.State conditionRequired()Returns a State controlling whether this table model should display all underlying entities when no query condition has been set. Setting this value to 'true' prevents all rows from being fetched by accident, when no condition has been set, which is recommended for tables with a large underlying dataset.- Returns:
- a State specifying whether this table model requires a query condition
-
handleEditEvents
is.codion.common.state.State handleEditEvents()- Returns:
- the state controlling whether this table model handles entity edit events, by replacing updated entities
- See Also:
-
onInsert
is.codion.common.value.Value<EntityTableModel.OnInsert> onInsert()- Returns:
- the Value controlling the action to perform when entities are inserted via the associated edit model
- See Also:
-
removeDeleted
is.codion.common.state.State removeDeleted()- Returns:
- the State controlling whether entities that are deleted via the associated edit model should be automatically removed from this table model
-
find
Collection<is.codion.framework.domain.entity.Entity> find(Collection<is.codion.framework.domain.entity.Entity.Key> keys) Finds entities in this table model according to the values inkeys- Parameters:
keys- the primary key values to use as condition- Returns:
- the entities from this table model having the primary key values as in
keys
-
select
Selects entities according to the primary keys inprimaryKeys- Parameters:
keys- the primary keys of the entities to select
-
find
Optional<is.codion.framework.domain.entity.Entity> find(is.codion.framework.domain.entity.Entity.Key primaryKey) Finds the entity in this table model having the given primary key- Parameters:
primaryKey- the primary key to search by- Returns:
- the entity with the given primary key from the table model, an empty Optional if not found
-
indexOf
int indexOf(is.codion.framework.domain.entity.Entity.Key primaryKey) - Parameters:
primaryKey- the primary key- Returns:
- the row index of the entity with the given primary key, -1 if not found
-
refresh
void refresh()Refreshes the items in this table model, according to the underlying condition- Specified by:
refreshin interfaceis.codion.common.model.FilterModel<E extends EntityEditModel>- See Also:
-
clear
void clear()Clears all items from this table model -
getRowCount
int getRowCount()- Returns:
- the number of visible rows in this table model
-
selectionModel
is.codion.common.model.table.TableSelectionModel<is.codion.framework.domain.entity.Entity> selectionModel()- Returns:
- the
TableSelectionModel
-
conditionChanged
is.codion.common.state.StateObserver conditionChanged()- Returns:
- a StateObserver indicating if the search condition has changed since last refresh
-
selectionEvent
is.codion.common.event.EventObserver<?> selectionEvent()- Returns:
- an observer notified when the selection changes in the underlying selection model
-