package com.jdroid.android.google.analytics; import android.support.annotation.WorkerThread; import com.jdroid.android.analytics.AnalyticsTracker; import com.jdroid.android.application.AbstractAppModule; import com.jdroid.android.application.AbstractApplication; import com.jdroid.java.collections.Lists; import java.util.List; public class GoogleAnalyticsAppModule extends AbstractAppModule { public static final String MODULE_NAME = GoogleAnalyticsAppModule.class.getName(); public static GoogleAnalyticsAppModule get() { return (GoogleAnalyticsAppModule)AbstractApplication.get().getAppModule(MODULE_NAME); } private GoogleAnalyticsHelper googleAnalyticsHelper; private GoogleAnalyticsAppContext googleAnalyticsAppContext; public GoogleAnalyticsAppModule() { googleAnalyticsAppContext = createGoogleAnalyticsAppContext(); } protected GoogleAnalyticsAppContext createGoogleAnalyticsAppContext() { return new GoogleAnalyticsAppContext(); } public GoogleAnalyticsAppContext getGoogleAnalyticsAppContext() { return googleAnalyticsAppContext; } @WorkerThread public synchronized GoogleAnalyticsHelper getGoogleAnalyticsHelper() { if (googleAnalyticsHelper == null) { googleAnalyticsHelper = createGoogleAnalyticsHelper(); } return googleAnalyticsHelper; } protected GoogleAnalyticsHelper createGoogleAnalyticsHelper() { return new GoogleAnalyticsHelper(); } @Override public List<? extends AnalyticsTracker> getAnalyticsTrackers() { return googleAnalyticsAppContext.isGoogleAnalyticsEnabled() ? Lists.newArrayList(createGoogleAnalyticsTracker()) : Lists.<AnalyticsTracker>newArrayList(); } protected AnalyticsTracker createGoogleAnalyticsTracker() { return new GoogleAnalyticsTracker(); } }