From 9a0bd067cf70adb5cc79fe51e7c901bd2623a151 Mon Sep 17 00:00:00 2001
From: juanf <juanf@ethz.ch>
Date: Fri, 1 Sep 2023 11:26:48 +0200
Subject: [PATCH] SSDM-13961: XLS Importer, making version optional

---
 .../helper/DatasetTypeImportHelper.java        | 14 ++++++++++++--
 .../helper/ExperimentTypeImportHelper.java     | 14 ++++++++++++--
 .../helper/PropertyAssignmentImportHelper.java | 10 +++++++---
 .../helper/PropertyTypeImportHelper.java       | 18 ++++++++++++++----
 .../helper/SampleTypeImportHelper.java         | 14 ++++++++++++--
 .../helper/VocabularyImportHelper.java         | 14 ++++++++++++--
 .../helper/VocabularyTermImportHelper.java     | 16 +++++++++++++---
 7 files changed, 82 insertions(+), 18 deletions(-)

diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java
index 914541fef35..d78bbecf131 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java
@@ -35,7 +35,7 @@ import java.util.Map;
 public class DatasetTypeImportHelper extends BasicImportHelper
 {
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Description("Description", true),
         ValidationScript("Validation script", true),
@@ -84,7 +84,11 @@ public class DatasetTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.DATASET_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.DATASET_TYPE.getType(), code));
+        }
     }
 
     @Override protected void updateVersion(Map<String, Integer> header, List<String> values)
@@ -92,6 +96,12 @@ public class DatasetTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.DATASET_TYPE.getType(), code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.DATASET_TYPE.getType(), code);
     }
 
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java
index fd353909a61..df1eb2cfc55 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java
@@ -35,7 +35,7 @@ import java.util.Map;
 public class ExperimentTypeImportHelper extends BasicImportHelper
 {
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Description("Description", true),
         ValidationScript("Validation script", true),
@@ -84,7 +84,11 @@ public class ExperimentTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.EXPERIMENT_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.EXPERIMENT_TYPE.getType(), code));
+        }
     }
 
     @Override protected void updateVersion(Map<String, Integer> header, List<String> values)
@@ -92,6 +96,12 @@ public class ExperimentTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.EXPERIMENT_TYPE.getType(), code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.EXPERIMENT_TYPE.getType(), code);
     }
 
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java
index bf22e1a7aa5..90edfeb46e3 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java
@@ -55,7 +55,7 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper
 {
 
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Mandatory("Mandatory", true),
         DefaultValue("Default Value", false),
@@ -119,10 +119,14 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper
 
     @Override protected boolean isNewVersion(Map<String, Integer> header, List<String> values)
     {
-        String newVersion = getValueByColumnName(header, values, PropertyAssignmentImportHelper.Attribute.Version);
+        String version = getValueByColumnName(header, values, PropertyAssignmentImportHelper.Attribute.Version);
         String code = getValueByColumnName(header, values, PropertyAssignmentImportHelper.Attribute.Code);
 
-        return !existingCodes.contains(code) || VersionUtils.isNewVersion(newVersion, VersionUtils.getStoredVersion(beforeVersions, ImportTypes.PROPERTY_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return !existingCodes.contains(code) || VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(beforeVersions, ImportTypes.PROPERTY_TYPE.getType(), code));
+        }
     }
 
     @Override protected boolean isObjectExist(Map<String, Integer> header, List<String> values)
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java
index dfda7051787..f285c33cfe2 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java
@@ -52,7 +52,7 @@ public class PropertyTypeImportHelper extends BasicImportHelper
 
     private enum Attribute implements IAttribute
     {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Mandatory("Mandatory", false),
         DefaultValue("Default Value",
@@ -142,11 +142,15 @@ public class PropertyTypeImportHelper extends BasicImportHelper
     @Override
     protected boolean isNewVersion(Map<String, Integer> header, List<String> values)
     {
-        String newVersion = getValueByColumnName(header, values, Attribute.Version);
+        String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(newVersion,
-                VersionUtils.getStoredVersion(versions, ImportTypes.PROPERTY_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version,
+                    VersionUtils.getStoredVersion(versions, ImportTypes.PROPERTY_TYPE.getType(), code));
+        }
     }
 
     @Override
@@ -155,6 +159,12 @@ public class PropertyTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.PROPERTY_TYPE.getType(), code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.PROPERTY_TYPE.getType(), code);
     }
 
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java
index 7b85b96f7df..cef78f1424f 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java
@@ -35,7 +35,7 @@ import java.util.Map;
 public class SampleTypeImportHelper extends BasicImportHelper
 {
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Description("Description", true),
         AutoGenerateCodes("Auto generate codes", true),
@@ -86,7 +86,11 @@ public class SampleTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.SAMPLE_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.SAMPLE_TYPE.getType(), code));
+        }
     }
 
     @Override protected void updateVersion(Map<String, Integer> header, List<String> values)
@@ -94,6 +98,12 @@ public class SampleTypeImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.SAMPLE_TYPE.getType(), code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.SAMPLE_TYPE.getType(), code);
     }
 
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyImportHelper.java
index 306fcdcfcbd..5ac9dd9ba44 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyImportHelper.java
@@ -34,7 +34,7 @@ import java.util.Map;
 public class VocabularyImportHelper extends BasicImportHelper
 {
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Description("Description", true);
 
@@ -79,7 +79,11 @@ public class VocabularyImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TYPE.getType(), code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TYPE.getType(), code));
+        }
     }
 
     @Override protected void updateVersion(Map<String, Integer> header, List<String> values)
@@ -87,6 +91,12 @@ public class VocabularyImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TYPE.getType(), code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.VOCABULARY_TYPE.getType(), code);
     }
 
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyTermImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyTermImportHelper.java
index 3c1b1bc05cf..c84fd86a683 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyTermImportHelper.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/VocabularyTermImportHelper.java
@@ -36,7 +36,7 @@ public class VocabularyTermImportHelper extends BasicImportHelper
     private static final String VOCABULARY_CODE_FIELD = "Code";
 
     private enum Attribute implements IAttribute {
-        Version("Version", true),
+        Version("Version", false),
         Code("Code", true),
         Label("Label", true),
         Description("Description", true);
@@ -91,8 +91,12 @@ public class VocabularyTermImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
-        return VersionUtils.isNewVersion(version,
-                VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TERM.getType() + "-" + vocabularyCode, code));
+        if (version == null) {
+            return true;
+        } else {
+            return VersionUtils.isNewVersion(version,
+                    VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TERM.getType() + "-" + vocabularyCode, code));
+        }
     }
 
     @Override protected void updateVersion(Map<String, Integer> header, List<String> values)
@@ -100,6 +104,12 @@ public class VocabularyTermImportHelper extends BasicImportHelper
         String version = getValueByColumnName(header, values, Attribute.Version);
         String code = getValueByColumnName(header, values, Attribute.Code);
 
+        if (version == null) {
+            Integer storedVersion = VersionUtils.getStoredVersion(versions, ImportTypes.VOCABULARY_TERM.getType() + "-" + vocabularyCode, code);
+            storedVersion++;
+            version = storedVersion.toString();
+        }
+
         VersionUtils.updateVersion(version, versions, ImportTypes.VOCABULARY_TERM.getType() + "-" + vocabularyCode, code);
     }
 
-- 
GitLab