/*\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
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
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