X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCache.java;h=6f16a6ec5fd60ab2ecf549fea62434624562fa94;hb=82a6c8e2e25b7534168b68b2c89b9cf195f815a5;hp=2a9f53d212f0fe193fc1e560324cd2cb72f31e58;hpb=eaf9092bfa74b5162589c8775f68a19dd79dbb1d;p=jalview.git
diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java
index 2a9f53d..6f16a6e 100755
--- a/src/jalview/bin/Cache.java
+++ b/src/jalview/bin/Cache.java
@@ -1,6 +1,6 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * 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.
*
@@ -20,8 +20,11 @@
*/
package jalview.bin;
+import jalview.datamodel.PDBEntry;
+import jalview.structure.StructureImportSettings;
import jalview.ws.dbsources.das.api.DasSourceRegistryI;
import jalview.ws.dbsources.das.datamodel.DasSourceRegistry;
+import jalview.ws.sifts.SiftsSettings;
import java.awt.Color;
import java.io.BufferedReader;
@@ -32,8 +35,11 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.Collections;
import java.util.Date;
+import java.util.Enumeration;
import java.util.Properties;
+import java.util.TreeSet;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
@@ -147,6 +153,7 @@ import org.apache.log4j.SimpleLayout;
*
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
@@ -155,14 +162,22 @@ import org.apache.log4j.SimpleLayout;
* 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:
@@ -204,13 +219,39 @@ public class Cache
public static final String DAS_ACTIVE_SOURCE = "DAS_ACTIVE_SOURCE";
+ public static final String DEFAULT_SIFTS_DOWNLOAD_DIR = System
+ .getProperty("user.home")
+ + File.separatorChar
+ + ".sifts_downloads" + File.separatorChar;
+
+ private final static String DEFAULT_CACHE_THRESHOLD_IN_DAYS = "2";
+
+ private final static String DEFAULT_FAIL_SAFE_PID_THRESHOLD = "30";
+
+ /**
+ * Allowed values are PDB or mmCIF
+ */
+ private final static String DEFAULT_STRUCTURE_FORMAT = PDBEntry.Type.MMCIF
+ .toString();
+
+ private final static String DEFAULT_PDB_FILE_PARSER = StructureImportSettings.StructureParser.JMOL_PARSER
+ .toString();
+
/**
* Initialises the Jalview Application Log
*/
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;
@@ -297,9 +338,9 @@ public class Cache
fis = new FileInputStream(propertiesFile);
}
applicationProperties.load(fis);
-
+
// remove any old build properties
-
+
deleteBuildProperties();
fis.close();
} catch (Exception ex)
@@ -361,16 +402,45 @@ 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 + ")";
+ }
+ new BuildDetails(codeVersion, null, codeInstallation);
+
+ SiftsSettings
+ .setMapWithSifts(Cache.getDefault("MAP_WITH_SIFTS", false));
- System.out.println("Jalview Version: " + codeVersion);
+ 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.setCacheThresholdInDays(jalview.bin.Cache.getDefault(
+ "sifts_cache_threshold_in_days",
+ DEFAULT_CACHE_THRESHOLD_IN_DAYS));
+
+ System.out
+ .println("Jalview Version: " + codeVersion + codeInstallation);
+
+ StructureImportSettings.setDefaultStructureFileFormat(jalview.bin.Cache
+ .getDefault(
+ "DEFAULT_STRUCTURE_FORMAT", DEFAULT_STRUCTURE_FORMAT));
+ StructureImportSettings
+ .setDefaultPDBFileParser(jalview.bin.Cache.getDefault(
+ "DEFAULT_PDB_FILE_PARSER", DEFAULT_PDB_FILE_PARSER));
+ StructureImportSettings.setProcessHETATMs(jalview.bin.Cache.getDefault(
+ "PROCESS_HETATM", false));
// jnlpVersion will be null if we're using InstallAnywhere
// Dont do this check if running in headless mode
if (jnlpVersion == null
@@ -381,6 +451,7 @@ public class Cache
class VersionChecker extends Thread
{
+ @Override
public void run()
{
String orgtimeout = System
@@ -391,7 +462,7 @@ public class Cache
System.out.println("# INFO: Setting default net timeout to "
+ orgtimeout + " seconds.");
}
- String jnlpVersion = null;
+ String remoteVersion = null;
try
{
System.setProperty("sun.net.client.defaultConnectTimeout",
@@ -411,20 +482,20 @@ public class Cache
line = line.substring(line.indexOf("value=") + 7);
line = line.substring(0, line.lastIndexOf("\""));
- jnlpVersion = line;
+ remoteVersion = line;
break;
}
} catch (Exception ex)
{
System.out
- .println("Non-fatal exceptions when checking version at www.jalview.org :");
+ .println("Non-fatal exception when checking version at www.jalview.org :");
System.out.println(ex);
- jnlpVersion = getProperty("VERSION");
+ remoteVersion = getProperty("VERSION");
}
System.setProperty("sun.net.client.defaultConnectTimeout",
orgtimeout);
- setProperty("LATEST_VERSION", jnlpVersion);
+ setProperty("LATEST_VERSION", remoteVersion);
}
}
@@ -459,6 +530,8 @@ public class Cache
applicationProperties.remove("AUTHORS");
applicationProperties.remove("AUTHORFNAMES");
applicationProperties.remove("YEAR");
+ applicationProperties.remove("BUILD_DATE");
+ applicationProperties.remove("INSTALLATION");
}
/**
@@ -692,21 +765,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" });
+ 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." }) });
+ new Class[] { trackerfocus }).invoke(
+ tracker,
+ new Object[] { trackerfocus.getConstructor(
+ new Class[] { String.class }).newInstance(
+ new Object[] { "Application Started." }) });
} catch (RuntimeException e)
{
re = e;
@@ -890,4 +964,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);
+ }
+ }
}