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 79b7bfac0708676c37602cf2e436e6036b793742..98b3e9897529c3b0742ccd1ba7a5bcc2007b7671 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())