From 1bceb7cf50103158c30c16e3245cdcf72679f492 Mon Sep 17 00:00:00 2001 From: juanf <juanf@ethz.ch> Date: Fri, 12 Aug 2022 12:56:42 +0200 Subject: [PATCH] SSDM-12864 : Updated parents/children delete behaviour --- .../importer/helper/SampleImportHelper.java | 82 ++++++++++++------- 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleImportHelper.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleImportHelper.java index 79b7bfac070..98b3e989752 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleImportHelper.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleImportHelper.java @@ -276,53 +276,75 @@ public class SampleImportHelper extends BasicImportHelper // Start - Special case -> Remove parents / children & Special case -> Sample Variables Sample originSample = delayedExecutor.getSample(sampleId, fetchOptions); - Set<SampleIdentifier> parentIds = new HashSet<>(); - if (parents != null && !parents.isEmpty()) + + if (parents == null || parents.isEmpty()) { - for (String parent : parents.split("\n")) + // Skip empty values to avoid deleting by mistake + } else + { + Set<SampleIdentifier> parentIds = new HashSet<>(); + if (parents.equals("--DELETE--") || parents.equals("__DELETE__")) { - if (parent.startsWith(VARIABLE_PREFIX)) - { - update.getParentIds().add(new IdentifierVariable(parent)); - } else + // Delete missing = all + } else // Delete missing + { + for (String parent : parents.split("\n")) { - SampleIdentifier parentId = new SampleIdentifier(parent); - update.getParentIds().add(parentId); - parentIds.add(parentId); + if (parent.startsWith(VARIABLE_PREFIX)) + { + update.getParentIds().add(new IdentifierVariable(parent)); + } else + { + SampleIdentifier parentId = new SampleIdentifier(parent); + update.getParentIds().add(parentId); + parentIds.add(parentId); + } } } - } - for (Sample parent : originSample.getParents()) - { - if (!parentIds.contains(parent.getIdentifier())) + + for (Sample parent : originSample.getParents()) { - update.getParentIds().remove(parent.getIdentifier()); + if (!parentIds.contains(parent.getIdentifier())) + { + update.getParentIds().remove(parent.getIdentifier()); + } } } - Set<SampleIdentifier> childrenIds = new HashSet<>(); - if (children != null && !children.isEmpty()) + if (children == null || children.isEmpty()) { - for (String child : children.split("\n")) + // Skip empty values to avoid deleting by mistake + } else + { + Set<SampleIdentifier> childrenIds = new HashSet<>(); + if (children.equals("--DELETE--") || children.equals("__DELETE__")) { - if (child.startsWith(VARIABLE_PREFIX)) - { - update.getChildIds().add(new IdentifierVariable(child)); - } else + // Delete missing = all + } else // Delete missing + { + for (String child : children.split("\n")) { - SampleIdentifier childId = new SampleIdentifier(child); - update.getChildIds().add(childId); - childrenIds.add(childId); + if (child.startsWith(VARIABLE_PREFIX)) + { + update.getChildIds().add(new IdentifierVariable(child)); + } else + { + SampleIdentifier childId = new SampleIdentifier(child); + update.getChildIds().add(childId); + childrenIds.add(childId); + } } } - } - for (Sample child : originSample.getChildren()) - { - if (!childrenIds.contains(child.getIdentifier())) + + for (Sample child : originSample.getChildren()) { - update.getChildIds().remove(child.getIdentifier()); + if (!childrenIds.contains(child.getIdentifier())) + { + update.getChildIds().remove(child.getIdentifier()); + } } } + // End - Special case -> Remove parents / children & Special case -> Sample Variables for (String key : header.keySet()) -- GitLab