X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fbin%2FCache.java;h=a64e86994d8cfa35add4fd6eb44fb9f4d518913e;hb=3dcec29e9be7607122fb981050ff2198cef2a746;hp=fc9dddab4dd49cbaeebffb9f33dfd1738c114d53;hpb=0f72eae506d32d20f11908522330d49889818f10;p=jalview.git diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index fc9ddda..a64e869 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -43,6 +43,7 @@ import java.util.Collections; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; @@ -52,7 +53,9 @@ import java.util.TreeSet; import javax.swing.LookAndFeel; import javax.swing.UIManager; -import jalview.analytics.GoogleAnalytics4; +import jalview.analytics.Plausible; +import jalview.bin.argparser.Arg; +import jalview.bin.argparser.ArgParser; import jalview.datamodel.PDBEntry; import jalview.gui.Preferences; import jalview.gui.UserDefinedColours; @@ -128,7 +131,7 @@ import jalview.ws.sifts.SiftsSettings; * service *
  • QUESTIONNAIRE last questionnaire:responder id string from questionnaire * service
  • - *
  • USAGESTATS (false - user prompted) Enable google analytics tracker for + *
  • USAGESTATS (false - user prompted) Enable analytics tracker for * collecting usage statistics
  • *
  • SHOW_OVERVIEW boolean for overview window display
  • *
  • ANTI_ALIAS boolean for smooth fonts
  • @@ -140,6 +143,10 @@ import jalview.ws.sifts.SiftsSettings; *
  • WRAP_ALIGNMENT
  • *
  • EPS_RENDERING (Prompt each time|Lineart|Text) default for EPS rendering * style check
  • + *
  • BITMAP_SCALE - scale factor for PNG export - default 0.0 - native + * resolution
  • + *
  • BITMAP_HEIGHT - height bound for PNG export or 0 for unbound
  • + *
  • BITMAP_WIDTH - width bound for PNG export or 0 for unbound
  • *
  • SORT_ALIGNMENT (No sort|Id|Pairwise Identity)
  • *
  • SEQUENCE_LINKS list of name|URL pairs for opening a url with * $SEQUENCE_ID$
  • @@ -406,9 +413,9 @@ public class Cache fis = new URL(propertiesFile).openStream(); if (!Jalview.quiet()) { - System.out.println( + jalview.bin.Console.outPrintln( "Loading jalview properties from : " + propertiesFile); - System.out.println( + jalview.bin.Console.outPrintln( "Disabling Jalview writing to user's local properties file."); } propsAreReadOnly = true; @@ -439,7 +446,8 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println("Error reading properties file: " + ex); + jalview.bin.Console + .outPrintln("Error reading properties file: " + ex); } } @@ -496,7 +504,8 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println("Error reading author details: " + ex); + jalview.bin.Console + .outPrintln("Error reading author details: " + ex); authorDetails = null; } if (authorDetails == null) @@ -582,10 +591,10 @@ public class Cache { if (!Jalview.quiet()) { - System.out.println( + jalview.bin.Console.errPrintln( "Non-fatal exception when checking version at " + remoteBuildPropertiesUrl + ":"); - System.out.println(ex); + jalview.bin.Console.printStackTrace(ex); } remoteVersion = getProperty("VERSION"); } @@ -635,8 +644,8 @@ public class Cache url = Cache.class.getResource(resourcePath).toString(); } catch (Exception ex) { - System.err.println("Failed to resolve resource " + resourcePath - + ": " + ex.getMessage()); + jalview.bin.Console.errPrintln("Failed to resolve resource " + + resourcePath + ": " + ex.getMessage()); } } else @@ -686,7 +695,8 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println("Error reading build details: " + ex); + jalview.bin.Console + .outPrintln("Error reading build details: " + ex); applicationProperties.remove("VERSION"); } String codeVersion = getProperty("VERSION"); @@ -706,8 +716,9 @@ public class Cache new BuildDetails(codeVersion, null, codeInstallation); if (printVersion && reportVersion) { - System.out.println(ChannelProperties.getProperty("app_name") - + " version: " + codeVersion + codeInstallation); + jalview.bin.Console + .outPrintln(ChannelProperties.getProperty("app_name") + + " version: " + codeVersion + codeInstallation); } } @@ -783,8 +794,27 @@ public class Cache } catch (NumberFormatException e) { if (!Jalview.quiet()) - System.out.println("Error parsing int property '" + property - + "' with value '" + string + "'"); + jalview.bin.Console.errPrintln("Error parsing int property '" + + property + "' with value '" + string + "'"); + } + } + + return def; + } + + public static float getDefault(String property, float def) + { + String string = getProperty(property); + if (string != null) + { + try + { + def = Float.parseFloat(string); + } catch (NumberFormatException e) + { + if (!Jalview.quiet()) + jalview.bin.Console.errPrintln("Error parsing float property '" + + property + "' with value '" + string + "'"); } } @@ -834,7 +864,7 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println( + jalview.bin.Console.errPrintln( "Error setting property: " + key + " " + obj + "\n" + ex); } return oldValue; @@ -866,7 +896,7 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println("Error saving properties: " + ex); + jalview.bin.Console.errPrintln("Error saving properties: " + ex); } } } @@ -954,146 +984,41 @@ public class Cache } /** - * GA tracker object - actually JGoogleAnalyticsTracker null if tracking not - * enabled. + * Initialise the tracker if it is not done already. */ - protected static Object tracker = null; - - protected static Class trackerfocus = null; - - protected static Class jgoogleanalyticstracker = null; - - private static boolean useGA4 = true; - - /** - * Initialise the google tracker if it is not done already. - */ - public static void initGoogleTracker() + public static void initAnalytics() { - if (useGA4) - { - GoogleAnalytics4.setEnabled(true); + Plausible.setEnabled(true); - String appName = ChannelProperties.getProperty("app_name") - + " Desktop"; - String version = Cache.getProperty("VERSION") + "_" - + Cache.getDefault("BUILD_DATE", "unknown"); - String path; - /* we don't want to encode ':' as "%3A" for backward compatibility with the UA setup - try - { - path = "/" + String.join("/", URLEncoder.encode(appName, "UTF-8"), - URLEncoder.encode(version, "UTF-8"), - URLEncoder.encode(APPLICATION_STARTED, "UTF-8")); - } catch (UnsupportedEncodingException e) - { - */ - path = ("/" + String.join("/", appName, version, APPLICATION_STARTED)) - .replace(' ', '+'); - /* - } - */ - GoogleAnalytics4 ga4 = GoogleAnalytics4.getInstance(); - - // This will add a page_view similar to the old UA analytics. - // We probably want to get rid of this once the application_launch event - // is being processed properly. - ga4.sendAnalytics("page_view", "page_location", path, "page_title", - APPLICATION_STARTED); - - // This will send a new "application_launch" event with parameters - // including the old-style "path", the channel name and version - ga4.sendAnalytics("application_launch", true, "page_location", path); - } - else + String appName = ChannelProperties.getProperty("app_name") + " Desktop"; + String version = Cache.getProperty("VERSION") + "_" + + Cache.getDefault("BUILD_DATE", "unknown"); + String path; + /* we don't want to encode ':' as "%3A" for backward compatibility with the UA setup + try { - if (tracker == null) - { - if (jgoogleanalyticstracker == null) - { - // try to get the tracker class - try - { - jgoogleanalyticstracker = Cache.class.getClassLoader() - .loadClass( - "com.boxysystems.jgoogleanalytics.JGoogleAnalyticsTracker"); - trackerfocus = Cache.class.getClassLoader().loadClass( - "com.boxysystems.jgoogleanalytics.FocusPoint"); - } catch (Exception e) - { - Console.debug( - "com.boxysystems.jgoogleanalytics package is not present - tracking not enabled."); - tracker = null; - jgoogleanalyticstracker = null; - trackerfocus = null; - return; - } - } - // now initialise tracker - Exception re = null, ex = null; - Error err = null; - String vrs = "No Version Accessible"; - try - { - // Google analytics tracking code for Library Finder - tracker = jgoogleanalyticstracker - .getConstructor(new Class[] - { String.class, String.class, String.class }) - .newInstance(new Object[] - { ChannelProperties.getProperty("app_name") + " Desktop", - (vrs = Cache.getProperty("VERSION") + "_" - + 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 }) }); - } catch (RuntimeException e) - { - re = e; - } catch (Exception e) - { - ex = e; - } catch (Error e) - { - err = e; - } - if (re != null || ex != null || err != null) - { - if (re != null) - { - Console.debug("Caught runtime exception in googletracker init:", - re); - } - if (ex != null) - { - Console.warn( - "Failed to initialise GoogleTracker for Jalview Desktop with version " - + vrs, - ex); - } - if (err != null) - { - Console.error( - "Whilst initing GoogleTracker for Jalview Desktop version " - + vrs, - err); - } - } - else - { - Console.debug("Successfully initialised tracker."); - } - } + path = "/" + String.join("/", URLEncoder.encode(appName, "UTF-8"), + URLEncoder.encode(version, "UTF-8"), + URLEncoder.encode(APPLICATION_STARTED, "UTF-8")); + } catch (UnsupportedEncodingException e) + { + */ + List pathParts = new ArrayList<>(); + pathParts.add(appName); + pathParts.add(version); + pathParts.add(APPLICATION_STARTED); + path = ("/" + String.join("/", pathParts)).replace(' ', '+'); + /* } + */ + Plausible plausible = Plausible.getInstance(); + + // This will send a new "application_launch" event with parameters + // including the old-style "path", the channel name and version + plausible.sendEvent("application_launch", path, true); } - private static final String APPLICATION_STARTED = "Application Started."; + private static final String APPLICATION_STARTED = "Application Started"; /** * get the user's default colour if available @@ -1161,8 +1086,9 @@ public class Cache return date_format.parse(val); } catch (Exception ex) { - System.err.println("Invalid or corrupt date in property '" - + propertyName + "' : value was '" + val + "'"); + jalview.bin.Console + .errPrintln("Invalid or corrupt date in property '" + + propertyName + "' : value was '" + val + "'"); } } return null; @@ -1185,8 +1111,8 @@ public class Cache return Integer.valueOf(val); } catch (NumberFormatException x) { - System.err.println("Invalid integer in property '" + property - + "' (value was '" + val + "')"); + jalview.bin.Console.errPrintln("Invalid integer in property '" + + property + "' (value was '" + val + "')"); } } return null; @@ -1250,7 +1176,8 @@ public class Cache } catch (Exception ex) { if (!Jalview.quiet()) - System.out.println("Error loading User ColourFile\n" + ex); + jalview.bin.Console + .outPrintln("Error loading User ColourFile\n" + ex); } } if (!files.equals(coloursFound.toString())) @@ -1524,11 +1451,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 @@ -1738,26 +1664,36 @@ public class Cache } if (file == null || !file.exists()) { + if (file != null) + { + jalview.bin.Console + .errPrintln("Could not load bootstrap preferences file '" + + file.getPath() + "'"); + } String channelPrefsFilename = ChannelProperties .getProperty("preferences.filename"); String propertiesFilename = System.getProperty("user.home") + File.separatorChar + channelPrefsFilename; + jalview.bin.Console.errPrintln( + "Using default properties file '" + propertiesFilename + "'"); file = new File(propertiesFilename); } if (file == null || !file.exists()) + { String releasePrefsFilename = fallbackPropertiesFile; String releasePropertiesFilename = System.getProperty("user.home") + File.separatorChar + releasePrefsFilename; + jalview.bin.Console.errPrintln("Falling back to properties file '" + + releasePropertiesFilename + "'"); file = new File(releasePropertiesFilename); } - if (filename == null) - return null; if (!file.exists()) { - System.err.println("Could not load bootstrap preferences file '" - + filename + "'"); + jalview.bin.Console + .errPrintln("Could not load bootstrap preferences file '" + + file.getPath() + "'"); return null; } @@ -1773,11 +1709,12 @@ public class Cache } } catch (FileNotFoundException e) { - System.err.println("Could not find bootstrap preferences file '" - + file.getAbsolutePath() + "'"); + jalview.bin.Console + .errPrintln("Could not find bootstrap preferences file '" + + file.getAbsolutePath() + "'"); } catch (IOException e) { - System.err.println( + jalview.bin.Console.errPrintln( "IOException when loading bootstrap preferences file '" + file.getAbsolutePath() + "'"); } @@ -1796,4 +1733,10 @@ public class Cache { return key == null ? null : sessionProperties.get(key); } + + public static boolean getArgCacheDefault(Arg a, String pref, boolean def) + { + ArgParser ap = Jalview.getInstance().getArgParser(); + return ap.isSet(a) ? ap.getBoolean(a) : getDefault(pref, def); + } }