Class TemplateEntity
- All Implemented Interfaces:
EntityReference, Entity
TemplateEntity is a special Entity in that it is a view
of any other normal Entity. It always has an underlying "base entity"
which contributes its entity model with a few exceptions (i.e. without the
keys) and a subset of its relations to this entity model. The data of this
template entity is serialized into a textual representation and stored in a
single field of type `text`.
When loading, the representation is read and fields are populated according
to the current type of the field of the underlying base model. Relations are
loaded from the current database and linked back to this template entity.-
Nested Class Summary
Nested classes/interfaces inherited from interface Entity
Entity.State -
Constructor Summary
ConstructorsConstructorDescriptionTemplateEntity(Entity templateEntity, TemplateEntityManager entityManager, TypeManager typeManager, CommandExecutor executor, Set<TemplateEntityFieldHandler> fieldHandlers, TemplateBlacklist templateBlacklist) -
Method Summary
Modifier and TypeMethodDescriptionprotected EntityModelvoiddelete()Delete the entity.protected voiddoJoinTx(Transaction tx) Executed exactly once for any TemplateEntity instance, if one of the `joinTx` methods is invoked.protected TemplateEntityManagerprotected ObjectfromString(String field, String value) booleanReturns all field names for fields with values differing from initially loaded value in current transaction.protected FieldModelgetFieldModel(String field) @Nullable PrimaryKeygetKey()Get the primary key of this entity.org.slf4j.LoggerProvides access to the entity's logger.Get the manager that manages this entity.getModel()Get the entity model.<T> TgetOldValue(String field, Class<T> targetType) Get the old value of a field.getRelatedEntity(String relName) Returns the single related entity for the given relation name, or throws.@Nullable EntitygetRelatedEntityOrNull(String relName) Returns the single related entity for the given relation name, null if none, or throws.getState()Get the current state of the entity.<T> TgetTemplateValue(FieldModel fieldModel, Type<T> type) protected TypeManagerTypedValue<?> getValue(FieldModel model) Get the value and (nominal) type of a field.<T> TgetValue(FieldModel fieldModel, Type<T> type) Get the value of a field as the specified type, converting the value if neccessary.<T> TgetValue(FieldModel fieldModel, Class<T> targetClass) Get the value of a field, converting it if necessary.TypedValue<?> Get the value and (nominal) type of a field.<T> TGet the value of a field as the specified type, converting the value if neccessary.<T> TGet the value of a field, converting it if necessary.Get all values of the entity as a map.booleanisFieldChanged(String field) Returns true if the current field value differs from initially loaded value in current transaction.static booleanisTemplateField(String name) booleanDetermine whether the entity is updatable.voidjoinTx()Joins the current transaction.protected Type<?> requireType(String field) Resolve a relation.voidsetAutoFieldsDisabled(boolean disabled) Disables fields listedEntityAutoField(like version, update-user and -timestamps).voidsetTemplateValue(String field, Object value) voidSet the value of a field.static StringstripTemplatePrefix(String name) protected Stringvalidate(boolean asynchronous) Validates this entity by running the validators of this entity's fields.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Entity
getBool, getDate, getDateTime, getDecimal, getDouble, getFloat, getInt, getLong, getShort, getString, getTime, hasKey, requireBool, requireDate, requireDateTime, requireDecimal, requireDouble, requireFloat, requireInt, requireKey, requireLong, requireOldValue, requireShort, requireString, requireTime, requireValue, requireValue, requireValue, requireValue, requireValue, requireValue, validate
-
Constructor Details
-
TemplateEntity
public TemplateEntity(Entity templateEntity, TemplateEntityManager entityManager, TypeManager typeManager, CommandExecutor executor, Set<TemplateEntityFieldHandler> fieldHandlers, TemplateBlacklist templateBlacklist)
-
-
Method Details
-
setValue
Description copied from interface:EntitySet the value of a field.In the current implementation no content validation is made on this method call - other than null on a non-nullable field. Validation happens when storing, when all values have been set.
The value must either be in the correct data type, or convertible. To be convertible there must be a
ch.tocco.nice2.types.spi.Convertercontributed. Note that not all kinds of conversions that seem obvious at first are registered, for example there is no string to integer converter and thus a value like "" won't work and set 0 on an int field. Setting an int 0 on a long field works though because there is an int to long type converter.- Parameters:
field- The name of the field.value- The new value in the expected data type, or in a conversible type of it. Throwsch.tocco.nice2.security.UnauthorizedExceptionIf the user does not have the permission to set/change the value.
-
setTemplateValue
-
getTemplateValue
-
getValue
Description copied from interface:EntityGet the value of a field as the specified type, converting the value if neccessary.- Parameters:
fieldModel- The field model.type- The target type.- Returns:
- The value.
-
delete
-
doJoinTx
Executed exactly once for any TemplateEntity instance, if one of the `joinTx` methods is invoked. -
getChangedFields
-
isFieldChanged
-
getTouchedRelations
-
resolve
Description copied from interface:EntityResolve a relation. Throws if there is no such relation, check the model if you're unsure!The returned RelationQuery may be modified by interceptors already when you receive it. For example, in the entity system, there is (as of now) the NiceModelEntityInterceptorFactory which appends the default ordering rules of the EntityModel on query.
- Parameters:
relation- The name of the relation- Returns:
- The executable
RelationQuery.
-
getValueMap
Description copied from interface:EntityGet all values of the entity as a map.Changes to that map will not be reflected in the entity.
The data includes pk fields as well as nice-specific fields (version etc).
- Returns:
- A map containing all values of the entity (shallow copy, modifiable).
-
getModel
-
getManager
Description copied from interface:EntityGet the manager that manages this entity. -
baseModel
-
getTemplateEntity
-
entityManager
-
getTypeManager
-
requireType
-
fromString
- Throws:
StringConversionException
-
toString
-
isTemplateField
-
stripTemplatePrefix
-
getKey
Description copied from interface:EntityGet the primary key of this entity.- Specified by:
getKeyin interfaceEntity- Specified by:
getKeyin interfaceEntityReference- Returns:
- The primary key of this entity, or null if in CONCEPTION state.
- See Also:
-
getValue
Description copied from interface:EntityGet the value of a field as the specified type, converting the value if neccessary. -
getValue
Description copied from interface:EntityGet the value and (nominal) type of a field. If the underlying value isnull, it returns the type associated with the value ofnull.- Specified by:
getValuein interfaceEntity- Parameters:
model- The name of the field- Returns:
- A
TypedValue.
-
getValue
Description copied from interface:EntityGet the value and (nominal) type of a field. If the value of the specified field isnull, typed value with the field type and an associated value ofnullis returned.- Specified by:
getValuein interfaceEntity- Parameters:
field- The name of the field- Returns:
- A
TypedValue.
-
getValue
Description copied from interface:EntityGet the value of a field, converting it if necessary. -
getValue
Description copied from interface:EntityGet the value of a field, converting it if necessary. -
getOldValue
Description copied from interface:EntityGet the old value of a field.- Specified by:
getOldValuein interfaceEntity- Parameters:
field- The field to get the old value from.targetType- The target Java type.- Returns:
- the old value of the field (cached value read from database).
-
getFieldModel
-
joinTx
-
isUpdatable
public boolean isUpdatable()Description copied from interface:EntityDetermine whether the entity is updatable.- Specified by:
isUpdatablein interfaceEntity- Returns:
true, if the entity is updatable,false, if it's read-only.
-
getState
Description copied from interface:EntityGet the current state of the entity. -
getContext
- Specified by:
getContextin interfaceEntity
-
validate
Description copied from interface:EntityValidates this entity by running the validators of this entity's fields. Such validation includes business logic. Data type validation has been made way before, before setting the values on this entity object. Validators that throw a WARN level error may be ignored, which means they won't be run at all, and thus won't stop a persist operation. The DataOperator uses this functionality. The GUI can show a warning to the user, and he may change his input, or ignore the warning and submit again. If asynchronous is set to true, only validators that are deemed save for asynchronous validation (e.g. validation of an entity before everything is filled in / before listeners) are run. If it is set to false, all validators will be run. -
validate
-
getLogger
-
getRelatedEntity
Description copied from interface:EntityReturns the single related entity for the given relation name, or throws.- Specified by:
getRelatedEntityin interfaceEntity- Parameters:
relName- The relation name.- Returns:
- The single related entity, loaded eagerly.
- See Also:
-
getRelatedEntityOrNull
Description copied from interface:EntityReturns the single related entity for the given relation name, null if none, or throws.Like
Entity.getRelatedEntity(String)but returnsnullif none.- Specified by:
getRelatedEntityOrNullin interfaceEntity- Parameters:
relName- The relation name.- Returns:
- The single related entity loaded eagerly, or
nullif none. - See Also:
-
setAutoFieldsDisabled
public void setAutoFieldsDisabled(boolean disabled) Description copied from interface:EntityDisables fields listedEntityAutoField(like version, update-user and -timestamps). Useful for background-tasks which update things which can be re-written when overwritten by someone else. Important: Use this only when you exactly know why you are doing it!- Specified by:
setAutoFieldsDisabledin interfaceEntity
-
getAutoFieldsDisabled
public boolean getAutoFieldsDisabled()- Specified by:
getAutoFieldsDisabledin interfaceEntity- See Also:
-