/*
- * 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.
*
*/
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;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
+import java.util.Locale;
import java.util.Properties;
import java.util.TreeSet;
* <li>FOLLOW_SELECTIONS (true) Controls whether a new alignment view should
* respond to selections made in other alignments containing the same sequences.
* </li>
+ * <li>JWS2HOSTURLS comma-separated list of URLs to try for JABAWS services</li>
* <li>SHOW_WSDISCOVERY_ERRORS (true) Controls if the web service URL discovery
* warning dialog box is displayed.</li>
* <li>ANNOTATIONCOLOUR_MIN (orange) Shade used for minimum value of annotation
* display</li>
* <li>STRUCTURE_DISPLAY choose from JMOL (default) or CHIMERA for 3D structure
* display</li>
+ * <li>CHIMERA_PATH specify full path to Chimera program (if non-standard)</li>
*
* </ul>
* Deprecated settings:
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 PDB_DOWNLOAD_FORMAT = PDBEntry.Type.MMCIF
+ .toString();
+
+ private final static String DEFAULT_PDB_FILE_PARSER = StructureImportSettings.StructureParser.JMOL_PARSER
+ .toString();
+
+ /*
+ * a date formatter using a fixed (rather than the user's) locale;
+ * this ensures that date properties can be written and re-read successfully
+ * even if the user changes their locale setting
+ */
+ private static final DateFormat date_format = SimpleDateFormat
+ .getDateTimeInstance(SimpleDateFormat.MEDIUM,
+ SimpleDateFormat.MEDIUM, Locale.UK);
+
/**
* 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<Object> keys() {
- return Collections.enumeration(new TreeSet<Object>(super.keySet()));
+ public synchronized Enumeration<Object> keys()
+ {
+ return Collections.enumeration(new TreeSet<Object>(super.keySet()));
}
};
fis = new FileInputStream(propertiesFile);
}
applicationProperties.load(fis);
-
+
// remove any old build properties
-
+
deleteBuildProperties();
fis.close();
} catch (Exception ex)
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));
+
+ 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);
+ System.out
+ .println("Jalview Version: " + codeVersion + codeInstallation);
+ StructureImportSettings.setDefaultStructureFileFormat(jalview.bin.Cache
+ .getDefault(
+"PDB_DOWNLOAD_FORMAT", PDB_DOWNLOAD_FORMAT));
+ // StructureImportSettings
+ // .setDefaultPDBFileParser(jalview.bin.Cache.getDefault(
+ // "DEFAULT_PDB_FILE_PARSER", DEFAULT_PDB_FILE_PARSER));
// jnlpVersion will be null if we're using InstallAnywhere
// Dont do this check if running in headless mode
if (jnlpVersion == null
class VersionChecker extends Thread
{
+ @Override
public void run()
{
String orgtimeout = System
System.out.println("# INFO: Setting default net timeout to "
+ orgtimeout + " seconds.");
}
- String jnlpVersion = null;
+ String remoteVersion = null;
try
{
System.setProperty("sun.net.client.defaultConnectTimeout",
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);
}
}
applicationProperties.remove("AUTHORS");
applicationProperties.remove("AUTHORFNAMES");
applicationProperties.remove("YEAR");
+ applicationProperties.remove("BUILD_DATE");
+ applicationProperties.remove("INSTALLATION");
}
/**
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;
{
setProperty(property, jalview.util.Format.getHexString(colour));
}
-
- public static final DateFormat date_format = SimpleDateFormat
- .getDateTimeInstance();
-
+
/**
- * store a date in a jalview property
+ * Stores a formatted date in a jalview property, using a fixed locale.
*
- * @param string
- * @param time
+ * @param propertyName
+ * @param date
+ * @return the formatted date string
*/
- public static void setDateProperty(String property, Date time)
+ public static String setDateProperty(String propertyName, Date date)
{
- setProperty(property, date_format.format(time));
+ String formatted = date_format.format(date);
+ setProperty(propertyName, formatted);
+ return formatted;
}
/**
- * read a date stored in a jalview property
+ * Reads a date stored in a Jalview property, parses it (using a fixed locale
+ * format) and returns as a Date, or null if parsing fails
*
- * @param property
- * @return valid date as stored by setDateProperty, or null
+ * @param propertyName
+ * @return
*
*/
- public static Date getDateProperty(String property)
+ public static Date getDateProperty(String propertyName)
{
- String val = getProperty(property);
+ String val = getProperty(propertyName);
if (val != null)
{
try
} catch (Exception ex)
{
System.err.println("Invalid or corrupt date in property '"
- + property + "' : value was '" + val + "'");
+ + propertyName + "' : value was '" + val + "'");
}
}
return null;
}
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);
+ }
+ }
}