From 1c087fae322a1b07bb7bd554ee10ff473c47c727 Mon Sep 17 00:00:00 2001
From: Fin Reinhard <fin.reinhard@icloud.com>
Date: Tue, 22 Jan 2019 20:51:03 +0000
Subject: [PATCH] Merge branch 'master' into feature/15-archive-view-url

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
index cc0bd61..7ba4fa5 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
@@ -18,9 +18,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
+import java.util.*;
 
 public class DemoRepos {
     private enum Type {FAST, SLOW, VERY_SLOW}
@@ -36,13 +34,37 @@
      *
      * @param repositoryList
      */
-    public static void addDemoRepos(List<BorgRepoConfig> repositoryList) {
+    public static void handleDemoRepos(List<BorgRepoConfig> repositoryList) {
         if (!ConfigurationHandler.getConfiguration().isShowDemoRepos()) {
+            // Remove any demo repository if exist due to former settings:
+            Iterator<BorgRepoConfig> it = repositoryList.iterator();
+            while(it.hasNext()) {
+                BorgRepoConfig repoConfig = it.next();
+                if (!StringUtils.startsWith(repoConfig.getRepo(), DEMO_IDENTIFIER)) {
+                    continue;
+                }
+                it.remove();
+            }
             return;
         }
         init();
         for (BorgRepoConfig repo : demoRepos) {
-            repositoryList.add(repo);
+            if (!repositoryList.contains(repo))
+                repositoryList.add(repo);
+        }
+        // Remove duplicate entries (produced by former versions of BorgButler:
+        Set<String> set = new HashSet<>();
+        Iterator<BorgRepoConfig> it = repositoryList.iterator();
+        while(it.hasNext()) {
+            BorgRepoConfig repoConfig = it.next();
+            if (!StringUtils.startsWith(repoConfig.getRepo(), DEMO_IDENTIFIER)) {
+                continue;
+            }
+            if (set.contains(repoConfig.getRepo())) {
+                it.remove();
+            } else {
+                set.add(repoConfig.getRepo());
+            }
         }
     }
 

--
Gitblit v1.10.0