Module is.codion.framework.domain
Interface AuditColumnDefinition<T>
- Type Parameters:
T
- the underlying type
- All Superinterfaces:
AttributeDefinition<T>
,ColumnDefinition<T>
A column definition representing an audit column that tracks data modification events.
Audit columns automatically capture information about when and by whom data was inserted or updated. They are typically used for compliance, debugging, and data lineage tracking.
Audit columns are assumed to be automatically populated during insert and update operations by the underlying database:
public class Store extends DefaultDomain {
interface Product {
EntityType TYPE = DOMAIN.entityType("store.product");
// Regular columns
Column<Integer> ID = TYPE.integerColumn("id");
Column<String> NAME = TYPE.stringColumn("name");
Column<BigDecimal> PRICE = TYPE.bigDecimalColumn("price");
// Audit columns
Column<String> CREATED_BY = TYPE.stringColumn("created_by");
Column<LocalDateTime> CREATED_DATE = TYPE.localDateTimeColumn("created_date");
Column<String> UPDATED_BY = TYPE.stringColumn("updated_by");
Column<LocalDateTime> UPDATED_DATE = TYPE.localDateTimeColumn("updated_date");
}
void defineProduct() {
Product.TYPE.define(
Product.ID.define()
.primaryKey(),
Product.NAME.define()
.column(),
Product.PRICE.define()
.column(),
// Audit columns for INSERT operations
Product.CREATED_BY.define()
.auditColumn()
.auditAction(AuditAction.INSERT)
.caption("Created By"),
Product.CREATED_DATE.define()
.auditColumn()
.auditAction(AuditAction.INSERT)
.caption("Created Date"),
// Audit columns for UPDATE operations
Product.UPDATED_BY.define()
.auditColumn()
.auditAction(AuditAction.UPDATE)
.caption("Updated By"),
Product.UPDATED_DATE.define()
.auditColumn()
.auditAction(AuditAction.UPDATE)
.caption("Updated Date"))
.build();
}
}
// Usage - audit columns are populated automatically
Entity product = entities.builder(Product.TYPE)
.with(Product.NAME, "Laptop")
.with(Product.PRICE, new BigDecimal("999.99"))
.build();
// Insert - CREATED_BY and CREATED_DATE are populated automatically
connection.insert(product);
String createdBy = product.get(Product.CREATED_BY); // Current user
LocalDateTime createdDate = product.get(Product.CREATED_DATE); // Current timestamp
// Update - UPDATED_BY and UPDATED_DATE are populated automatically
product.set(Product.PRICE, new BigDecimal("899.99"));
connection.update(product);
String updatedBy = product.get(Product.UPDATED_BY); // Current user
LocalDateTime updatedDate = product.get(Product.UPDATED_DATE); // Current timestamp
// Audit columns provide full modification history
System.out.println("Product created by " + createdBy + " on " + createdDate);
System.out.println("Product updated by " + updatedBy + " on " + updatedDate);
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface is.codion.framework.domain.entity.attribute.AttributeDefinition
AttributeDefinition.ValueSupplier<T>
Nested classes/interfaces inherited from interface is.codion.framework.domain.entity.attribute.ColumnDefinition
ColumnDefinition.Builder<T,
B extends ColumnDefinition.Builder<T, B>> -
Field Summary
Fields inherited from interface is.codion.framework.domain.entity.attribute.AttributeDefinition
DATE_FORMAT, DATE_TIME_FORMAT, DECIMAL_ROUNDING_MODE, DECIMAL_SEPARATOR, DEFAULT_MAXIMUM_FRACTION_DIGITS, GROUPING_SEPARATOR, MAXIMUM_FRACTION_DIGITS, MNEMONIC_RESOURCE_SUFFIX, NUMBER_FORMAT_GROUPING, TIME_FORMAT, TRIM_STRINGS, USE_LEXICAL_STRING_COMPARATOR
-
Method Summary
Methods inherited from interface is.codion.framework.domain.entity.attribute.AttributeDefinition
caption, comparator, dateTimeFormatter, dateTimePattern, decimalRoundingMode, defaultValue, derived, description, entityType, format, hasDefaultValue, hidden, items, maximumFractionDigits, maximumLength, maximumValue, minimumValue, mnemonic, nullable, string, trim, validItem
Methods inherited from interface is.codion.framework.domain.entity.attribute.ColumnDefinition
aggregate, attribute, columnHasDefaultValue, converter, expression, get, groupBy, insertable, name, primaryKey, primaryKeyIndex, readOnly, searchable, selected, set, type, updatable
-
Method Details
-
auditAction
AuditAction auditAction()- Returns:
- the audit action this column represents
-