From 9a5abc55a76fa3d709146f82207f580990a8180a Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 10 Jun 2009 12:04:12 +0000 Subject: [PATCH] com.boxysystems.jgogleanalytics is now an optional dependency --- src/jalview/bin/Cache.java | 266 ++++++++++++++++++++++++++++---------------- 1 file changed, 170 insertions(+), 96 deletions(-) diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index 4469975..a73481e 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -24,9 +24,6 @@ import java.util.*; import org.apache.log4j.*; import org.biojava.dasobert.dasregistry.Das1Source; -import com.boxysystems.jgoogleanalytics.FocusPoint; -import com.boxysystems.jgoogleanalytics.JGoogleAnalyticsTracker; - /** * Stores and retrieves Jalview Application Properties Lists and fields within * list entries are separated by '|' symbols unless otherwise stated (|) clauses @@ -43,77 +40,79 @@ import com.boxysystems.jgoogleanalytics.JGoogleAnalyticsTracker; * *
  • logs.Jalview.Level - Cache.log stringified level.
    *
  • - *
  • DISCOVERY_START - Boolean - controls if discovery services are queried - * on startup
  • - *
  • DISCOVERY_URLS - comma separated list of Discovery Service endpoints. - *
  • - *
  • SCREEN_WIDTH
  • - *
  • SCREEN_HEIGHT
  • - *
  • SCREEN_Y=285
  • - *
  • SCREEN_X=371
  • - *
  • SHOW_FULLSCREEN boolean
  • - *
  • FONT_NAME java font name for alignment text display
  • - *
  • FONT_SIZE size of displayed alignment text
  • - *
  • FONT_STYLE style of font displayed (sequence labels are always italic) - *
  • - *
  • GAP_SYMBOL character to treat as gap symbol (usually -,.,' ')
  • - *
  • LAST_DIRECTORY last directory for browsing alignment
  • - *
  • USER_DEFINED_COLOURS list of user defined colour scheme files
  • - *
  • SHOW_FULL_ID show id with '/start-end' numbers appended
  • - *
  • SHOW_IDENTITY show percentage identity annotation
  • - *
  • SHOW_QUALITY show alignment quality annotation
  • - *
  • SHOW_ANNOTATIONS show alignment annotation rows
  • - *
  • SHOW_CONSERVATION show alignment conservation annotation
  • + *
  • DISCOVERY_START - Boolean - controls if discovery services are queried on + * startup
  • + *
  • DISCOVERY_URLS - comma separated list of Discovery Service endpoints.
  • + *
  • SCREEN_WIDTH
  • + *
  • SCREEN_HEIGHT
  • + *
  • SCREEN_Y=285
  • + *
  • SCREEN_X=371
  • + *
  • SHOW_FULLSCREEN boolean
  • + *
  • FONT_NAME java font name for alignment text display
  • + *
  • FONT_SIZE size of displayed alignment text
  • + *
  • FONT_STYLE style of font displayed (sequence labels are always italic)
  • + *
  • GAP_SYMBOL character to treat as gap symbol (usually -,.,' ')
  • + *
  • LAST_DIRECTORY last directory for browsing alignment
  • + *
  • USER_DEFINED_COLOURS list of user defined colour scheme files
  • + *
  • SHOW_FULL_ID show id with '/start-end' numbers appended
  • + *
  • SHOW_IDENTITY show percentage identity annotation
  • + *
  • SHOW_QUALITY show alignment quality annotation
  • + *
  • SHOW_ANNOTATIONS show alignment annotation rows
  • + *
  • SHOW_CONSERVATION show alignment conservation annotation
  • *
  • CENTRE_COLUMN_LABELS centre the labels at each column in a displayed - * annotation row
  • - *
  • DEFAULT_COLOUR default colour scheme to apply for a new alignment
  • - *
  • DEFAULT_FILE_FORMAT file format used to save
  • - *
  • STARTUP_FILE file loaded on startup (may be a fully qualified url)
  • - *
  • SHOW_STARTUP_FILE flag to control loading of startup file
  • - *
  • VERSION the version of the jalview build
  • - *
  • BUILD_DATE date of this build
  • + * annotation row + *
  • DEFAULT_COLOUR default colour scheme to apply for a new alignment
  • + *
  • DEFAULT_FILE_FORMAT file format used to save
  • + *
  • STARTUP_FILE file loaded on startup (may be a fully qualified url)
  • + *
  • SHOW_STARTUP_FILE flag to control loading of startup file
  • + *
  • VERSION the version of the jalview build
  • + *
  • BUILD_DATE date of this build
  • *
  • LATEST_VERSION the latest jalview version advertised on the - * www.jalview.org
  • + * www.jalview.org *
  • PIR_MODELLER boolean indicating if PIR files are written with MODELLER - * descriptions
  • + * descriptions *
  • (FASTA,MSF,PILEUP,CLUSTAL,BLC,PIR,PFAM)_JVSUFFIX boolean for adding jv - * suffix to file
  • - *
  • RECENT_URL list of recently retrieved URLs
  • - *
  • RECENT_FILE list of recently opened files
  • - *
  • USE_PROXY flag for whether a http proxy is to be used
  • - *
  • PROXY_SERVER the proxy
  • - *
  • PROXY_PORT
  • + * suffix to file + *
  • RECENT_URL list of recently retrieved URLs
  • + *
  • RECENT_FILE list of recently opened files
  • + *
  • USE_PROXY flag for whether a http proxy is to be used
  • + *
  • PROXY_SERVER the proxy
  • + *
  • PROXY_PORT
  • *
  • NOQUESTIONNAIRES true to prevent jalview from checking the questionnaire - * service
  • + * service *
  • QUESTIONNAIRE last questionnaire:responder id string from questionnaire - * service
  • - *
  • USAGESTATS (true) Enable google analytics tracker for collecting usage statistics
  • - *
  • DAS_LOCAL_SOURCE list of local das sources
  • - *
  • SHOW_OVERVIEW boolean for overview window display
  • - *
  • ANTI_ALIAS boolean for smooth fonts
  • - *
  • RIGHT_ALIGN_IDS boolean
  • - *
  • AUTO_CALC_CONSENSUS boolean for automatic recalculation of consensus - *
  • - *
  • PAD_GAPS boolean
  • - *
  • ID_ITALICS boolean
  • - *
  • SHOW_JV_SUFFIX
  • - *
  • WRAP_ALIGNMENT
  • + * service + *
  • USAGESTATS (true) Enable google analytics tracker for collecting usage + * statistics
  • + *
  • DAS_LOCAL_SOURCE list of local das sources
  • + *
  • SHOW_OVERVIEW boolean for overview window display
  • + *
  • ANTI_ALIAS boolean for smooth fonts
  • + *
  • RIGHT_ALIGN_IDS boolean
  • + *
  • AUTO_CALC_CONSENSUS boolean for automatic recalculation of consensus
  • + *
  • PAD_GAPS boolean
  • + *
  • ID_ITALICS boolean
  • + *
  • SHOW_JV_SUFFIX
  • + *
  • WRAP_ALIGNMENT
  • *
  • EPS_RENDERING (Prompt each time|Lineart|Text) default for EPS rendering - * style check
  • - *
  • SORT_ALIGNMENT (No sort|Id|Pairwise Identity)
  • + * style check + *
  • SORT_ALIGNMENT (No sort|Id|Pairwise Identity)
  • *
  • SEQUENCE_LINKS list of name|URL pairs for opening a url with - * $SEQUENCE_ID$
  • - *
  • DAS_REGISTRY_URL the registry to query
  • - *
  • DEFAULT_BROWSER for unix
  • - *
  • DAS_ACTIVE_SOURCE list of active sources
  • + * $SEQUENCE_ID$ + *
  • DAS_REGISTRY_URL the registry to query
  • + *
  • DEFAULT_BROWSER for unix
  • + *
  • DAS_ACTIVE_SOURCE list of active sources
  • *
  • SHOW_MEMUSAGE boolean show memory usage and warning indicator on desktop - * (false)
  • - *
  • SHOW_NPFEATS_TOOLTIP (true) show non-positional features in the Sequence ID tooltip
  • - *
  • SHOW_DBREFS_TOOLTIP (true) show Database Cross References in the Sequence ID tooltip
  • - *
  • SHOW_UNCONSERVED (false) only render unconserved residues - conserved displayed as '.'
  • - *
  • SORT_BY_TREE (false) sort the current alignment view according to the order of a newly displayed tree
  • + * (false) + *
  • SHOW_NPFEATS_TOOLTIP (true) show non-positional features in the Sequence + * ID tooltip
  • + *
  • SHOW_DBREFS_TOOLTIP (true) show Database Cross References in the Sequence + * ID tooltip
  • + *
  • SHOW_UNCONSERVED (false) only render unconserved residues - conserved + * displayed as '.'
  • + *
  • SORT_BY_TREE (false) sort the current alignment view according to the + * order of a newly displayed tree
  • * - *
  • + *
  • * * * @@ -162,7 +161,7 @@ public class Cache "System.err"); ap.setName("JalviewLogger"); org.apache.log4j.Logger.getRootLogger().addAppender(ap); // catch all for - // log output + // 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"); @@ -340,7 +339,7 @@ public class Cache * found * * @param key - * Name of property + * Name of property * * @return Property value */ @@ -384,9 +383,9 @@ public class Cache * Stores property in the file "HOME_DIR/.jalview_properties" * * @param key - * Name of object + * Name of object * @param obj - * String value of property + * String value of property * * @return String value of property */ @@ -499,6 +498,7 @@ public class Cache /** * generate Das1Sources from the local das source list + * * @return Vector of Das1Sources */ public static Vector getLocalDasSources() @@ -518,10 +518,14 @@ public class Cache { source.setUrl(source.getUrl().substring(9)); // this source also serves sequences as well as features - source.setCapabilities(new String[] { "sequence", "features"}); - } else { + source.setCapabilities(new String[] + { "sequence", "features" }); + } + else + { // default is that all user added sources serve features - source.setCapabilities(new String[] { "features"}); + source.setCapabilities(new String[] + { "features" }); } source.setNickname(token.substring(0, bar)); @@ -531,41 +535,111 @@ public class Cache } return localSources; } + /** - * GA tracker object - null if tracking not enabled. + * GA tracker object - actually JGoogleAnalyticsTracker null if tracking not enabled. */ - protected static JGoogleAnalyticsTracker tracker=null; + protected static Object tracker = null; + protected static Class trackerfocus = null; + protected static Class jgoogleanalyticstracker = null; + /** * Initialise the google tracker if it is not done already. */ public static void initGoogleTracker() { - if (tracker==null) - { - String vrs="No Version Accessible"; - try { - //Google analytics tracking code for Library Finder - tracker = new JGoogleAnalyticsTracker("Jalview Desktop", - (vrs=jalview.bin.Cache.getProperty("VERSION")+"_"+jalview.bin.Cache.getDefault("BUILD_DATE", "unknown")), - "UA-9060947-1"); - tracker.trackAsynchronously(new FocusPoint("Application Started.")); - } catch (RuntimeException e) + if (tracker == null) { - if (log!=null) { - log.debug("Caught runtime exception in googletracker init:",e); - } - // quietly return. - } - catch (Exception e) - { - // unexpected error - if (log!=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) { - log.warn("Failed to initialise GoogleTracker for Jalview Desktop with version "+vrs,e); - } else { - log.warn("Failed to initialise GoogleTracker for Jalview Desktop with version "+vrs,e); + log.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[] { "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." })}); + } catch (RuntimeException e) + { + re = e; + } catch (Exception e) + { + ex = e; + } catch (Error e) + { + err = e; + } + if (re != null || ex != null || err != null) + { + 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 + { + if (re != null) + { + System.err + .println("Debug: Caught runtime exception in googletracker init:" + + vrs); + re.printStackTrace(); + } + if (ex != null) + { + System.err + .println("Warning: Failed to initialise GoogleTracker for Jalview Desktop with version " + + vrs); + ex.printStackTrace(); + } + + if (err != null) + { + System.err + .println("ERROR: Whilst initing GoogleTracker for Jalview Desktop version " + + vrs); + err.printStackTrace(); + } + } + } + else + { + log.debug("Successfully initialised tracker."); + } } } } -- 1.7.10.2