reorganized file layout (part 1: moves and renames)
[org.ibex.core.git] / src / org / ibex / core / LocalStorage.java
diff --git a/src/org/ibex/core/LocalStorage.java b/src/org/ibex/core/LocalStorage.java
new file mode 100644 (file)
index 0000000..7c1d747
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
+package org.ibex;
+
+import java.io.*;
+import org.ibex.util.*;
+import org.bouncycastle.util.encoders.Base64;
+
+/** Manages access to ~/.ibex */
+public class LocalStorage {
+
+    static String ibexDirName = System.getProperty("user.home") + java.io.File.separatorChar + ".ibex";
+
+    static java.io.File ibexDir = null;
+    static java.io.File cacheDir = null;
+
+    static {
+        try {
+            ibexDir = new java.io.File(ibexDirName);
+            if (!ibexDir.mkdirs()) ibexDir = null;
+            try {
+                cacheDir = new java.io.File(ibexDirName + java.io.File.separatorChar + "cache");
+                if (!cacheDir.mkdirs()) cacheDir = null;
+            } catch (Exception e) {
+                Log.warn(LocalStorage.class, "unable to create cache directory " +
+                         ibexDirName + java.io.File.separatorChar + "cache");
+            }
+        } catch (Exception e) {
+            Log.warn(LocalStorage.class, "unable to create ibex directory " + ibexDirName);
+        }
+    }
+
+    // FEATURE: we ought to be able to do stuff like sha1-checking and date checking on cached resources    
+    public static class Cache {
+
+        private static void delTree(java.io.File f) throws IOException {
+            if (f.isDirectory()) {
+                String[] s = f.list();
+                for(int i=0; i<s.length; i++)
+                    delTree(new java.io.File(f.getPath() + java.io.File.separatorChar + s[i]));
+            }
+            f.delete();
+        }
+
+        public static void flush() throws IOException {
+            delTree(cacheDir);
+            cacheDir.mkdirs();
+        }
+
+        public static java.io.File getCacheFileForKey(String key) {
+            // FEATURE: be smarter here
+            return new java.io.File(cacheDir.getPath() + File.separatorChar + new String(Base64.encode(key.getBytes())));
+        }
+
+    }
+}