Class JGoogleAnalyticsTracker


  • public class JGoogleAnalyticsTracker
    extends java.lang.Object
    Common tracking calls are implemented as methods, but if you want to control what data to send, then use makeCustomRequest(AnalyticsRequestData). If you are making custom calls, the only requirements are: See the Google Troubleshooting Guide for more info on the tracking parameters (although it doesn't seem to be fully updated).

    The tracker can operate in three modes:

    • synchronous mode: The HTTP request is sent to GA immediately, before the track method returns. This may slow your application down if GA doesn't respond fast.
    • multi-thread mode: Each track method call creates a new short-lived thread that sends the HTTP request to GA in the background and terminates.
    • single-thread mode (the default): The track method stores the request in a FIFO and returns immediately. A single long-lived background thread consumes the FIFO content and sends the HTTP requests to GA.

    To halt the background thread safely, use the call stopBackgroundThread(long), where the parameter is the timeout to wait for any remaining queued tracking calls to be made. Keep in mind that if new tracking requests are made after the thread is stopped, they will just be stored in the queue, and will not be sent to GA until the thread is started again with startBackgroundThread() (This is assuming you are in single-threaded mode to begin with).

    • Field Detail

      • logger

        private static org.slf4j.Logger logger
      • asyncThreadGroup

        private static final java.lang.ThreadGroup asyncThreadGroup
      • asyncThreadsRunning

        private static long asyncThreadsRunning
      • proxy

        private static java.net.Proxy proxy
      • fifo

        private static java.util.LinkedList<java.lang.String> fifo
      • backgroundThread

        private static java.lang.Thread backgroundThread
      • backgroundThreadMayRun

        private static boolean backgroundThreadMayRun
      • enabled

        private boolean enabled
    • Method Detail

      • isSynchronous

        public boolean isSynchronous()
        Convenience method to check if the tracker is in synchronous mode.
        Returns:
      • isSingleThreaded

        public boolean isSingleThreaded()
        Convenience method to check if the tracker is in single-thread mode
        Returns:
      • isMultiThreaded

        public boolean isMultiThreaded()
        Convenience method to check if the tracker is in multi-thread mode
        Returns:
      • resetSession

        public void resetSession()
        Resets the session cookie.
      • setEnabled

        public void setEnabled​(boolean argEnabled)
        Sets if the api dispatches tracking requests.
        Parameters:
        argEnabled -
      • isEnabled

        public boolean isEnabled()
        If the api is dispatching tracking requests (default of true).
        Returns:
      • setProxy

        public static void setProxy​(java.net.Proxy argProxy)
        Define the proxy to use for all GA tracking requests.

        Call this static method early (before creating any tracking requests).

        Parameters:
        argProxy - The proxy to use
      • setProxy

        public static void setProxy​(java.lang.String proxyAddr)
        Define the proxy to use for all GA tracking requests.

        Call this static method early (before creating any tracking requests).

        Parameters:
        proxyAddr - "addr:port" of the proxy to use; may also be given as URL ("http://addr:port/").
      • completeBackgroundTasks

        public static void completeBackgroundTasks​(long timeoutMillis)
        Wait for background tasks to complete.

        This works in queued and asynchronous mode.

        Parameters:
        timeoutMillis - The maximum number of milliseconds to wait.
      • trackPageView

        public void trackPageView​(java.lang.String argPageURL,
                                  java.lang.String argPageTitle,
                                  java.lang.String argHostName)
        Tracks a page view.
        Parameters:
        argPageURL - required, Google won't track without it. Ex: "org/me/javaclass.java", or anything you want as the page url.
        argPageTitle - content title
        argHostName - the host name for the url
      • trackPageViewFromReferrer

        public void trackPageViewFromReferrer​(java.lang.String argPageURL,
                                              java.lang.String argPageTitle,
                                              java.lang.String argHostName,
                                              java.lang.String argReferrerSite,
                                              java.lang.String argReferrerPage)
        Tracks a page view.
        Parameters:
        argPageURL - required, Google won't track without it. Ex: "org/me/javaclass.java", or anything you want as the page url.
        argPageTitle - content title
        argHostName - the host name for the url
        argReferrerSite - site of the referrer. ex, www.dmurph.com
        argReferrerPage - page of the referrer. ex, /mypage.php
      • trackPageViewFromSearch

        public void trackPageViewFromSearch​(java.lang.String argPageURL,
                                            java.lang.String argPageTitle,
                                            java.lang.String argHostName,
                                            java.lang.String argSearchSource,
                                            java.lang.String argSearchKeywords)
        Tracks a page view.
        Parameters:
        argPageURL - required, Google won't track without it. Ex: "org/me/javaclass.java", or anything you want as the page url.
        argPageTitle - content title
        argHostName - the host name for the url
        argSearchSource - source of the search engine. ex: google
        argSearchKeywords - the keywords of the search. ex: java google analytics tracking utility
      • trackEvent

        public void trackEvent​(java.lang.String argCategory,
                               java.lang.String argAction)
        Tracks an event. To provide more info about the page, use makeCustomRequest(AnalyticsRequestData).
        Parameters:
        argCategory -
        argAction -
      • trackEvent

        public void trackEvent​(java.lang.String argCategory,
                               java.lang.String argAction,
                               java.lang.String argLabel)
        Tracks an event. To provide more info about the page, use makeCustomRequest(AnalyticsRequestData).
        Parameters:
        argCategory -
        argAction -
        argLabel -
      • trackEvent

        public void trackEvent​(java.lang.String argCategory,
                               java.lang.String argAction,
                               java.lang.String argLabel,
                               java.lang.Integer argValue)
        Tracks an event. To provide more info about the page, use makeCustomRequest(AnalyticsRequestData).
        Parameters:
        argCategory - required
        argAction - required
        argLabel - optional
        argValue - optional
      • makeCustomRequest

        public void makeCustomRequest​(AnalyticsRequestData argData)
        Makes a custom tracking request based from the given data.
        Parameters:
        argData -
        Throws:
        java.lang.NullPointerException - if argData is null or if the URL builder is null
      • dispatchRequest

        private static void dispatchRequest​(java.lang.String argURL)
      • createBuilder

        private void createBuilder()
      • startBackgroundThread

        private static void startBackgroundThread()
        If the background thread for 'queued' mode is not running, start it now.
      • stopBackgroundThread

        public static void stopBackgroundThread​(long timeoutMillis)
        Stop the long-lived background thread.

        This method is needed for debugging purposes only. Calling it in an application is not really required: The background thread will terminate automatically when the application exits.

        Parameters:
        timeoutMillis - If nonzero, wait for thread completion before returning.