ModellerOutput set in preferences
[jalview.git] / src / jalview / bin / Cache.java
index d8a6d3d..eb503d5 100755 (executable)
@@ -22,7 +22,10 @@ import java.io.*;
 \r
 import java.util.*;\r
 \r
-import java.net.*;\r
+import org.apache.log4j.Logger;\r
+import org.apache.log4j.SimpleLayout;\r
+import org.apache.log4j.Level;\r
+import org.apache.log4j.ConsoleAppender;\r
 \r
 \r
 /**\r
@@ -30,7 +33,9 @@ import java.net.*;
  * <br><br>Current properties include:\r
  * <br>logs.Axis.Level - one of the stringified Levels for log4j controlling the logging level for axis (used for web services)\r
  * <br>logs.Castor.Level - one of the stringified Levels for log4j controlling the logging level for castor (used for serialization)\r
- * <br>jalview.browser - used in the jalview.utils.browserLauncher class if it doesn't know what else to do.\r
+ * <br>logs.Jalview.Level - Cache.log stringified level.\r
+ * <br>DISCOVERY_START - Boolean - controls if discovery services are queried on startup\r
+ * <br>DISCOVERY_URLS - comma separated list of Discovery Service endpoints.\r
  * <br>SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_Y=285,SCREEN_X=371,SHOW_FULLSCREEN\r
  * FONT_NAME,FONT_SIZE,FONT_STYLE,GAP_SYMBOL,LAST_DIRECTORY,USER_DEFINED_COLOUR\r
  * SHOW_FULL_ID,SHOW_IDENTITY,SHOW_QUALITY,SHOW_ANNOTATIONS,SHOW_CONSERVATION,\r
@@ -41,17 +46,52 @@ import java.net.*;
  */\r
 public class Cache\r
 {\r
+  /**\r
+   * Initialises the Apache Axis logger\r
+   */\r
+  public static Logger log;\r
 \r
     /** Jalview Properties */\r
-    public static Properties applicationProperties;\r
+    public static Properties applicationProperties = new Properties();\r
 \r
     /** Default file is  ~/.jalview_properties */\r
     static String propertiesFile;\r
 \r
+    public static void initLogger()\r
+    {\r
+      try\r
+      {\r
+        Logger laxis = Logger.getLogger("org.apache.axis");\r
+        Logger lcastor = Logger.getLogger("org.exolab.castor");\r
+        jalview.bin.Cache.log = Logger.getLogger("jalview.bin.Jalview");\r
+\r
+        laxis.setLevel(Level.toLevel(Cache.getDefault("logs.Axis.Level",\r
+            Level.INFO.toString())));\r
+        lcastor.setLevel(Level.toLevel(Cache.getDefault("logs.Castor.Level",\r
+            Level.INFO.toString())));\r
+        jalview.bin.Cache.log.setLevel(Level.toLevel(Cache.getDefault(\r
+            "logs.Jalview.level",\r
+            Level.INFO.toString())));\r
+        ConsoleAppender ap = new ConsoleAppender(new SimpleLayout(),\r
+                                                 "System.err");\r
+        ap.setName("JalviewLogger");\r
+\r
+        laxis.addAppender(ap);\r
+        lcastor.addAppender(ap);\r
+        jalview.bin.Cache.log.addAppender(ap);\r
+        // Tell the user that debug is enabled\r
+        jalview.bin.Cache.log.debug("Jalview Debugging Output Follows.");\r
+      }\r
+      catch (Exception ex)\r
+      {\r
+      System.err.println("Problems initializing the log4j system\n");\r
+      }\r
+    }\r
+\r
+\r
     /** Called when Jalview is started */\r
     public static void loadProperties(String propsFile)\r
     {\r
-        applicationProperties = new Properties();\r
         propertiesFile = propsFile;\r
         if (propsFile == null)\r
         {\r
@@ -71,6 +111,14 @@ public class Cache
           System.out.println("Error reading properties file: "+ex);\r
         }\r
 \r
+      if(getDefault("USE_PROXY", false))\r
+      {\r
+          System.out.println("Using proxyServer: "+getDefault("PROXY_SERVER", null)+\r
+                           " proxyPort: "+getDefault("PROXY_PORT", null));\r
+          System.setProperty("http.proxyHost", getDefault("PROXY_SERVER", null));\r
+          System.setProperty("http.proxyPort", getDefault("PROXY_PORT", null));\r
+      }\r
+\r
         // FIND THE VERSION NUMBER AND BUILD DATE FROM jalview.jar\r
         // MUST FOLLOW READING OF LOCAL PROPERTIES FILE AS THE\r
         // VERSION MAY HAVE CHANGED SINCE LAST USING JALVIEW\r
@@ -106,7 +154,8 @@ public class Cache
         }\r
 \r
 \r
-        System.out.println("Version: "+codeVersion);\r
+        System.out.println("Jalview Version: "+codeVersion);\r
+\r
 \r
         // jnlpVersion will be null if we're using InstallAnywhere\r
         // Dont do this check if running in headless mode\r
@@ -114,30 +163,61 @@ public class Cache
                 System.getProperty("java.awt.headless")==null\r
              || System.getProperty("java.awt.headless").equals("false")))\r
         {\r
-          try{\r
-            java.net.URL url = new java.net.URL("http://www.jalview.org/webstart/jalview.jnlp");\r
-            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));\r
-            String line = null;\r
-            while( (line = in.readLine()) !=null)\r
+\r
+          class VersionChecker\r
+              extends Thread\r
+          {\r
+            public void run()\r
             {\r
-              if(line.indexOf("jalview.version")==-1)\r
-                continue;\r
+              String jnlpVersion = null;\r
+              try\r
+              {\r
+                java.net.URL url = new java.net.URL(\r
+                    "http://www.jalview.org/webstart/jalview.jnlp");\r
+                BufferedReader in = new BufferedReader(new InputStreamReader(url.\r
+                    openStream()));\r
+                String line = null;\r
+                while ( (line = in.readLine()) != null)\r
+                {\r
+                  if (line.indexOf("jalview.version") == -1)\r
+                    continue;\r
+\r
+                  line = line.substring(line.indexOf("value=") + 7);\r
+                  line = line.substring(0, line.lastIndexOf("\""));\r
+                  jnlpVersion = line;\r
+                  break;\r
+                }\r
+              }\r
+              catch (Exception ex)\r
+              {\r
+                System.out.println(ex);\r
+                jnlpVersion = getProperty("VERSION");\r
+              }\r
 \r
-              line = line.substring(line.indexOf("value=")+7);\r
-              line = line.substring(0, line.lastIndexOf("\""));\r
-              jnlpVersion = line;\r
-              break;\r
+              setProperty("LATEST_VERSION", jnlpVersion);\r
             }\r
-          }catch(Exception ex)\r
-          {  jnlpVersion =  codeVersion; }\r
+          }\r
 \r
