X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fbin%2FCache.java;h=4ed6e1acf0c17e852ca09046174eaa6369ab33ac;hb=refs%2Fheads%2Fj2s%2Fdevelop;hp=a3950937e94cc35d907da9f791c9658192eb1586;hpb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;p=jalview.git diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index a395093..4ed6e1a 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -1,33 +1,53 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview 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 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview 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 Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.bin; +import jalview.gui.UserDefinedColours; +import jalview.io.PIRFile; +import jalview.jbgui.GDesktop; +import jalview.schemes.ColourSchemeProperty; +import jalview.schemes.UserColourScheme; +import jalview.util.Format; import jalview.ws.dbsources.das.api.DasSourceRegistryI; import jalview.ws.dbsources.das.datamodel.DasSourceRegistry; import java.awt.Color; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Collections; +import java.util.Date; +import java.util.Enumeration; +import java.util.Properties; +import java.util.TreeSet; -import org.apache.log4j.*; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; /** * Stores and retrieves Jalview Application Properties Lists and fields within @@ -61,6 +81,10 @@ import org.apache.log4j.*; *
  • SHOW_QUALITY show alignment quality annotation
  • *
  • SHOW_ANNOTATIONS show alignment annotation rows
  • *
  • SHOW_CONSERVATION show alignment conservation annotation
  • + *
  • SORT_ANNOTATIONS currently either SEQUENCE_AND_LABEL or + * LABEL_AND_SEQUENCE
  • + *
  • SHOW_AUTOCALC_ABOVE true to show autocalculated annotations above + * sequence annotations
  • *
  • CENTRE_COLUMN_LABELS centre the labels at each column in a displayed * annotation row
  • *
  • DEFAULT_COLOUR default colour scheme to apply for a new alignment
  • @@ -132,6 +156,7 @@ import org.apache.log4j.*; *
  • FOLLOW_SELECTIONS (true) Controls whether a new alignment view should * respond to selections made in other alignments containing the same sequences. *
  • + *
  • JWS2HOSTURLS comma-separated list of URLs to try for JABAWS services
  • *
  • SHOW_WSDISCOVERY_ERRORS (true) Controls if the web service URL discovery * warning dialog box is displayed.
  • *
  • ANNOTATIONCOLOUR_MIN (orange) Shade used for minimum value of annotation @@ -140,14 +165,22 @@ import org.apache.log4j.*; * when shading by annotation
  • *
  • www.jalview.org (http://www.jalview.org) a property enabling all HTTP * requests to be redirected to a mirror of http://www.jalview.org
  • - * *
  • FIGURE_AUTOIDWIDTH (false) Expand the left hand column of an exported * alignment figure to accommodate even the longest sequence ID or annotation * label.
  • *
  • FIGURE_FIXEDIDWIDTH Specifies the width to use for the left-hand column * when exporting an alignment as a figure (setting FIGURE_AUTOIDWIDTH to true * will override this).
  • - *
  • + *
  • STRUCT_FROM_PDB (false) derive secondary structure annotation from PDB + * record
  • + *
  • USE_RNAVIEW (false) use RNAViewer to derive secondary structure
  • + *
  • ADD_SS_ANN (false) add secondary structure annotation to alignment + * display
  • + *
  • ADD_TEMPFACT_ANN (false) add Temperature Factor annotation to alignment + * display
  • + *
  • STRUCTURE_DISPLAY choose from JMOL (default) or CHIMERA for 3D structure + * display
  • + *
  • CHIMERA_PATH specify full path to Chimera program (if non-standard)
  • * * * Deprecated settings: @@ -195,7 +228,13 @@ public class Cache public static Logger log; /** Jalview Properties */ - public static Properties applicationProperties = new Properties(); + public static Properties applicationProperties = new Properties() { + // override results in properties output in alphabetical order + @Override + public synchronized Enumeration keys() { + return Collections.enumeration(new TreeSet(super.keySet())); + } + }; /** Default file is ~/.jalview_properties */ static String propertiesFile; @@ -220,7 +259,7 @@ public class Cache // log output Logger laxis = Logger.getLogger("org.apache.axis"); Logger lcastor = Logger.getLogger("org.exolab.castor"); - jalview.bin.Cache.log = Logger.getLogger("jalview.bin.Jalview"); + Cache.log = Logger.getLogger("jalview.bin.Jalview"); laxis.setLevel(Level.toLevel(Cache.getDefault("logs.Axis.Level", Level.INFO.toString()))); @@ -232,13 +271,13 @@ public class Cache // lcastor = Logger.getLogger("org.exolab.castor.xml.Marshaller"); // lcastor.setLevel(Level.toLevel(Cache.getDefault("logs.Castor.Level", // Level.INFO.toString()))); - jalview.bin.Cache.log.setLevel(Level.toLevel(Cache.getDefault( + Cache.log.setLevel(Level.toLevel(Cache.getDefault( "logs.Jalview.level", Level.INFO.toString()))); // laxis.addAppender(ap); // lcastor.addAppender(ap); - // jalview.bin.Cache.log.addAppender(ap); + // Cache.log.addAppender(ap); // Tell the user that debug is enabled - jalview.bin.Cache.log.debug("Jalview Debugging Output Follows."); + Cache.log.debug("Jalview Debugging Output Follows."); } catch (Exception ex) { System.err.println("Problems initializing the log4j system\n"); @@ -282,8 +321,10 @@ public class Cache fis = new FileInputStream(propertiesFile); } applicationProperties.load(fis); - applicationProperties.remove("LATEST_VERSION"); - applicationProperties.remove("VERSION"); + + // remove any old build properties + + deleteBuildProperties(); fis.close(); } catch (Exception ex) { @@ -344,15 +385,21 @@ public class Cache String jnlpVersion = System.getProperty("jalview.version"); String codeVersion = getProperty("VERSION"); - + String codeInstallation = getProperty("INSTALLATION"); if (codeVersion == null) { // THIS SHOULD ONLY BE THE CASE WHEN TESTING!! codeVersion = "Test"; jnlpVersion = "Test"; + codeInstallation = ""; + } + else + { + codeInstallation = " (" + codeInstallation + ")"; } - System.out.println("Jalview Version: " + codeVersion); + System.out + .println("Jalview Version: " + codeVersion + codeInstallation); // jnlpVersion will be null if we're using InstallAnywhere // Dont do this check if running in headless mode @@ -429,12 +476,23 @@ public class Cache setProperty("VERSION", codeVersion); // LOAD USERDEFINED COLOURS - jalview.gui.UserDefinedColours + UserDefinedColours .initUserColourSchemes(getProperty("USER_DEFINED_COLOURS")); - jalview.io.PIRFile.useModellerOutput = Cache.getDefault("PIR_MODELLER", + PIRFile.useModellerOutput = Cache.getDefault("PIR_MODELLER", false); } + private static void deleteBuildProperties() + { + applicationProperties.remove("LATEST_VERSION"); + applicationProperties.remove("VERSION"); + applicationProperties.remove("AUTHORS"); + applicationProperties.remove("AUTHORFNAMES"); + applicationProperties.remove("YEAR"); + applicationProperties.remove("BUILD_DATE"); + applicationProperties.remove("INSTALLATION"); + } + /** * Gets Jalview application property of given key. Returns null if key not * found @@ -556,10 +614,10 @@ public class Cache { try { - if (jalview.jbgui.GDesktop.class.getClassLoader().loadClass( + if (GDesktop.class.getClassLoader().loadClass( "uk.ac.vamsas.client.VorbaId") != null) { - jalview.bin.Cache.log + Cache.log .debug("Found Vamsas Classes (uk.ac..vamsas.client.VorbaId can be loaded)"); vamsasJarsArePresent = 1; Logger lvclient = Logger.getLogger("uk.ac.vamsas"); @@ -573,7 +631,7 @@ public class Cache } catch (Exception e) { vamsasJarsArePresent = 0; - jalview.bin.Cache.log.debug("Vamsas Classes are not present"); + Cache.log.debug("Vamsas Classes are not present"); } } return (vamsasJarsArePresent > 0); @@ -598,7 +656,7 @@ public class Cache if (Cache.class.getClassLoader().loadClass( "groovy.lang.GroovyObject") != null) { - jalview.bin.Cache.log + Cache.log .debug("Found Groovy (groovy.lang.GroovyObject can be loaded)"); groovyJarsArePresent = 1; Logger lgclient = Logger.getLogger("groovy"); @@ -612,11 +670,11 @@ public class Cache } catch (Error e) { groovyJarsArePresent = 0; - jalview.bin.Cache.log.debug("Groovy Classes are not present", e); + Cache.log.debug("Groovy Classes are not present", e); } catch (Exception e) { groovyJarsArePresent = 0; - jalview.bin.Cache.log.debug("Groovy Classes are not present"); + Cache.log.debug("Groovy Classes are not present"); } } return (groovyJarsArePresent > 0); @@ -671,9 +729,9 @@ public class Cache new Object[] { "Jalview Desktop", - (vrs = jalview.bin.Cache.getProperty("VERSION") + (vrs = Cache.getProperty("VERSION") + "_" - + jalview.bin.Cache.getDefault("BUILD_DATE", + + Cache.getDefault("BUILD_DATE", "unknown")), "UA-9060947-1" }); jgoogleanalyticstracker.getMethod("trackAsynchronously", new Class[] @@ -696,15 +754,21 @@ public class Cache if (log != null) { if (re != null) + { log.debug("Caught runtime exception in googletracker init:", re); + } if (ex != null) + { log.warn( "Failed to initialise GoogleTracker for Jalview Desktop with version " + vrs, ex); + } if (err != null) + { log.error( "Whilst initing GoogleTracker for Jalview Desktop version " + vrs, err); + } } else { @@ -753,13 +817,12 @@ public class Cache { return defcolour; } - Color col = jalview.schemes.ColourSchemeProperty - .getAWTColorFromName(colprop); + Color col = ColourSchemeProperty.getAWTColorFromName(colprop); if (col == null) { try { - col = new jalview.schemes.UserColourScheme(colprop).findColour('A'); + col = new UserColourScheme(colprop).findColour('A'); } catch (Exception ex) { log.warn("Couldn't parse '" + colprop + "' as a colour for " @@ -778,7 +841,7 @@ public class Cache */ public static void setColourProperty(String property, Color colour) { - setProperty(property, jalview.util.Format.getHexString(colour)); + setProperty(property, Format.getHexString(colour)); } public static final DateFormat date_format = SimpleDateFormat @@ -858,4 +921,27 @@ public class Cache } return sourceRegistry; } + + /** + * Set the specified value, or remove it if null or empty. Does not save the + * properties file. + * + * @param propName + * @param value + */ + public static void setOrRemove(String propName, String value) + { + if (propName == null) + { + return; + } + if (value == null || value.trim().length() < 1) + { + Cache.applicationProperties.remove(propName); + } + else + { + Cache.applicationProperties.setProperty(propName, value); + } + } }