package com.mercandalli.android.apps.files.analytics;
import android.content.Context;
import android.support.annotation.NonNull;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import com.mercandalli.android.apps.files.R;
import java.util.HashMap;
import java.util.Map;
/**
* Google Analytics
* A collection of Google Analytics trackers. Fetch the tracker you need using
* {@code AnalyticsTrackers.getInstance().get(...)}
* <p>
* This code was generated by Android Studio but can be safely modified by
* hand at this point.
* <p>
* TODO: Call {@link #initialize(Context)} from an entry point in your app
* before using this!
*/
public final class AnalyticsTrackers {
public enum Target {
APP,
// Add more trackers here if you need, and update the code in #get(Target) below
}
private static AnalyticsTrackers sInstance;
public static synchronized void initialize(final Context context) {
if (sInstance != null) {
throw new IllegalStateException("Extra call to initialize analytics trackers");
}
sInstance = new AnalyticsTrackers(context);
}
/**
* Instantiate the trackers.
*
* @return The instance.
*/
public static synchronized AnalyticsTrackers getInstance() {
if (sInstance == null) {
throw new IllegalStateException("Call initialize() before getInstance()");
}
return sInstance;
}
@NonNull
private final Context mContext;
@NonNull
private final Map<Target, Tracker> mTrackers = new HashMap<>();
/**
* Don't instantiate directly - use {@link #getInstance()} instead.
*/
private AnalyticsTrackers(@NonNull final Context context) {
mContext = context.getApplicationContext();
}
/**
* Get the Google analytics {@link Tracker}.
*
* @param target The AnalyticsTrackers.Target.APP.
* @return The {@link GoogleAnalytics} {@link Tracker}.
*/
public synchronized Tracker get(final Target target) {
if (!mTrackers.containsKey(target)) {
Tracker tracker;
switch (target) {
case APP:
tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
break;
default:
throw new IllegalArgumentException("Unhandled analytics target " + target);
}
mTrackers.put(target, tracker);
}
return mTrackers.get(target);
}
}