datasource/Cached_TextDB_Loader: caching TextDB loader
authorEnrico Weigelt, metux IT service <[email protected]>
Fri, 23 Jul 2010 12:59:41 +0000 (23 14:59 +0200)
committerEnrico Weigelt, metux IT service <[email protected]>
Sat, 24 Jul 2010 18:44:14 +0000 (24 20:44 +0200)
build.xml
datasource/Cached_TextDB_Loader.java [new file with mode: 0644]
datasource/ITextDB_Loader.java

index 324b84a..412b98f 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -81,6 +81,7 @@
            <include name="TextTable.java"/>
            <include name="TextTable_List.java" />
            <include name="Cached_TextTable_Loader.java"/>
+           <include name="Cached_TextDB_Loader.java"/>
        </javac>
     </target>
 
diff --git a/datasource/Cached_TextDB_Loader.java b/datasource/Cached_TextDB_Loader.java
new file mode 100644 (file)
index 0000000..27184b4
--- /dev/null
@@ -0,0 +1,59 @@
+package org.de.metux.datasource;
+
+import java.io.File;
+import java.util.Hashtable;
+import java.util.Properties;
+
+import org.de.metux.util.TextDB;
+
+public class Cached_TextDB_Loader implements ITextDB_Loader
+{
+    public boolean enabled = true;
+
+    Hashtable<String,Properties> cache = null;
+
+    public void clearCache()
+    {
+       cache = null;
+    }
+
+    public void setCaching(boolean e)
+    {
+       enabled = e;
+    }
+
+    private Properties __load(String fn)
+    {
+       Properties pr = new Properties();
+       if (TextDB.LoadIntoHashtable(fn,pr))
+           return pr;
+       else
+           return null;
+    }
+
+    public Properties load(String filename)
+    {
+       if (filename == null)
+           return null;
+
+       if (!enabled)
+           return __load(filename);
+
+       Properties pr;
+
+       if (cache == null)
+           cache = new Hashtable<String,Properties>();
+       else if ((pr = cache.get(filename)) != null)
+           return pr;
+
+       if ((pr = __load(filename)) != null)
+           cache.put(filename,pr);
+
+       return pr;
+    }
+
+    public Properties load(File filename)
+    {
+       return load(filename.toString());
+    }
+}
index b0eecfe..ec7e335 100644 (file)
@@ -1,5 +1,6 @@
 package org.de.metux.datasource;
 
+import java.io.File;
 import java.util.Properties;
 
 public interface ITextDB_Loader
@@ -7,4 +8,5 @@ public interface ITextDB_Loader
     public void setCaching(boolean enable);
     public void clearCache();
     public Properties load(String filename);
+    public Properties load(File filename);
 }