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 92a8ce3ea9917401d8f351e133ad78ff3a8c1508..b878c147aea36abd158744e81462bf979511e99e 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 dd9781f2ad2c1db6f2e3f6cfed4c512741918ee8..904b9134b66d2522d7920e6ef4a061b13b8461c0 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