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
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 }