From c50335dff01dffab42f4f25639eb14c11d80a70c Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Thu, 24 Jan 2019 20:52:56 +0000
Subject: [PATCH] Remove duplicated demo repositories.

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 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 5958c63..57c79a4 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
@@ -38,7 +38,7 @@
         if (!ConfigurationHandler.getConfiguration().isShowDemoRepos()) {
             // Remove any demo repository if exist due to former settings:
             Iterator<BorgRepoConfig> it = repositoryList.iterator();
-            while(it.hasNext()) {
+            while (it.hasNext()) {
                 BorgRepoConfig repoConfig = it.next();
                 if (!StringUtils.startsWith(repoConfig.getRepo(), DEMO_IDENTIFIER)) {
                     continue;
@@ -52,6 +52,24 @@
             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();
+        try {
+            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());
+                }
+            }
+        } catch (Exception ex) {
+            // ConcurrentException, ignore it, it's only for demo purposes.
+        }
     }
 
     public static boolean isDemo(String name) {

--
Gitblit v1.10.0