#1231: ExtendedBaseDO.kt

projectforge-business/src/main/kotlin/org/projectforge/framework/persistence/api/ExtendedBaseDO.kt Interface — Persistence Base Entity, projectforge-business/src/main/kotlin/org/projectforge/framework/persistence/api/ExtendedBaseDO.kt 63 lines · 18 code · 36 comments · 9 blank
Extends BaseDO<I> with soft-delete and audit timestamp support. Adds deleted (from MarkDeletableRecord), created timestamp, lastUpdate timestamp, and a recalculate() hook for derived/transient field computation before display or indexing.

Architecture

Interface Hierarchy

Serializable
  └── BaseDO<I : Serializable>
        └── ExtendedBaseDO<I : Serializable>
              (also extends MarkDeletableRecord<I>)

Contract Fields & Methods

MemberTypeDescription
deletedBoolean (override)Soft-delete flag. When true, the entity is logically deleted but retained in the database. Overridden from BaseDO.
createdDate?Timestamp of initial creation. Auto-set via setCreated().
lastUpdateDate?Timestamp of last modification. Auto-updated by the persistence layer on each write. Auto-set via setLastUpdate().
recalculate()UnitHook for pre-display/post-load computations. Used for transient fields calculated from persistent fields (e.g., full name from first+last name).
setCreated()UnitConvenience: sets created to current time
setLastUpdate()UnitConvenience: sets lastUpdate to current time

Usage Context

Most domain entities in ProjectForge implement ExtendedBaseDO rather than the raw BaseDO. The BaseDao infrastructure relies on these fields for:

Relevant Annotations

Implementing classes typically annotate these fields with JPA annotations: @Basic, @Column for the database mapping; @PropertyInfo(i18nKey = "...") for the UI property system.

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
e33c8b9c2 Migration stuff in progress...
06828f490 Migration stuff in progress...
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f7ef41b8 Copyright 2021 -> 2022
ceb63e8a1 Source code header: (C) 2001-2021.
7c79f1922 Copyright of source header -> 2020.
32f634b88 Optimize imports
dd5ca38ac CopyRight of all java file-header updated or created.
9ebb88522 Initial commit