1   package com.atlassian.maven.plugins.amps.util;
2   
3   import com.dmurph.tracking.AnalyticsConfigData;
4   import com.dmurph.tracking.JGoogleAnalyticsTracker;
5   
6   import org.apache.commons.lang.StringUtils;
7   import org.apache.maven.plugin.logging.Log;
8   
9   /**
10   * @since version
11   */
12  public class GoogleAmpsTracker
13  {
14      private static final String TRACKING_CODE = "UA-6032469-43";
15      private static final String AMPS = "AMPS";
16      private static final String EVENT_PREFIX = AMPS + ":";
17  
18      public static final String CREATE_PLUGIN = "Create Plugin";
19      public static final String DEBUG = "Debug";
20      public static final String RUN = "Run";
21      public static final String RUN_STANDALONE = "Run Standalone";
22      public static final String RELEASE = "Release";
23      public static final String CREATE_HOME_ZIP = "Create Home Zip";
24      public static final String CREATE_PLUGIN_MODULE = "Create Plugin Module";
25  
26      private final AnalyticsConfigData config;
27      private final JGoogleAnalyticsTracker tracker;
28      private final Log mavenLogger;
29      private String productId;
30  
31      public GoogleAmpsTracker(String productId, Log mavenLogger)
32      {
33          this(mavenLogger);
34          this.productId = productId;
35      }
36  
37      public GoogleAmpsTracker(Log mavenLogger)
38      {
39          this.mavenLogger = mavenLogger;
40          this.config = new AnalyticsConfigData(TRACKING_CODE);
41          this.tracker = new JGoogleAnalyticsTracker(config, JGoogleAnalyticsTracker.GoogleAnalyticsVersion.V_4_7_2);
42  
43          tracker.setDispatchMode(JGoogleAnalyticsTracker.DispatchMode.MULTI_THREAD);
44      }
45  
46      public void track(String eventName)
47      {
48          if (tracker.isEnabled())
49          {
50              mavenLogger.info("Sending event to Google Analytics: "  + getCategoryName() + " - " + eventName);
51              tracker.trackEvent(getCategoryName(),eventName);
52          }
53      }
54  
55      public void track(String eventName, String label)
56      {
57          if (tracker.isEnabled())
58          {
59              mavenLogger.info("Sending event to Google Analytics: "  + getCategoryName() + " - " + eventName + " - " + label);
60              tracker.trackEvent(getCategoryName(),eventName,label);
61          }
62      }
63  
64      private String getCategoryName()
65      {
66          if(StringUtils.isNotBlank(productId)) {
67              return EVENT_PREFIX + productId;
68          } else {
69              return AMPS;
70          }
71      }
72  
73      public String getProductId()
74      {
75          return productId;
76      }
77  
78      public void setProductId(String productId)
79      {
80          this.productId = productId;
81      }
82  
83      public void setEnabled(boolean enabled) {
84          tracker.setEnabled(enabled);
85      }
86  }