X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCache.java;h=f4b4aac17624c6aba3228ecb88e31308ad444ace;hb=88153d5bb04acd2b8e7fbc3e6789622b77b6cf58;hp=da3cb92bc07a4c333c8ec36e5a981dd9eff10a39;hpb=d7fd122bbdef3ab11f43ed6058fe37872d1d368e;p=jalview.git
diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java
index da3cb92..f4b4aac 100755
--- a/src/jalview/bin/Cache.java
+++ b/src/jalview/bin/Cache.java
@@ -28,8 +28,6 @@ import jalview.schemes.UserColourScheme;
import jalview.structure.StructureImportSettings;
import jalview.urls.IdOrgSettings;
import jalview.util.ColorUtils;
-import jalview.ws.dbsources.das.api.DasSourceRegistryI;
-import jalview.ws.dbsources.das.datamodel.DasSourceRegistry;
import jalview.ws.sifts.SiftsSettings;
import java.awt.Color;
@@ -77,7 +75,8 @@ import org.apache.log4j.SimpleLayout;
*
SHOW_FULLSCREEN boolean
* FONT_NAME java font name for alignment text display
* FONT_SIZE size of displayed alignment text
- * FONT_STYLE style of font displayed (sequence labels are always italic)
+ * FONT_STYLE style of font displayed (sequence labels are always
+ * italic)
* GAP_SYMBOL character to treat as gap symbol (usually -,.,' ')
* LAST_DIRECTORY last directory for browsing alignment
* USER_DEFINED_COLOURS list of user defined colour scheme files
@@ -115,7 +114,6 @@ import org.apache.log4j.SimpleLayout;
* service
* USAGESTATS (false - user prompted) Enable google analytics tracker for
* collecting usage statistics
- * DAS_LOCAL_SOURCE list of local das sources
* SHOW_OVERVIEW boolean for overview window display
* ANTI_ALIAS boolean for smooth fonts
* RIGHT_ALIGN_IDS boolean
@@ -135,9 +133,7 @@ import org.apache.log4j.SimpleLayout;
* sequence id (must be in SEQUENCE_LINKS or STORED_LINKS)
* GROUP_LINKS list of name|URL[|<separator>] tuples - see
* jalview.utils.GroupURLLink for more info
- * DAS_REGISTRY_URL the registry to query
* DEFAULT_BROWSER for unix
- * DAS_ACTIVE_SOURCE list of active sources
* SHOW_MEMUSAGE boolean show memory usage and warning indicator on desktop
* (false)
* VERSION_CHECK (true) check for the latest release version from
@@ -227,18 +223,11 @@ public class Cache
*/
public static final String JALVIEWLOGLEVEL = "logs.Jalview.level";
- public static final String DAS_LOCAL_SOURCE = "DAS_LOCAL_SOURCE";
-
- public static final String DAS_REGISTRY_URL = "DAS_REGISTRY_URL";
-
- public static final String DAS_ACTIVE_SOURCE = "DAS_ACTIVE_SOURCE";
-
/**
* Sifts settings
*/
public static final String DEFAULT_SIFTS_DOWNLOAD_DIR = System
- .getProperty("user.home")
- + File.separatorChar
+ .getProperty("user.home") + File.separatorChar
+ ".sifts_downloads" + File.separatorChar;
private final static String DEFAULT_CACHE_THRESHOLD_IN_DAYS = "2";
@@ -281,7 +270,7 @@ public class Cache
@Override
public synchronized Enumeration keys()
{
- return Collections.enumeration(new TreeSet(super.keySet()));
+ return Collections.enumeration(new TreeSet<>(super.keySet()));
}
};
@@ -310,8 +299,8 @@ public class Cache
Logger lcastor = Logger.getLogger("org.exolab.castor");
jalview.bin.Cache.log = Logger.getLogger("jalview.bin.Jalview");
- laxis.setLevel(Level.toLevel(Cache.getDefault("logs.Axis.Level",
- Level.INFO.toString())));
+ laxis.setLevel(Level.toLevel(
+ Cache.getDefault("logs.Axis.Level", Level.INFO.toString())));
lcastor.setLevel(Level.toLevel(Cache.getDefault("logs.Castor.Level",
Level.INFO.toString())));
lcastor = Logger.getLogger("org.exolab.castor.xml");
@@ -320,8 +309,8 @@ 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(
- "logs.Jalview.level", Level.INFO.toString())));
+ jalview.bin.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);
@@ -334,7 +323,10 @@ public class Cache
}
}
- /** Called when Jalview is started */
+ /**
+ * Loads properties from the given properties file. Any existing properties
+ * are first cleared.
+ */
public static void loadProperties(String propsFile)
{
propertiesFile = propsFile;
@@ -355,10 +347,10 @@ public class Cache
try
{
fis = new java.net.URL(propertiesFile).openStream();
- System.out.println("Loading jalview properties from : "
- + propertiesFile);
- System.out
- .println("Disabling Jalview writing to user's local properties file.");
+ System.out.println(
+ "Loading jalview properties from : " + propertiesFile);
+ System.out.println(
+ "Disabling Jalview writing to user's local properties file.");
propsAreReadOnly = true;
} catch (Exception ex)
@@ -369,6 +361,7 @@ public class Cache
{
fis = new FileInputStream(propertiesFile);
}
+ applicationProperties.clear();
applicationProperties.load(fis);
// remove any old build properties
@@ -382,8 +375,8 @@ public class Cache
if (getDefault("USE_PROXY", false))
{
- String proxyServer = getDefault("PROXY_SERVER", ""), proxyPort = getDefault(
- "PROXY_PORT", "8080");
+ String proxyServer = getDefault("PROXY_SERVER", ""),
+ proxyPort = getDefault("PROXY_PORT", "8080");
System.out.println("Using proxyServer: " + proxyServer
+ " proxyPort: " + proxyPort);
@@ -395,9 +388,9 @@ public class Cache
// LOAD THE AUTHORS FROM THE authors.props file
try
{
- String authorDetails = "jar:".concat(Cache.class
- .getProtectionDomain().getCodeSource().getLocation()
- .toString().concat("!/authors.props"));
+ String authorDetails = "jar:"
+ .concat(Cache.class.getProtectionDomain().getCodeSource()
+ .getLocation().toString().concat("!/authors.props"));
java.net.URL localJarFileURL = new java.net.URL(authorDetails);
@@ -412,63 +405,26 @@ public class Cache
applicationProperties.remove("YEAR");
}
- // FIND THE VERSION NUMBER AND BUILD DATE FROM jalview.jar
- // MUST FOLLOW READING OF LOCAL PROPERTIES FILE AS THE
- // VERSION MAY HAVE CHANGED SINCE LAST USING JALVIEW
- try
- {
- String buildDetails = "jar:".concat(Cache.class.getProtectionDomain()
- .getCodeSource().getLocation().toString()
- .concat("!/.build_properties"));
-
- java.net.URL localJarFileURL = new java.net.URL(buildDetails);
-
- InputStream in = localJarFileURL.openStream();
- applicationProperties.load(in);
- in.close();
- } catch (Exception ex)
- {
- System.out.println("Error reading build details: " + ex);
- applicationProperties.remove("VERSION");
- }
-
- 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 + ")";
- }
- new BuildDetails(codeVersion, null, codeInstallation);
+ loadBuildProperties(false);
SiftsSettings
.setMapWithSifts(Cache.getDefault("MAP_WITH_SIFTS", false));
- SiftsSettings.setSiftDownloadDirectory(jalview.bin.Cache.getDefault(
- "sifts_download_dir", DEFAULT_SIFTS_DOWNLOAD_DIR));
+ SiftsSettings.setSiftDownloadDirectory(jalview.bin.Cache
+ .getDefault("sifts_download_dir", DEFAULT_SIFTS_DOWNLOAD_DIR));
- SiftsSettings.setFailSafePIDThreshold(jalview.bin.Cache.getDefault(
- "sifts_fail_safe_pid_threshold",
- DEFAULT_FAIL_SAFE_PID_THRESHOLD));
+ SiftsSettings.setFailSafePIDThreshold(
+ jalview.bin.Cache.getDefault("sifts_fail_safe_pid_threshold",
+ DEFAULT_FAIL_SAFE_PID_THRESHOLD));
- SiftsSettings.setCacheThresholdInDays(jalview.bin.Cache.getDefault(
- "sifts_cache_threshold_in_days",
- DEFAULT_CACHE_THRESHOLD_IN_DAYS));
+ SiftsSettings.setCacheThresholdInDays(
+ jalview.bin.Cache.getDefault("sifts_cache_threshold_in_days",
+ DEFAULT_CACHE_THRESHOLD_IN_DAYS));
IdOrgSettings.setUrl(getDefault("ID_ORG_HOSTURL",
"http://www.jalview.org/services/identifiers"));
IdOrgSettings.setDownloadLocation(ID_ORG_FILE);
- System.out
- .println("Jalview Version: " + codeVersion + codeInstallation);
-
StructureImportSettings.setDefaultStructureFileFormat(jalview.bin.Cache
.getDefault("PDB_DOWNLOAD_FORMAT", PDB_DOWNLOAD_FORMAT));
StructureImportSettings
@@ -476,10 +432,14 @@ public class Cache
// StructureImportSettings
// .setDefaultPDBFileParser(jalview.bin.Cache.getDefault(
// "DEFAULT_PDB_FILE_PARSER", DEFAULT_PDB_FILE_PARSER));
- // jnlpVersion will be null if we're using InstallAnywhere
+
+ String jnlpVersion = System.getProperty("jalview.version");
+
+ // jnlpVersion will be null if a latest version check for the channel needs to
+ // be done
// Dont do this check if running in headless mode
- if (jnlpVersion == null
- && getDefault("VERSION_CHECK", true)
+
+ if (jnlpVersion == null && getDefault("VERSION_CHECK", true)
&& (System.getProperty("java.awt.headless") == null || System
.getProperty("java.awt.headless").equals("false")))
{
@@ -502,11 +462,11 @@ public class Cache
{
System.setProperty("sun.net.client.defaultConnectTimeout",
"5000");
- java.net.URL url = new java.net.URL(Cache.getDefault(
- "www.jalview.org", "http://www.jalview.org")
+ java.net.URL url = new java.net.URL(Cache
+ .getDefault("www.jalview.org", "http://www.jalview.org")
+ "/webstart/jalview.jnlp");
- BufferedReader in = new BufferedReader(new InputStreamReader(
- url.openStream()));
+ BufferedReader in = new BufferedReader(
+ new InputStreamReader(url.openStream()));
String line = null;
while ((line = in.readLine()) != null)
{
@@ -522,8 +482,8 @@ public class Cache
}
} catch (Exception ex)
{
- System.out
- .println("Non-fatal exception when checking version at www.jalview.org :");
+ System.out.println(
+ "Non-fatal exception when checking version at www.jalview.org :");
System.out.println(ex);
remoteVersion = getProperty("VERSION");
}
@@ -549,8 +509,6 @@ public class Cache
}
}
- setProperty("VERSION", codeVersion);
-
// LOAD USERDEFINED COLOURS
jalview.bin.Cache
.initUserColourSchemes(getProperty("USER_DEFINED_COLOURS"));
@@ -558,6 +516,50 @@ public class Cache
false);
}
+ public static void loadBuildProperties(boolean reportVersion)
+ {
+ String codeInstallation = getProperty("INSTALLATION");
+ boolean printV = codeInstallation == null;
+
+ // FIND THE VERSION NUMBER AND BUILD DATE FROM jalview.jar
+ try
+ {
+ String buildDetails = "jar:".concat(Cache.class.getProtectionDomain()
+ .getCodeSource().getLocation().toString()
+ .concat("!/.build_properties"));
+
+ java.net.URL localJarFileURL = new java.net.URL(buildDetails);
+
+ InputStream in = localJarFileURL.openStream();
+ applicationProperties.load(in);
+ in.close();
+ } catch (Exception ex)
+ {
+ System.out.println("Error reading build details: " + ex);
+ applicationProperties.remove("VERSION");
+ }
+ String codeVersion = getProperty("VERSION");
+ codeInstallation = getProperty("INSTALLATION");
+
+ if (codeVersion == null)
+ {
+ // THIS SHOULD ONLY BE THE CASE WHEN TESTING!!
+ codeVersion = "Test";
+ codeInstallation = "";
+ }
+ else
+ {
+ codeInstallation = " (" + codeInstallation + ")";
+ }
+ setProperty("VERSION", codeVersion);
+ new BuildDetails(codeVersion, null, codeInstallation);
+ if (printV && reportVersion)
+ {
+ System.out
+ .println("Jalview Version: " + codeVersion + codeInstallation);
+ }
+ }
+
private static void deleteBuildProperties()
{
applicationProperties.remove("LATEST_VERSION");
@@ -599,6 +601,24 @@ public class Cache
return def;
}
+ public static int getDefault(String property, int def)
+ {
+ String string = getProperty(property);
+ if (string != null)
+ {
+ try
+ {
+ def = Integer.parseInt(string);
+ } catch (NumberFormatException e)
+ {
+ System.out.println("Error parsing int property '" + property
+ + "' with value '" + string + "'");
+ }
+ }
+
+ return def;
+ }
+
/**
* These methods are used when checking if the saved preference is different
* to the default setting
@@ -622,15 +642,15 @@ public class Cache
* @param obj
* String value of property
*
- * @return String value of property
+ * @return previous value of property (or null)
*/
- public static String setProperty(String key, String obj)
+ public static Object setProperty(String key, String obj)
{
-
+ Object oldValue = null;
try
{
- applicationProperties.setProperty(key, obj);
- if (!propsAreReadOnly)
+ oldValue = applicationProperties.setProperty(key, obj);
+ if (propertiesFile != null && !propsAreReadOnly)
{
FileOutputStream out = new FileOutputStream(propertiesFile);
applicationProperties.store(out, "---JalviewX Properties File---");
@@ -638,10 +658,10 @@ public class Cache
}
} catch (Exception ex)
{
- System.out.println("Error setting property: " + key + " " + obj
- + "\n" + ex);
+ System.out.println(
+ "Error setting property: " + key + " " + obj + "\n" + ex);
}
- return obj;
+ return oldValue;
}
/**
@@ -690,15 +710,15 @@ public class Cache
{
try
{
- if (jalview.jbgui.GDesktop.class.getClassLoader().loadClass(
- "uk.ac.vamsas.client.VorbaId") != null)
+ if (jalview.jbgui.GDesktop.class.getClassLoader()
+ .loadClass("uk.ac.vamsas.client.VorbaId") != null)
{
- jalview.bin.Cache.log
- .debug("Found Vamsas Classes (uk.ac..vamsas.client.VorbaId can be loaded)");
+ jalview.bin.Cache.log.debug(
+ "Found Vamsas Classes (uk.ac..vamsas.client.VorbaId can be loaded)");
vamsasJarsArePresent = 1;
Logger lvclient = Logger.getLogger("uk.ac.vamsas");
- lvclient.setLevel(Level.toLevel(Cache.getDefault(
- "logs.Vamsas.Level", Level.INFO.toString())));
+ lvclient.setLevel(Level.toLevel(Cache
+ .getDefault("logs.Vamsas.Level", Level.INFO.toString())));
lvclient.addAppender(log.getAppender("JalviewLogger"));
// Tell the user that debug is enabled
@@ -729,15 +749,15 @@ public class Cache
{
try
{
- if (Cache.class.getClassLoader().loadClass(
- "groovy.lang.GroovyObject") != null)
+ if (Cache.class.getClassLoader()
+ .loadClass("groovy.lang.GroovyObject") != null)
{
- jalview.bin.Cache.log
- .debug("Found Groovy (groovy.lang.GroovyObject can be loaded)");
+ jalview.bin.Cache.log.debug(
+ "Found Groovy (groovy.lang.GroovyObject can be loaded)");
groovyJarsArePresent = 1;
Logger lgclient = Logger.getLogger("groovy");
- lgclient.setLevel(Level.toLevel(Cache.getDefault(
- "logs.Groovy.Level", Level.INFO.toString())));
+ lgclient.setLevel(Level.toLevel(Cache
+ .getDefault("logs.Groovy.Level", Level.INFO.toString())));
lgclient.addAppender(log.getAppender("JalviewLogger"));
// Tell the user that debug is enabled
@@ -778,15 +798,14 @@ public class Cache
// try to get the tracker class
try
{
- jgoogleanalyticstracker = Cache.class
- .getClassLoader()
- .loadClass(
- "com.boxysystems.jgoogleanalytics.JGoogleAnalyticsTracker");
- trackerfocus = Cache.class.getClassLoader().loadClass(
- "com.boxysystems.jgoogleanalytics.FocusPoint");
+ jgoogleanalyticstracker = Cache.class.getClassLoader().loadClass(
+ "com.boxysystems.jgoogleanalytics.JGoogleAnalyticsTracker");
+ trackerfocus = Cache.class.getClassLoader()
+ .loadClass("com.boxysystems.jgoogleanalytics.FocusPoint");
} catch (Exception e)
{
- log.debug("com.boxysystems.jgoogleanalytics package is not present - tracking not enabled.");
+ log.debug(
+ "com.boxysystems.jgoogleanalytics package is not present - tracking not enabled.");
tracker = null;
jgoogleanalyticstracker = null;
trackerfocus = null;
@@ -800,22 +819,22 @@ public class Cache
try
{
// Google analytics tracking code for Library Finder
- tracker = jgoogleanalyticstracker.getConstructor(
- new Class[] { String.class, String.class, String.class })
- .newInstance(
- new Object[] {
- "Jalview Desktop",
- (vrs = jalview.bin.Cache.getProperty("VERSION")
- + "_"
- + jalview.bin.Cache.getDefault(
- "BUILD_DATE", "unknown")),
- "UA-9060947-1" });
- jgoogleanalyticstracker.getMethod("trackAsynchronously",
- new Class[] { trackerfocus }).invoke(
- tracker,
- new Object[] { trackerfocus.getConstructor(
- new Class[] { String.class }).newInstance(
- new Object[] { "Application Started." }) });
+ tracker = jgoogleanalyticstracker
+ .getConstructor(new Class[]
+ { String.class, String.class, String.class })
+ .newInstance(new Object[]
+ { "Jalview Desktop",
+ (vrs = jalview.bin.Cache.getProperty("VERSION") + "_"
+ + jalview.bin.Cache.getDefault("BUILD_DATE",
+ "unknown")),
+ "UA-9060947-1" });
+ jgoogleanalyticstracker
+ .getMethod("trackAsynchronously", new Class[]
+ { trackerfocus })
+ .invoke(tracker, new Object[]
+ { trackerfocus.getConstructor(new Class[] { String.class })
+ .newInstance(new Object[]
+ { "Application Started." }) });
} catch (RuntimeException e)
{
re = e;
@@ -832,42 +851,45 @@ public class Cache
{
if (re != null)
{
- log.debug("Caught runtime exception in googletracker init:", re);
+ 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);
+ + vrs,
+ ex);
}
if (err != null)
{
log.error(
"Whilst initing GoogleTracker for Jalview Desktop version "
- + vrs, err);
+ + vrs,
+ err);
}
}
else
{
if (re != null)
{
- System.err
- .println("Debug: Caught runtime exception in googletracker init:"
+ System.err.println(
+ "Debug: Caught runtime exception in googletracker init:"
+ vrs);
re.printStackTrace();
}
if (ex != null)
{
- System.err
- .println("Warning: Failed to initialise GoogleTracker for Jalview Desktop with version "
+ System.err.println(
+ "Warning: Failed to initialise GoogleTracker for Jalview Desktop with version "
+ vrs);
ex.printStackTrace();
}
if (err != null)
{
- System.err
- .println("ERROR: Whilst initing GoogleTracker for Jalview Desktop version "
+ System.err.println(
+ "ERROR: Whilst initing GoogleTracker for Jalview Desktop version "
+ vrs);
err.printStackTrace();
}
@@ -977,22 +999,6 @@ public class Cache
return null;
}
- private static DasSourceRegistryI sourceRegistry = null;
-
- /**
- * initialise and ..
- *
- * @return instance of the das source registry
- */
- public static DasSourceRegistryI getDasSourceRegistry()
- {
- if (sourceRegistry == null)
- {
- sourceRegistry = new DasSourceRegistry();
- }
- return sourceRegistry;
- }
-
/**
* Set the specified value, or remove it if null or empty. Does not save the
* properties file.
@@ -1028,7 +1034,7 @@ public class Cache
{
return;
}
-
+
// In case colours can't be loaded, we'll remove them
// from the default list here.
StringBuffer coloursFound = new StringBuffer();
@@ -1057,12 +1063,53 @@ public class Cache
{
if (coloursFound.toString().length() > 1)
{
- setProperty(UserDefinedColours.USER_DEFINED_COLOURS, coloursFound.toString());
+ setProperty(UserDefinedColours.USER_DEFINED_COLOURS,
+ coloursFound.toString());
}
else
{
- applicationProperties.remove(UserDefinedColours.USER_DEFINED_COLOURS);
+ applicationProperties
+ .remove(UserDefinedColours.USER_DEFINED_COLOURS);
}
}
}
+
+ /**
+ *
+ * @return Jalview version, build details and JVM platform version for console
+ */
+ public static String getVersionDetailsForConsole()
+ {
+ return "Jalview Version: "
+ + jalview.bin.Cache.getDefault("VERSION", "TEST")
+ + "\n" + "Jalview Installation: "
+ + jalview.bin.Cache.getDefault("INSTALLATION",
+ "unknown")
+ + "\n" + "Build Date: "
+ + jalview.bin.Cache.getDefault("BUILD_DATE", "unknown")
+ + "\n" + "Java version: "
+ + System.getProperty("java.version") + "\n"
+ + System.getProperty("os.arch") + " "
+ + System.getProperty("os.name") + " "
+ + System.getProperty("os.version")
+ + (jalview.bin.Cache.getDefault("VERSION", "TEST")
+ .equals("DEVELOPMENT")
+ ? "\nJava path:"
+ + System.getProperty(
+ "java.home")
+ + File.separator + "bin"
+ + File.separator + "java"
+ : "");
+ }
+
+ /**
+ *
+ * @return build details as reported in splashscreen
+ */
+ public static String getBuildDetailsForSplash()
+ {
+ // consider returning more human friendly info
+ // eg 'built from Source' or update channel
+ return jalview.bin.Cache.getDefault("INSTALLATION", "unknown");
+ }
}