|
8 | 8 | package io.camunda.migration.data.impl.history; |
9 | 9 |
|
10 | 10 | import static io.camunda.migration.data.MigratorMode.RETRY_SKIPPED; |
11 | | -import static io.camunda.migration.data.impl.logging.HistoryMigratorLogs.SKIP_REASON_BELONGS_TO_SKIPPED_TASK; |
12 | 11 | import static io.camunda.migration.data.constants.MigratorConstants.C7_HISTORY_PARTITION_ID; |
| 12 | +import static io.camunda.migration.data.impl.logging.HistoryMigratorLogs.SKIP_REASON_BELONGS_TO_SKIPPED_TASK; |
13 | 13 | import static io.camunda.migration.data.impl.logging.HistoryMigratorLogs.SKIP_REASON_MISSING_PROCESS_DEFINITION; |
14 | 14 | import static io.camunda.migration.data.impl.logging.HistoryMigratorLogs.SKIP_REASON_MISSING_PROCESS_INSTANCE; |
15 | 15 | import static io.camunda.migration.data.impl.logging.HistoryMigratorLogs.SKIP_REASON_MISSING_ROOT_PROCESS_INSTANCE; |
16 | 16 | import static io.camunda.migration.data.impl.persistence.IdKeyMapper.TYPE.HISTORY_AUDIT_LOG; |
17 | 17 | import static io.camunda.migration.data.impl.persistence.IdKeyMapper.TYPE.HISTORY_PROCESS_DEFINITION; |
18 | 18 | import static io.camunda.migration.data.impl.persistence.IdKeyMapper.TYPE.HISTORY_PROCESS_INSTANCE; |
19 | 19 | import static io.camunda.migration.data.impl.persistence.IdKeyMapper.TYPE.HISTORY_USER_TASK; |
| 20 | +import static io.camunda.migration.data.impl.util.ConverterUtil.convertDate; |
20 | 21 | import static io.camunda.migration.data.impl.util.ConverterUtil.getNextKey; |
21 | 22 |
|
22 | 23 | import io.camunda.db.rdbms.write.domain.AuditLogDbModel; |
23 | 24 | import io.camunda.migration.data.exception.EntityInterceptorException; |
24 | 25 | import io.camunda.migration.data.impl.logging.HistoryMigratorLogs; |
25 | 26 | import io.camunda.migration.data.interceptor.property.EntityConversionContext; |
26 | 27 | import io.camunda.search.entities.ProcessInstanceEntity; |
| 28 | +import java.time.OffsetDateTime; |
| 29 | +import java.time.Period; |
| 30 | +import java.util.Date; |
27 | 31 | import org.camunda.bpm.engine.history.UserOperationLogEntry; |
| 32 | +import org.camunda.bpm.engine.impl.util.ClockUtil; |
28 | 33 | import org.springframework.stereotype.Service; |
29 | 34 |
|
30 | 35 | /** |
@@ -82,6 +87,8 @@ public void migrateOne(UserOperationLogEntry c7AuditLog) { |
82 | 87 | EntityConversionContext<?, ?> context = createEntityConversionContext( |
83 | 88 | c7AuditLog, UserOperationLogEntry.class, auditLogDbModelBuilder); |
84 | 89 |
|
| 90 | + setHistoryCleanupDate(c7AuditLog, auditLogDbModelBuilder); |
| 91 | + |
85 | 92 | validateDependenciesAndInsert(c7AuditLog, context, c7AuditLogId); |
86 | 93 | } catch (EntityInterceptorException e) { |
87 | 94 | handleInterceptorException(c7AuditLogId, HISTORY_AUDIT_LOG, c7AuditLog.getTimestamp(), e); |
@@ -200,4 +207,34 @@ protected AuditLogDbModel convertAuditLog(EntityConversionContext<?, ?> context) |
200 | 207 | AuditLogDbModel.Builder builder = (AuditLogDbModel.Builder) entityConversionContext.getC8DbModelBuilder(); |
201 | 208 | return builder.build(); |
202 | 209 | } |
| 210 | + |
| 211 | + protected OffsetDateTime calculateHistoryCleanupDate(OffsetDateTime endTime, Date c7RemovalTime) { |
| 212 | + if (c7RemovalTime != null) { |
| 213 | + return convertDate(c7RemovalTime); |
| 214 | + } |
| 215 | + |
| 216 | + Period ttl = getAutoCancelTtl(); |
| 217 | + if (ttl == null || ttl.isZero()) { |
| 218 | + return null; |
| 219 | + } |
| 220 | + return endTime.plus(ttl); |
| 221 | + } |
| 222 | + |
| 223 | + protected OffsetDateTime calculateEndDate(Date c7EndDate) { |
| 224 | + if (c7EndDate == null) { |
| 225 | + return convertDate(ClockUtil.now()); |
| 226 | + } |
| 227 | + return convertDate(c7EndDate); |
| 228 | + } |
| 229 | + |
| 230 | + protected void setHistoryCleanupDate(UserOperationLogEntry c7AuditLog, |
| 231 | + AuditLogDbModel.Builder auditLogDbModelBuilder) { |
| 232 | + Date c7EndTime = c7AuditLog.getTimestamp(); |
| 233 | + var c8EndTime = calculateEndDate(c7EndTime); |
| 234 | + var c8HistoryCleanupDate = calculateHistoryCleanupDate(c8EndTime, c7AuditLog.getRemovalTime()); |
| 235 | + |
| 236 | + auditLogDbModelBuilder |
| 237 | + .historyCleanupDate(c8HistoryCleanupDate) |
| 238 | + .timestamp(c8EndTime); |
| 239 | + } |
203 | 240 | } |
0 commit comments