Package com.denormans.googleanalyticsgwt.api

Source Code of com.denormans.googleanalyticsgwt.api.GoogleAnalytics

package com.denormans.googleanalyticsgwt.api;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.ScriptElement;
import com.google.gwt.user.client.Window;

import java.util.HashMap;
import java.util.Map;

public final class GoogleAnalytics extends JavaScriptObject {
    private static final Map<String, GoogleAnalyticsTracker> trackersByID = new HashMap<String, GoogleAnalyticsTracker>();

    private static boolean IsAlreadyInjected = false;

    /* Must have zero-arg constructor */
    protected GoogleAnalytics() {
    }

    public static void init() {
      injectAnalytics();
    }

    private static boolean isSSL() {
      if (Window.Location.getProtocol().equals("https:")) {
        return true;
      }
      return false;
    }

    private static boolean injectAnalytics() {
      if (IsAlreadyInjected) {
        return true;
      }

      IsAlreadyInjected = true;

      boolean isAlreadyLoaded = get() != null;
      if (isAlreadyLoaded) {
        return true;
      }

      String src;
      if (isSSL()) {
        src = "https://ssl.google-analytics.com/ga.js";
      } else {
        src = "http://www.google-analytics.com/ga.js";
      }

      Document doc = Document.get();
      ScriptElement script = doc.createScriptElement();
      script.setSrc(src);
      script.setType("text/javascript");
      doc.getBody().appendChild(script);

      return false;
    }

    /**
     * Return the Google Analytics API
     *
     * @return The API if available, otherwise <tt>null</tt>
     */
    public static native GoogleAnalytics get() /*-{
      return $wnd._gat;
    }-*/;

    /**
     * Creates a page tracker with the given ID.
     *
     * @param trackerID The tracker ID
     *
     * @return A new page tracker with the given ID, if any
     */
    public synchronized static GoogleAnalyticsTracker getTracker(final String trackerID) {
      GoogleAnalyticsTracker tracker = trackersByID.get(trackerID);

      if(tracker == null) {
        final GoogleAnalytics googleAnalytics = get();
        if(googleAnalytics != null) {
          tracker = googleAnalytics.createTracker(trackerID);
          trackersByID.put(trackerID, tracker);
        }
      }

      return tracker;
    }

    /**
     * Creates a page tracker with the given ID.
     *
     * @param trackerID The tracker ID
     *
     * @return A new page tracker with the given ID, if any
     */
    public native GoogleAnalyticsTracker createTracker(final String trackerID) /*-{
      return this._getTracker(trackerID);
    }-*/;
TOP

Related Classes of com.denormans.googleanalyticsgwt.api.GoogleAnalytics

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.