/*
- * 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 <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
* 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
* <li>SHOW_QUALITY show alignment quality annotation</li>
* <li>SHOW_ANNOTATIONS show alignment annotation rows</li>
* <li>SHOW_CONSERVATION show alignment conservation annotation</li>
+ * <li>SORT_ANNOTATIONS currently either SEQUENCE_AND_LABEL or
+ * LABEL_AND_SEQUENCE</li>
+ * <li>SHOW_AUTOCALC_ABOVE true to show autocalculated annotations above
+ * sequence annotations</li>
* <li>CENTRE_COLUMN_LABELS centre the labels at each column in a displayed
* annotation row</li>
* <li>DEFAULT_COLOUR default colour scheme to apply for a new alignment</li>
* <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
* when shading by annotation</li>
* <li>www.jalview.org (http://www.jalview.org) a property enabling all HTTP
* requests to be redirected to a mirror of http://www.jalview.org</li>
- *
* <li>FIGURE_AUTOIDWIDTH (false) Expand the left hand column of an exported
* alignment figure to accommodate even the longest sequence ID or annotation
* label.</li>
* <li>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).</li>
- * <li></li>
+ * <li>STRUCT_FROM_PDB (false) derive secondary structure annotation from PDB
+ * record</li>
+ * <li>USE_RNAVIEW (false) use RNAViewer to derive secondary structure</li>
+ * <li>ADD_SS_ANN (false) add secondary structure annotation to alignment
+ * display</li>
+ * <li>ADD_TEMPFACT_ANN (false) add Temperature Factor annotation to alignment
+ * 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 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()));
+ }
+ };
/** Default file is ~/.jalview_properties */
static String propertiesFile;
// 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())));
// 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");
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)
{
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
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
{
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");
} 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);
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");
} 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);
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[]
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
{
{
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 "
*/
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
}
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);
+ }
+ }
}