Package org.ehrbase.repository
Class AbstractVersionedObjectRepository<VR extends org.jooq.UpdatableRecord,DR extends org.jooq.UpdatableRecord,VH extends org.jooq.UpdatableRecord,DH extends org.jooq.UpdatableRecord,O extends com.nedap.archie.rm.archetyped.Locatable>
java.lang.Object
org.ehrbase.repository.AbstractVersionedObjectRepository<VR,DR,VH,DH,O>
- Direct Known Subclasses:
CompositionRepository,EhrFolderRepository,EhrRepository
public abstract class AbstractVersionedObjectRepository<VR extends org.jooq.UpdatableRecord,DR extends org.jooq.UpdatableRecord,VH extends org.jooq.UpdatableRecord,DH extends org.jooq.UpdatableRecord,O extends com.nedap.archie.rm.archetyped.Locatable>
extends Object
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.jooq.DSLContextprotected final ContributionRepositoryprotected static final ObjectDataHistoryTablePrototypeprotected static final ObjectDataTablePrototypeprotected final SystemServiceprotected final TimeProviderprotected static final ObjectVersionHistoryTablePrototypeprotected static final ObjectVersionTablePrototype -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractVersionedObjectRepository(AuditDetailsTargetType targetType, org.jooq.Table<VR> versionHead, org.jooq.Table<DR> dataHead, org.jooq.Table<VH> versionHistory, org.jooq.Table<DH> dataHistory, org.jooq.DSLContext context, ContributionRepository contributionRepository, SystemService systemService, TimeProvider timeProvider) -
Method Summary
Modifier and TypeMethodDescriptionbuildLocatableDataQuery(org.jooq.Condition condition, boolean head) static com.nedap.archie.rm.support.identification.ObjectVersionIdbuildObjectVersionId(UUID versionedObjectId, int sysVersion, SystemService systemService) protected voidcommitHead(UUID ehrId, com.nedap.archie.rm.archetyped.Locatable composition, UUID contributionId, UUID auditId, ContributionChangeType changeType, Consumer<VR> addVersionFieldsFunction, Consumer<DR> addDataFieldsFunction) protected org.jooq.ConditioncontributionCondition(UUID ehrId, UUID contributionId, org.jooq.Table<?> table) protected voidcopyHeadToHistory(VH versionRecord, OffsetDateTime now) protected OffsetDateTimecreateCurrentTime(OffsetDateTime lowerBound) Determines the current time.protected org.jooq.ConditiondataRootCondition(org.jooq.Table<?> dataTable) protected voiddelete(UUID ehrId, org.jooq.Condition condition, int version, UUID contributionId, UUID auditId, String notfoundMessage) protected voiddeleteHead(org.jooq.Condition versionCondition, int oldVersion, Function<String, RuntimeException> exceptionProvider) static UUIDextractUid(com.nedap.archie.rm.support.identification.UIDBasedId compositionUid) static intextractVersion(com.nedap.archie.rm.support.identification.UIDBasedId compositionUid) protected <T> org.jooq.Field<T> field(org.jooq.TableField<? extends AbstractRecordPrototype<?>, T> field) findByVersion(org.jooq.Condition condition, org.jooq.Condition historyCondition, int version) findHead(org.jooq.Condition condition) findLatestHistoryRoot(org.jooq.Condition condition) findRootRecordByVersion(org.jooq.Condition condition, org.jooq.Condition historyCondition, int version) protected Optional<com.nedap.archie.rm.support.identification.ObjectVersionId> findVersionByTime(org.jooq.Condition condition, org.jooq.Condition historyCondition, OffsetDateTime time) protected org.jooq.Result<VH> findVersionHeadRecords(org.jooq.Condition condition) List<com.nedap.archie.rm.support.identification.ObjectVersionId> findVersionIdsByContribution(UUID ehrId, UUID contributionId) protected <S extends org.jooq.SelectFromStep<R>,R extends org.jooq.Record>
org.jooq.SelectOnConditionStep<R> fromJoinedVersionData(S select, boolean head) getOriginalVersion(org.jooq.Condition condition, org.jooq.Condition historyCondition, int version) protected booleanprotected org.jooq.Field<String> jsonDataField(org.jooq.Table<DR> table, String... path) protected <L extends com.nedap.archie.rm.archetyped.Locatable>
Optional<L> toLocatable(org.jooq.Record3<UUID, Integer, org.jooq.JSONB> jsonbRecord, Class<L> locatableClass) protected final VersionDataDbRecordtoRecords(UUID ehrId, com.nedap.archie.rm.archetyped.Locatable versionDataObject, UUID contributionId, UUID auditId) voidupdate(UUID ehrId, O composition, org.jooq.Condition condition, org.jooq.Condition historyCondition, UUID contributionId, UUID auditId, Consumer<VR> addVersionFieldsFunction, Consumer<DR> addDataFieldsFunction, String notFoundErrorMessage) protected org.jooq.SelectJoinStep<org.jooq.Record> versionHeadQueryExtended(org.jooq.DSLContext context) version head + empty history fields: SYS_PERIOD_UPPER, SYS_DELETED
-
Field Details
-
VERSION_PROTOTYPE
-
VERSION_HISTORY_PROTOTYPE
-
DATA_PROTOTYPE
-
DATA_HISTORY_PROTOTYPE
-
tables
-
context
protected final org.jooq.DSLContext context -
contributionRepository
-
systemService
-
timeProvider
-
-
Constructor Details
-
AbstractVersionedObjectRepository
protected AbstractVersionedObjectRepository(AuditDetailsTargetType targetType, org.jooq.Table<VR> versionHead, org.jooq.Table<DR> dataHead, org.jooq.Table<VH> versionHistory, org.jooq.Table<DH> dataHistory, org.jooq.DSLContext context, ContributionRepository contributionRepository, SystemService systemService, TimeProvider timeProvider)
-
-
Method Details
-
buildObjectVersionId
public static com.nedap.archie.rm.support.identification.ObjectVersionId buildObjectVersionId(UUID versionedObjectId, int sysVersion, SystemService systemService) -
findHead
-
findByVersion
-
field
protected <T> org.jooq.Field<T> field(org.jooq.TableField<? extends AbstractRecordPrototype<?>, T> field) -
findRootRecordByVersion
-
findVersionIdsByContribution
-
contributionCondition
-
isDeleted
protected boolean isDeleted(org.jooq.Condition condition, org.jooq.Condition historyCondition, Integer version) -
findLatestHistoryRoot
-
delete
-
getOriginalVersion
-
getLocatableClass
-
extractVersion
public static int extractVersion(com.nedap.archie.rm.support.identification.UIDBasedId compositionUid) -
extractUid
-
commitHead
-
toRecords
protected final VersionDataDbRecord toRecords(UUID ehrId, com.nedap.archie.rm.archetyped.Locatable versionDataObject, UUID contributionId, UUID auditId) -
update
-
buildLocatableDataQuery
-
fromJoinedVersionData
protected <S extends org.jooq.SelectFromStep<R>,R extends org.jooq.Record> org.jooq.SelectOnConditionStep<R> fromJoinedVersionData(S select, boolean head) -
getVersionDataJoinFields
-
dataRootCondition
protected org.jooq.Condition dataRootCondition(org.jooq.Table<?> dataTable) -
findVersionByTime
protected Optional<com.nedap.archie.rm.support.identification.ObjectVersionId> findVersionByTime(org.jooq.Condition condition, org.jooq.Condition historyCondition, OffsetDateTime time) -
toLocatable
protected <L extends com.nedap.archie.rm.archetyped.Locatable> Optional<L> toLocatable(org.jooq.Record3<UUID, Integer, org.jooq.JSONB> jsonbRecord, Class<L> locatableClass) - Type Parameters:
L-- Parameters:
jsonbRecord- {vo_id, sys_version, jsonData}locatableClass-- Returns:
-
copyHeadToHistory
-
deleteHead
protected void deleteHead(org.jooq.Condition versionCondition, int oldVersion, Function<String, RuntimeException> exceptionProvider) -
versionHeadQueryExtended
protected org.jooq.SelectJoinStep<org.jooq.Record> versionHeadQueryExtended(org.jooq.DSLContext context) version head + empty history fields: SYS_PERIOD_UPPER, SYS_DELETED- Parameters:
context-- Returns:
-
findVersionHeadRecords
-
jsonDataField
-
createCurrentTime
Determines the current time.- Parameters:
lowerBound- For proper version intervals the value is guaranteed to be at least 1 microsecond after lowerBound- Returns:
-