-          System.out.println("Latest : "+jnlpVersion);\r
+          VersionChecker vc = new VersionChecker();\r
+          vc.start();\r
+        }\r
+        else\r
+        {\r
+          if(jnlpVersion!=null)\r
+            setProperty("LATEST_VERSION", jnlpVersion);\r
+          else\r
+          applicationProperties.remove("LATEST_VERSION");\r
         }\r
 \r
-        setProperty("LATEST_VERSION", jnlpVersion);\r
         setProperty("VERSION", codeVersion);\r
+\r
+        //LOAD USERDEFINED COLOURS\r
+        jalview.gui.UserDefinedColours.initUserColourSchemes( getProperty("USER_DEFINED_COLOURS"));\r
+        jalview.io.PIRFile.useModellerOutput = Cache.getDefault("PIR_MODELLER", false);\r
     }\r
 \r
+\r
+\r
     /**\r
      * Gets Jalview application property of given key. Returns null\r
      * if key not found\r
@@ -151,6 +231,37 @@ public class Cache
         return applicationProperties.getProperty(key);\r
     }\r
 \r
+\r
+    /** These methods are used when checking if the saved preference\r
+     * is different to the default setting\r
+     */\r
+\r
+    public static boolean getDefault(String property, boolean def)\r
+    {\r
+      String string = getProperty(property);\r
+      if (string != null)\r
+      {\r
+        def = Boolean.valueOf(string).booleanValue();\r
+      }\r
+\r
+      return def;\r
+    }\r
+\r
+    /** These methods are used when checking if the saved preference\r
+    * is different to the default setting\r
+    */\r
+    public static String getDefault(String property, String def)\r
+    {\r
+      String string = getProperty(property);\r
+      if (string != null)\r
+      {\r
+        return string;\r
+      }\r
+\r
+      return def;\r
+    }\r
+\r
+\r
     /**\r
      * Stores property in the file "HOME_DIR/.jalview_properties"\r
      *\r
@@ -164,16 +275,24 @@ public class Cache
         try\r
         {\r
             FileOutputStream out = new FileOutputStream(propertiesFile);\r
-\r
             applicationProperties.setProperty(key, obj);\r
-\r
             applicationProperties.store(out, "---JalviewX Properties File---");\r
             out.close();\r
         }\r
         catch (Exception ex)\r
+        {   System.out.println("Error setting property: "+key+" "+obj+"\n"+ex);   }\r
+        return obj;\r
+    }\r
+\r
+    public static void saveProperties()\r
+    {\r
+        try\r
         {\r
+            FileOutputStream out = new FileOutputStream(propertiesFile);\r
+            applicationProperties.store(out, "---JalviewX Properties File---");\r
+            out.close();\r
         }\r
-\r
-        return obj;\r
+        catch (Exception ex)\r
+        {  System.out.println("Error saving properties: "+ex);  }\r
     }\r
 }\r