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/AbstractCache.java |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java
index 63e572f..840be70 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java
@@ -5,6 +5,7 @@
 import de.micromata.borgbutler.json.JsonUtils;
 import lombok.Getter;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -16,6 +17,8 @@
 
 public abstract class AbstractCache<T> {
     private static Logger log = LoggerFactory.getLogger(AbstractCache.class);
+    private static final String CACHE_FILE_PREFIX = "cache-";
+    private static final String CACHE_FILE_EXTENSION = "json";
 
     @JsonIgnore
     protected File cacheFile;
@@ -41,6 +44,13 @@
 
     public abstract void updateFrom(T dest, T source);
 
+    /**
+     * Removes all entries (doesn't effect the cache files!).
+     */
+    public void clear() {
+        elements.clear();
+    }
+
     public void upsert(T element) {
         T existingElement = get(getIdentifier(element));
         if (existingElement == null) {
@@ -52,6 +62,11 @@
 
     public void read() {
         try {
+            if (!cacheFile.exists()) {
+                // Cache file doesn't exist. Nothing to read.
+                return;
+            }
+            log.info("Parsing cache file '" + cacheFile.getAbsolutePath() + "'.");
             String json = FileUtils.readFileToString(cacheFile, Charset.forName("UTF-8"));
             AbstractCache readCache = JsonUtils.fromJson(this.getClass(), json);
             if (readCache != null) {
@@ -83,6 +98,12 @@
     }
 
     AbstractCache(File cacheDir, String cacheFilename) {
-        cacheFile = new File(cacheDir, cacheFilename);
+        cacheFile = new File(cacheDir, CACHE_FILE_PREFIX + cacheFilename + "." + CACHE_FILE_EXTENSION);
+    }
+
+    public static boolean isCacheFile(File file) {
+        String filename = file.getName();
+        String extension = FilenameUtils.getExtension(filename);
+        return filename.startsWith(CACHE_FILE_PREFIX) && extension.equals(CACHE_FILE_EXTENSION);
     }
 }

--
Gitblit v1.10.0