X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCache.java;h=6b33fea3b90b0b289b2b13f9d55058454ce46cf9;hb=fdde9a078d7bdb46ed9fb7fe115ea83c84a19c81;hp=bb70c406b24e2c9cf663d1f62e752de69c106d37;hpb=1aa7a7bfe46e16a5125192933b8ba6ae4bc6c9bf;p=jalview.git diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index bb70c40..6b33fea 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -24,7 +24,9 @@ import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; @@ -34,7 +36,9 @@ import java.net.PasswordAuthentication; import java.net.URL; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.Enumeration; @@ -240,6 +244,9 @@ public class Cache */ public static final String JALVIEWLOGLEVEL = "logs.Jalview.level"; + // for tests + public static final String BOOTSTRAP_TEST = "BOOTSTRAP_TEST"; + /** * Sifts settings */ @@ -320,8 +327,20 @@ public class Cache /** Default file is ~/.jalview_properties */ static String propertiesFile; + private static final String fallbackPropertiesFile = ".jalview_properties"; + private static boolean propsAreReadOnly = Platform.isJS(); + public static boolean isPropsAreReadOnly() + { + return propsAreReadOnly; + } + + public static void setPropsAreReadOnly(boolean propsAreReadOnly) + { + Cache.propsAreReadOnly = propsAreReadOnly; + } + private final static String JS_PROPERTY_PREFIX = "jalview_"; /** @@ -337,7 +356,7 @@ public class Cache { String channelPrefsFilename = ChannelProperties .getProperty("preferences.filename"); - String releasePrefsFilename = ".jalview_properties"; + String releasePrefsFilename = fallbackPropertiesFile; propertiesFile = System.getProperty("user.home") + File.separatorChar + channelPrefsFilename; releasePropertiesFile = System.getProperty("user.home") @@ -364,10 +383,13 @@ public class Cache { // props file provided as URL fis = new URL(propertiesFile).openStream(); - System.out.println( - "Loading jalview properties from : " + propertiesFile); - System.out.println( - "Disabling Jalview writing to user's local properties file."); + if (!Jalview.quiet()) + { + 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) { @@ -395,7 +417,8 @@ public class Cache fis.close(); } catch (Exception ex) { - System.out.println("Error reading properties file: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading properties file: " + ex); } } @@ -451,7 +474,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error reading author details: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading author details: " + ex); authorDetails = null; } if (authorDetails == null) @@ -514,8 +538,8 @@ public class Cache if (orgtimeout == null) { orgtimeout = "30"; - System.out.println("# INFO: Setting default net timeout to " - + orgtimeout + " seconds."); + Console.debug("Setting default net timeout to " + orgtimeout + + " seconds."); } String remoteVersion = null; if (remoteBuildPropertiesUrl.startsWith("http")) @@ -535,10 +559,13 @@ public class Cache remoteVersion = remoteBuildProperties.getProperty("VERSION"); } catch (Exception ex) { - System.out.println( - "Non-fatal exception when checking version at " - + remoteBuildPropertiesUrl + ":"); - System.out.println(ex); + if (!Jalview.quiet()) + { + System.out.println( + "Non-fatal exception when checking version at " + + remoteBuildPropertiesUrl + ":"); + System.out.println(ex); + } remoteVersion = getProperty("VERSION"); } } @@ -637,7 +664,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error reading build details: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading build details: " + ex); applicationProperties.remove("VERSION"); } String codeVersion = getProperty("VERSION"); @@ -658,7 +686,7 @@ public class Cache if (printVersion && reportVersion) { System.out.println(ChannelProperties.getProperty("app_name") - + " Version: " + codeVersion + codeInstallation); + + " version: " + codeVersion + codeInstallation); } } @@ -719,8 +747,9 @@ public class Cache def = Integer.parseInt(string); } catch (NumberFormatException e) { - System.out.println("Error parsing int property '" + property - + "' with value '" + string + "'"); + if (!Jalview.quiet()) + System.out.println("Error parsing int property '" + property + + "' with value '" + string + "'"); } } @@ -761,8 +790,9 @@ public class Cache } } catch (Exception ex) { - System.out.println( - "Error setting property: " + key + " " + obj + "\n" + ex); + if (!Jalview.quiet()) + System.out.println( + "Error setting property: " + key + " " + obj + "\n" + ex); } return oldValue; } @@ -792,7 +822,8 @@ public class Cache out.close(); } catch (Exception ex) { - System.out.println("Error saving properties: " + ex); + if (!Jalview.quiet()) + System.out.println("Error saving properties: " + ex); } } } @@ -1130,7 +1161,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error loading User ColourFile\n" + ex); + if (!Jalview.quiet()) + System.out.println("Error loading User ColourFile\n" + ex); } } if (!files.equals(coloursFound.toString())) @@ -1404,11 +1436,10 @@ public class Cache if (customProxySet && // we have a username but no password for the scheme being // requested - (protocol.equalsIgnoreCase("http") - && (httpUser != null - && httpUser.length() > 0 - && (httpPassword == null - || httpPassword.length == 0))) + (protocol.equalsIgnoreCase("http") + && (httpUser != null && httpUser.length() > 0 + && (httpPassword == null + || httpPassword.length == 0))) || (protocol.equalsIgnoreCase("https") && (httpsUser != null && httpsUser.length() > 0 @@ -1604,4 +1635,63 @@ public class Cache String appbase = getGetdownAppbase(); return appbase + "/" + getdownDistDir + "/build_properties"; } + + private static final Collection bootstrapProperties = new ArrayList<>( + Arrays.asList(JALVIEWLOGLEVEL, BOOTSTRAP_TEST)); + + public static Properties bootstrapProperties(String filename) + { + Properties bootstrapProps = new Properties(); + File file = null; + if (filename != null) + { + file = new File(filename); + } + if (file == null || !file.exists()) + { + String channelPrefsFilename = ChannelProperties + .getProperty("preferences.filename"); + String propertiesFilename = System.getProperty("user.home") + + File.separatorChar + channelPrefsFilename; + file = new File(propertiesFilename); + } + if (file == null || !file.exists()) + { + String releasePrefsFilename = fallbackPropertiesFile; + String releasePropertiesFilename = System.getProperty("user.home") + + File.separatorChar + releasePrefsFilename; + file = new File(releasePropertiesFilename); + } + + if (filename == null) + return null; + if (!file.exists()) + { + System.err.println("Could not load bootstrap preferences file '" + + filename + "'"); + return null; + } + + try + { + FileInputStream in = new FileInputStream(file.getAbsoluteFile()); + Properties props = new Properties(); + props.load(in); + for (String prop : bootstrapProperties) + { + if (props.containsKey(prop)) + bootstrapProps.put(prop, props.getProperty(prop)); + } + } catch (FileNotFoundException e) + { + System.err.println("Could not find bootstrap preferences file '" + + file.getAbsolutePath() + "'"); + } catch (IOException e) + { + System.err.println( + "IOException when loading bootstrap preferences file '" + + file.getAbsolutePath() + "'"); + } + return bootstrapProps; + } }