From dd81f448de8c38399df794ea6a47b99e9c3a20ac Mon Sep 17 00:00:00 2001 From: juanf <juanf@ethz.ch> Date: Thu, 16 Feb 2023 13:20:38 +0100 Subject: [PATCH] SSDM-13343 : Bugfix, look at all types versioning under all circumstances --- .../server/xls/importer/XLSImport.java | 12 ++++------ .../importer/handler/VersionInfoHandler.java | 24 +++++++++++++++---- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/XLSImport.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/XLSImport.java index 92a8ce3ea99..b878c147aea 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/XLSImport.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/XLSImport.java @@ -44,8 +44,6 @@ public class XLSImport private final ImportOptions options; - private final String xlsName; - private final Map<String, Integer> beforeVersions; private final Map<String, Integer> afterVersions; @@ -78,15 +76,13 @@ public class XLSImport private final DatabaseConsistencyChecker dbChecker; - public XLSImport(String sessionToken, IApplicationServerApi api, Map<String, String> scripts, ImportModes mode, ImportOptions options, - String xlsName) + public XLSImport(String sessionToken, IApplicationServerApi api, Map<String, String> scripts, ImportModes mode, ImportOptions options, String ignoredXLSName) { this.sessionToken = sessionToken; this.api = api; this.options = options; - this.xlsName = xlsName; - this.beforeVersions = Collections.unmodifiableMap(VersionInfoHandler.loadVersions(options, xlsName)); - this.afterVersions = VersionInfoHandler.loadVersions(options, xlsName); + this.beforeVersions = Collections.unmodifiableMap(VersionInfoHandler.loadAllVersions(options)); + this.afterVersions = VersionInfoHandler.loadAllVersions(options); this.dbChecker = new DatabaseConsistencyChecker(this.sessionToken, this.api, this.afterVersions); this.delayedExecutor = new DelayedExecutionDecorator(this.sessionToken, this.api); @@ -215,7 +211,7 @@ public class XLSImport this.delayedExecutor.hasFinished(); - VersionInfoHandler.writeVersions(options, xlsName, afterVersions); + VersionInfoHandler.writeAllVersions(options, afterVersions); return new ArrayList<>(this.delayedExecutor.getIds()); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/handler/VersionInfoHandler.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/handler/VersionInfoHandler.java index dd9781f2ad2..904b9134b66 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/handler/VersionInfoHandler.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/handler/VersionInfoHandler.java @@ -25,17 +25,31 @@ public class VersionInfoHandler private static final String DEVELOPMENT_DEFAULT_PATH = "../server-application-server/targets/xls-import-version-info-dev.json"; - public static Map<String, Integer> loadVersions(ImportOptions options, String xlsName) + public static Map<String, Integer> loadAllVersions(ImportOptions options) { if (options.getIgnoreVersioning()) { return new HashMap<>(); } - return loadVersionFile().getOrDefault("VERSION-" + xlsName, new HashMap<>()); + Map<String, Integer> allVersionsMerged = new HashMap<>(); + Map<String, Map<String, Integer>> allVersions = loadVersionFile(); + // Versions from all XLS files are NOW merged to follow the same modification rules as on the UI + for (String versionsFromIgnoredXLSName:allVersions.keySet()) { + Map<String, Integer> versionsForIgnoredXLSName = allVersions.get(versionsFromIgnoredXLSName); + for (String type:versionsForIgnoredXLSName.keySet()) { + Integer version = versionsForIgnoredXLSName.get(type); + // Keep the highest version + if (allVersionsMerged.containsKey(type) == false || + allVersionsMerged.get(type) > version) { + allVersionsMerged.put(type, version); + } + } + } + + return allVersionsMerged; } - public static void writeVersions(ImportOptions options, String xlsName, - Map<String, Integer> versions) + public static void writeAllVersions(ImportOptions options, Map<String, Integer> versions) { if (options.getIgnoreVersioning()) { @@ -46,7 +60,7 @@ public class VersionInfoHandler String newPath = path + ".new"; Map<String, Map<String, Integer>> allVersions = loadVersionFile(); - allVersions.put("VERSION-" + xlsName, versions); + allVersions.put("VERSION-GENERAL", versions); JSONHandler.writeVersionDataFile(allVersions, newPath); try -- GitLab