From c2489ecbd13878e205f8528eeb150d5cd0200d47 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 08 Dec 2018 17:41:12 +0000
Subject: [PATCH] Caches...

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java |   46 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
index ebb0a64..8664817 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -5,13 +5,17 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 public class ButlerCache {
     private static Logger log = LoggerFactory.getLogger(ButlerCache.class);
     public static final String CACHE_DIR_NAME = ".borgbutler";
     private static ButlerCache instance = new ButlerCache();
 
-    private RepoInfoCache reposCache;
+    private RepoInfoCache repoInfoCache;
+    private RepoListCache repoListCache;
+    private List<AbstractCache> caches;
 
     @JsonIgnore
     private File cacheDir;
@@ -20,12 +24,40 @@
         return instance;
     }
 
-    public static RepoInfoCache getReposCache() {
-        return instance.reposCache;
+    public static RepoInfoCache getRepoInfoCache() {
+        return instance.repoInfoCache;
+    }
+
+    public static RepoListCache getRepoListCache() {
+        return instance.repoListCache;
+    }
+
+    public void read() {
+        for (AbstractCache cache : caches) {
+            cache.read();
+        }
     }
 
     public void save() {
-        reposCache.save();
+        for (AbstractCache cache : caches) {
+            cache.save();
+        }
+    }
+
+    /**
+     * Removes all cache files and clears all caches.
+     */
+    public void removeAllCacheFiles() {
+        File[] files = cacheDir.listFiles();
+        for (File file : files) {
+            if (AbstractCache.isCacheFile(file)) {
+                log.info("Deleting cache file: " + file.getAbsolutePath());
+                file.delete();
+            }
+        }
+        for (AbstractCache cache : caches) {
+            cache.clear();
+        }
     }
 
     private ButlerCache() {
@@ -35,6 +67,10 @@
             log.info("Creating cache dir: " + cacheDir.getAbsolutePath());
             cacheDir.mkdir();
         }
-        reposCache = new RepoInfoCache(cacheDir);
+        repoInfoCache = new RepoInfoCache(cacheDir);
+        repoListCache = new RepoListCache(cacheDir);
+        caches = new ArrayList<>();
+        caches.add(repoInfoCache);
+        caches.add(repoListCache);
     }
 }

--
Gitblit v1.10.0