From 5a87727ce530ed6de4da9832f69c3b62feadbc55 Mon Sep 17 00:00:00 2001 From: Kevin Birk Date: Mon, 26 Aug 2024 12:01:10 -0400 Subject: [PATCH] Fix the missing generic params. (#4560) Co-authored-by: Derek Vince --- .../models/dataservice/workflow/Workflow.java | 6 ++-- .../dataservice/workflow/WorkflowNode.java | 5 ++- .../service/data/WorkflowService.java | 32 ++++++++++++------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/Workflow.java b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/Workflow.java index 2bb1333287..1165682f36 100644 --- a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/Workflow.java +++ b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/Workflow.java @@ -30,7 +30,7 @@ public class Workflow extends TerariumAsset { @Type(JsonType.class) @Column(columnDefinition = "json") - private List nodes; + private List> nodes; @Type(JsonType.class) @Column(columnDefinition = "json") @@ -52,8 +52,8 @@ public Workflow clone() { final Map oldToNew = new HashMap<>(); clone.setNodes(new ArrayList<>()); - for (final WorkflowNode node : nodes) { - final WorkflowNode clonedNode = node.clone(clone.getId()); + for (final WorkflowNode node : nodes) { + final WorkflowNode clonedNode = node.clone(clone.getId()); oldToNew.put(node.getId(), clonedNode.getId()); clone.getNodes().add(clonedNode); } diff --git a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/WorkflowNode.java b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/WorkflowNode.java index 9e2ea26576..0d4017d66b 100644 --- a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/WorkflowNode.java +++ b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/models/dataservice/workflow/WorkflowNode.java @@ -8,7 +8,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import software.uncharted.terarium.hmiserver.annotations.TSIgnore; -import software.uncharted.terarium.hmiserver.annotations.TSModel; import software.uncharted.terarium.hmiserver.annotations.TSOptional; import software.uncharted.terarium.hmiserver.models.SupportAdditionalProperties; @@ -51,8 +50,8 @@ public class WorkflowNode extends SupportAdditionalProperties implements Seri private String status; - public WorkflowNode clone(final UUID workflowId) { - final WorkflowNode clone = (WorkflowNode) super.clone(); + public WorkflowNode clone(final UUID workflowId) { + final WorkflowNode clone = (WorkflowNode) super.clone(); clone.setId(UUID.randomUUID()); clone.setWorkflowId(workflowId); return clone; diff --git a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/WorkflowService.java b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/WorkflowService.java index 82ce860022..7272ec5675 100644 --- a/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/WorkflowService.java +++ b/packages/server/src/main/java/software/uncharted/terarium/hmiserver/service/data/WorkflowService.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.micrometer.observation.annotation.Observed; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -56,7 +57,7 @@ public Workflow createAsset(final Workflow asset, final UUID projectId, final Sc throws IOException, IllegalArgumentException { // ensure the workflow id is set correctly if (asset.getNodes() != null) { - for (final WorkflowNode node : asset.getNodes()) { + for (final WorkflowNode node : asset.getNodes()) { node.setWorkflowId(asset.getId()); } } @@ -78,17 +79,17 @@ public Optional updateAsset( // Fetch database copy, we will update into it final Workflow dbWorkflow = getAsset(asset.getId(), hasWritePermission).get(); - final List dbWorkflowNodes = dbWorkflow.getNodes(); - final List dbWorkflowEdges = dbWorkflow.getEdges(); - final Map nodeMap = new HashMap(); - final Map edgeMap = new HashMap(); + List> dbWorkflowNodes = dbWorkflow.getNodes(); + List dbWorkflowEdges = dbWorkflow.getEdges(); + final Map> nodeMap = new HashMap<>(); + final Map edgeMap = new HashMap<>(); dbWorkflow.setName(asset.getName()); dbWorkflow.setDescription(asset.getDescription()); // Prep: sane state, cache the nodes/edges to update for easy retrival if (asset.getNodes() != null) { - for (final WorkflowNode node : asset.getNodes()) { + for (final WorkflowNode node : asset.getNodes()) { node.setWorkflowId(asset.getId()); if (node.getVersion() == null) { node.setVersion(1L); @@ -111,8 +112,8 @@ public Optional updateAsset( //////////////////////////////////////////////////////////////////////////////// if (dbWorkflowNodes != null && dbWorkflowNodes.size() > 0) { for (int index = 0; index < dbWorkflowNodes.size(); index++) { - final WorkflowNode dbNode = dbWorkflowNodes.get(index); - final WorkflowNode node = nodeMap.get(dbNode.getId()); + final WorkflowNode dbNode = dbWorkflowNodes.get(index); + final WorkflowNode node = nodeMap.get(dbNode.getId()); if (node == null) continue; if (node.getIsDeleted()) { @@ -129,7 +130,8 @@ public Optional updateAsset( continue; } - // FIXME: backwards compatibility for older workflows, remove in a few month. Aug 2024 + // FIXME: backwards compatibility for older workflows, remove in a few month. + // Aug 2024 if (dbNode.getVersion() == null) { dbNode.setVersion(1L); continue; @@ -165,7 +167,8 @@ public Optional updateAsset( continue; } - // FIXME: backwards compatibility for older workflows, remove in a few month. Aug 2024 + // FIXME: backwards compatibility for older workflows, remove in a few month. + // Aug 2024 if (dbEdge.getVersion() == null) { dbEdge.setVersion(1L); } @@ -183,9 +186,16 @@ public Optional updateAsset( //////////////////////////////////////////////////////////////////////////////// // Handle new nodes or edges //////////////////////////////////////////////////////////////////////////////// - for (final Map.Entry pair : nodeMap.entrySet()) { + if (dbWorkflowNodes == null) { + dbWorkflowNodes = new ArrayList<>(); + } + for (final Map.Entry> pair : nodeMap.entrySet()) { dbWorkflowNodes.add(pair.getValue()); } + + if (dbWorkflowEdges == null) { + dbWorkflowEdges = new ArrayList<>(); + } for (final Map.Entry pair : edgeMap.entrySet()) { dbWorkflowEdges.add(pair.getValue()); }