Formatting changes
[jalview.git] / src / jalview / bin / Cache.java
index e1978fe..57ae4ce 100755 (executable)
@@ -1,50 +1,71 @@
 /*\r
-* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
-*\r
-* This program is free software; you can redistribute it and/or\r
-* modify it under the terms of the GNU General Public License\r
-* as published by the Free Software Foundation; either version 2\r
-* of the License, or (at your option) any later version.\r
-*\r
-* This program is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with this program; if not, write to the Free Software\r
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-*/\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ */\r
 package jalview.bin;\r
 \r
 import java.io.*;\r
 \r
 import java.util.*;\r
-import java.util.jar.*;\r
 \r
 \r
-public class Cache {\r
-    public static String VERSION = "Release 2.0";\r
+/**\r
+ * Stores and retrieves Jalview Application Properties\r
+ * <br><br>Current properties include:\r
+ * <br>logs.Axis.Level - one of the stringified Levels for log4j controlling the logging level for axis (used for web services)\r
+ * <br>logs.Castor.Level - one of the stringified Levels for log4j controlling the logging level for castor (used for serialization)\r
+ * <br>jalview.browser - used in the jalview.utils.browserLauncher class if it doesn't know what else to do.\r
+ * <br>SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_Y=285,SCREEN_X=371,SHOW_FULLSCREEN\r
+ * FONT_NAME,FONT_SIZE,FONT_STYLE,GAP_SYMBOL,LAST_DIRECTORY,USER_DEFINED_COLOUR\r
+ * SHOW_FULL_ID,SHOW_IDENTITY,SHOW_QUALITY,SHOW_ANNOTATIONS,SHOW_CONSERVATION,\r
+ * DEFAULT_COLOUR,DEFAULT_FILE_FORMAT,STARTUP_FILE,SHOW_STARTUP_FILE\r
+\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class Cache\r
+{\r
+    /** Current release tag */\r
+    public static String VERSION = "AW Test";\r
+\r
+    /** Date Jalview was last packaged, else compilation date of Cache.class */\r
     public static String BUILD_DATE = "";\r
+\r
+    /** Jalview Properties */\r
     public static Properties applicationProperties;\r
 \r
-    // Current properties include:\r
-    //\r
-    // LAST_DIRECTORY   , use this to cache record of where the user looked to find a file\r
-    // UNIPROT_CACHE\r
-    // USER_DEFINED_COLOUR - file describing last user set colours\r
-    // FONT_NAME\r
-    // FONT_STYLE\r
-    // FONT_SIZE\r
-    // logs.Axis.Level - one of the stringified Levels for log4j controlling the logging level for axis (used for web services)\r
-    // logs.Castor.Level - one of the stringified Levels for log4j controlling the logging level for castor (used for serialization)\r
-    // jalview.browser - used in the jalview.utils.browserLauncher class if it doesn't know what else to do.\r
-    public static void loadProperties() {\r
+    /** Default file is  ~/.jalview_properties */\r
+    static String propertiesFile;\r
+\r
+    /** Called when Jalview is started */\r
+    public static void loadProperties(String propsFile)\r
+    {\r
+      propertiesFile = propsFile;\r
+      if (propsFile == null)\r
+      {\r
+        propertiesFile = System.getProperty("user.home") + "/.jalview_properties";\r
+      }\r
+\r
+\r
         // get last build time.\r
         long date = 0;\r
 \r
-        try {\r
+        try\r
+        {\r
             String localFile = Cache.class.getProtectionDomain().getCodeSource()\r
                                           .getLocation().toString();\r
             localFile = localFile.concat("!/");\r
@@ -54,11 +75,14 @@ public class Cache {
             java.net.URL localJarFileURL = new java.net.URL(localJarFileString);\r
             java.net.JarURLConnection localJarFile = (java.net.JarURLConnection) localJarFileURL.openConnection();\r
             date = localJarFile.getLastModified();\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
             ex.printStackTrace();\r
         }\r
 \r
-        if (date == 0) {\r
+        if (date == 0)\r
+        {\r
             // this is called for unpackaged class files, ie not in a Jar file\r
             // InstallAnywhere version will find build date this way\r
             // not entirely accurate as it only tells you when Cache.class was last compiled\r
@@ -67,36 +91,59 @@ public class Cache {
             date = f.lastModified();\r
         }\r
 \r
-        if (date != 0) {\r
+        if (date != 0)\r
+        {\r
             BUILD_DATE = new Date(date).toString();\r
         }\r
 \r
         applicationProperties = new Properties();\r
 \r
-        try {\r
-            FileInputStream in = new FileInputStream(System.getProperty(\r
-                        "user.home") + "/.jalview_properties");\r
+        try\r
+        {\r
+            FileInputStream in = new FileInputStream(propertiesFile);\r
             applicationProperties = new Properties();\r
             applicationProperties.load(in);\r
             in.close();\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
         }\r
     }\r
 \r
-    public static String getProperty(String key) {\r
+    /**\r
+     * Gets Jalview application property of given key. Returns null\r
+     * if key not found\r
+     *\r
+     * @param key Name of property\r
+     *\r
+     * @return Property value\r
+     */\r
+    public static String getProperty(String key)\r
+    {\r
         return applicationProperties.getProperty(key);\r
     }\r
 \r
-    public static String setProperty(String key, String obj) {\r
-        try {\r
-            FileOutputStream out = new FileOutputStream(System.getProperty(\r
-                        "user.home") + "/.jalview_properties");\r
+    /**\r
+     * Stores property in the file "HOME_DIR/.jalview_properties"\r
+     *\r
+     * @param key Name of object\r
+     * @param obj String value of property\r
+     *\r
+     * @return String value of property\r
+     */\r
+    public static String setProperty(String key, String obj)\r
+    {\r
+        try\r
+        {\r
+            FileOutputStream out = new FileOutputStream(propertiesFile);\r
 \r
             applicationProperties.setProperty(key, obj);\r
 \r
             applicationProperties.store(out, "---JalviewX Properties File---");\r
             out.close();\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
         }\r
 \r
         return obj;\r