/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.bin; import java.io.*; import java.util.*; /** * Stores and retrieves Jalview Application Properties *

Current properties include: *
logs.Axis.Level - one of the stringified Levels for log4j controlling the logging level for axis (used for web services) *
logs.Castor.Level - one of the stringified Levels for log4j controlling the logging level for castor (used for serialization) *
jalview.browser - used in the jalview.utils.browserLauncher class if it doesn't know what else to do. *
SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_Y=285,SCREEN_X=371,SHOW_FULLSCREEN * FONT_NAME,FONT_SIZE,FONT_STYLE,GAP_SYMBOL,LAST_DIRECTORY,USER_DEFINED_COLOUR * SHOW_FULL_ID,SHOW_IDENTITY,SHOW_QUALITY,SHOW_ANNOTATIONS,SHOW_CONSERVATION, * DEFAULT_COLOUR,DEFAULT_FILE_FORMAT,STARTUP_FILE,SHOW_STARTUP_FILE * @author $author$ * @version $Revision$ */ public class Cache { /** Current release tag */ public static String VERSION = "AW Test"; /** Date Jalview was last packaged, else compilation date of Cache.class */ public static String BUILD_DATE = ""; /** Jalview Properties */ public static Properties applicationProperties; /** Default file is ~/.jalview_properties */ static String propertiesFile; /** Called when Jalview is started */ public static void loadProperties(String propsFile) { propertiesFile = propsFile; if (propsFile == null) { propertiesFile = System.getProperty("user.home") + "/.jalview_properties"; } // get last build time. long date = 0; try { String localFile = Cache.class.getProtectionDomain().getCodeSource() .getLocation().toString(); localFile = localFile.concat("!/"); String tmpString = "jar:"; String localJarFileString = tmpString.concat(localFile); java.net.URL localJarFileURL = new java.net.URL(localJarFileString); java.net.JarURLConnection localJarFile = (java.net.JarURLConnection) localJarFileURL.openConnection(); date = localJarFile.getLastModified(); } catch (Exception ex) { ex.printStackTrace(); } if (date == 0) { // this is called for unpackaged class files, ie not in a Jar file // InstallAnywhere version will find build date this way // not entirely accurate as it only tells you when Cache.class was last compiled java.io.File f = new java.io.File(System.getProperty("user.dir") + "/jalview/bin/Cache.class"); date = f.lastModified(); } if (date != 0) { BUILD_DATE = new Date(date).toString(); } applicationProperties = new Properties(); try { FileInputStream in = new FileInputStream(propertiesFile); applicationProperties = new Properties(); applicationProperties.load(in); in.close(); } catch (Exception ex) { } } /** * Gets Jalview application property of given key. Returns null * if key not found * * @param key Name of property * * @return Property value */ public static String getProperty(String key) { return applicationProperties.getProperty(key); } /** * Stores property in the file "HOME_DIR/.jalview_properties" * * @param key Name of object * @param obj String value of property * * @return String value of property */ public static String setProperty(String key, String obj) { try { FileOutputStream out = new FileOutputStream(propertiesFile); applicationProperties.setProperty(key, obj); applicationProperties.store(out, "---JalviewX Properties File---"); out.close(); } catch (Exception ex) { } return obj; } }