implement merge for ImportResult
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 19 Feb 2019 16:56:55 +0000 (17:56 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 15 Apr 2019 13:52:58 +0000 (15:52 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportResult.java

index 261d73008c43c4e4f9a065eb91dcf672dcdebd3d..b8acb3c844efec3acebda05771090154dce1c123 100644 (file)
@@ -80,7 +80,21 @@ public class ImportResult extends IoResultBase implements Serializable {
      * @param successTaraxacum
      */
     public void merge(ImportResult otherResult) {
-        // TODO implement merge
+        mergeMap(this.deletedRecords, otherResult.deletedRecords);
+        mergeMap(this.updatedRecords, otherResult.updatedRecords);
+        mergeMap(this.newRecords, otherResult.newRecords);
+        this.reports.addAll(otherResult.reports);
+    }
+
+    /**
+     * @param thisMap
+     * @param otherMap
+     */
+    private void mergeMap(Map<String, Integer> thisMap, Map<String, Integer> otherMap) {
+        for (String key: otherMap.keySet()){
+            int existing = thisMap.get(key)== null ? 0 : thisMap.get(key);
+            thisMap.put(key, existing + thisMap.get(key));
+        }
     }
 
     public List<byte[]> getReports() {