From ec54a80fe873038c1524e167850c85c0e1e131d5 Mon Sep 17 00:00:00 2001 From: woodjes Date: Wed, 10 Jul 2024 18:14:25 +0100 Subject: [PATCH] Bug fix: physical flows cannot be created unless external id is explicity set #CTCTOWALTZ-3261 #7107 --- .../org/finos/waltz/data/logical_flow/LogicalFlowDao.java | 3 ++- .../org/finos/waltz/data/physical_flow/PhysicalFlowDao.java | 5 +++-- .../physical_specification/PhysicalSpecificationDao.java | 3 ++- .../svelte/PhysicalFlowRegistrationView.svelte | 4 ++-- .../physical-flows/svelte/PhysicalSpecificationStep.svelte | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/waltz-data/src/main/java/org/finos/waltz/data/logical_flow/LogicalFlowDao.java b/waltz-data/src/main/java/org/finos/waltz/data/logical_flow/LogicalFlowDao.java index b57aacf6eb..530b296d58 100644 --- a/waltz-data/src/main/java/org/finos/waltz/data/logical_flow/LogicalFlowDao.java +++ b/waltz-data/src/main/java/org/finos/waltz/data/logical_flow/LogicalFlowDao.java @@ -109,7 +109,7 @@ public class LogicalFlowDao { return ImmutableLogicalFlow.builder() .id(record.getId()) - .externalId(Optional.ofNullable(record.getExternalId())) + .externalId(record.getExternalId()) .source(ImmutableEntityReference.builder() .kind(EntityKind.valueOf(record.getSourceEntityKind())) .id(record.getSourceEntityId()) @@ -151,6 +151,7 @@ public class LogicalFlowDao { record.setCreatedBy(flow.created().map(UserTimestamp::by).orElse(flow.lastUpdatedBy())); record.setIsReadonly(flow.isReadOnly()); record.setIsRemoved(flow.isRemoved()); + flow.externalId().ifPresent(record::setExternalId); return record; }; diff --git a/waltz-data/src/main/java/org/finos/waltz/data/physical_flow/PhysicalFlowDao.java b/waltz-data/src/main/java/org/finos/waltz/data/physical_flow/PhysicalFlowDao.java index 8fdabf7a1e..7c2be5093b 100644 --- a/waltz-data/src/main/java/org/finos/waltz/data/physical_flow/PhysicalFlowDao.java +++ b/waltz-data/src/main/java/org/finos/waltz/data/physical_flow/PhysicalFlowDao.java @@ -95,7 +95,7 @@ public class PhysicalFlowDao { .lastAttestedBy(Optional.ofNullable(record.getLastAttestedBy())) .lastAttestedAt(Optional.ofNullable(record.getLastAttestedAt()).map(Timestamp::toLocalDateTime)) .isRemoved(record.getIsRemoved()) - .externalId(Optional.ofNullable(record.getExternalId())) + .externalId(record.getExternalId()) .entityLifecycleStatus(EntityLifecycleStatus.valueOf(record.getEntityLifecycleStatus())) .created(UserTimestamp.mkForUser(record.getCreatedBy(), record.getCreatedAt())) .isReadOnly(record.getIsReadonly()) @@ -322,7 +322,8 @@ public long create(PhysicalFlow flow) { record.setLastAttestedAt(flow.lastAttestedAt().map(Timestamp::valueOf).orElse(null)); record.setIsRemoved(flow.isRemoved()); record.setProvenance("waltz"); - record.setExternalId(flow.externalId().orElse(null)); + + flow.externalId().ifPresent(record::setExternalId); record.setCreatedAt(flow.created().map(UserTimestamp::atTimestamp).orElse(Timestamp.valueOf(flow.lastUpdatedAt()))); record.setCreatedBy(flow.created().map(UserTimestamp::by).orElse(flow.lastUpdatedBy())); diff --git a/waltz-data/src/main/java/org/finos/waltz/data/physical_specification/PhysicalSpecificationDao.java b/waltz-data/src/main/java/org/finos/waltz/data/physical_specification/PhysicalSpecificationDao.java index ca7a73c87b..712a0717d7 100644 --- a/waltz-data/src/main/java/org/finos/waltz/data/physical_specification/PhysicalSpecificationDao.java +++ b/waltz-data/src/main/java/org/finos/waltz/data/physical_specification/PhysicalSpecificationDao.java @@ -220,7 +220,6 @@ public Long create(PhysicalSpecification specification) { record.setOwningEntityId(specification.owningEntity().id()); record.setName(specification.name()); - record.setExternalId(specification.externalId().orElse("")); record.setDescription(specification.description()); record.setFormat(specification.format().value()); record.setLastUpdatedAt(Timestamp.valueOf(specification.lastUpdatedAt())); @@ -232,6 +231,8 @@ public Long create(PhysicalSpecification specification) { record.setCreatedBy(specification.created().get().by()); record.setIsReadonly(specification.isReadOnly()); + specification.externalId().ifPresent(record::setExternalId); + record.store(); return record.getId(); } diff --git a/waltz-ng/client/physical-flows/svelte/PhysicalFlowRegistrationView.svelte b/waltz-ng/client/physical-flows/svelte/PhysicalFlowRegistrationView.svelte index c718e9a7b1..5b4a266a5e 100644 --- a/waltz-ng/client/physical-flows/svelte/PhysicalFlowRegistrationView.svelte +++ b/waltz-ng/client/physical-flows/svelte/PhysicalFlowRegistrationView.svelte @@ -62,7 +62,7 @@ description: $physicalSpecification.description, format: $physicalSpecification.format, lastUpdatedBy: "waltz", - externalId: $physicalSpecification.externalId, + externalId: !_.isEmpty($physicalSpecification.externalId) ? $physicalSpecification.externalId : null, id: $physicalSpecification.id ? $physicalSpecification.id : null } @@ -73,7 +73,7 @@ basisOffset: $physicalFlow.basisOffset, criticality: $physicalFlow.criticality, description: $physicalFlow.description, - externalId: $physicalFlow.externalId + externalId: !_.isEmpty($physicalFlow.externalId) ? $physicalFlow.externalId : null } const command = { diff --git a/waltz-ng/client/physical-flows/svelte/PhysicalSpecificationStep.svelte b/waltz-ng/client/physical-flows/svelte/PhysicalSpecificationStep.svelte index 6cd67f473e..5aabcf9123 100644 --- a/waltz-ng/client/physical-flows/svelte/PhysicalSpecificationStep.svelte +++ b/waltz-ng/client/physical-flows/svelte/PhysicalSpecificationStep.svelte @@ -34,7 +34,7 @@ workingCopy = Object.assign({}, $physicalSpecification); } else { workingCopy = { - externalId: "", + externalId: null, description: "", format: null, name: ""