package com.aracem.sample.tracking;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.aracem.sample.tracking.trackingservice.MixpanelTrackingHelper;
import com.aracem.sample.tracking.trackingservice.GoogleAnalyticsTrackingHelper;
import com.aracem.sample.tracking.trackingservice.FlurryTrackingHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Master {@link TrackingHelper} that encapsulates all tracking implementations and helps you call all the
* tracking libraries without doing nothing.
*
* Please use this implementation instead of other more specific.
*/
public class MasterTrackingHelper implements TrackingHelper {
private List mTrackersList = new ArrayList<>();
public MasterTrackingHelper() {
mTrackersList.add(new MixpanelTrackingHelper());
mTrackersList.add(new GoogleAnalyticsTrackingHelper());
mTrackersList.add(new FlurryTrackingHelper());
}
@Override
public void initializeTrackingInApplication(Application application) {
for (TrackingHelper tracker : mTrackersList) {
tracker.initializeTrackingInApplication(application);
}
}
@Override
public void onFinalizeAppTracking(Activity activity) {
for (TrackingHelper tracker : mTrackersList) {
tracker.onFinalizeAppTracking(activity);
}
}
@Override
public void onStartPage(Context context) {
for (TrackingHelper tracker : mTrackersList) {
tracker.onStartPage(context);
}
}
@Override
public void onResumePage(Context context) {
for (TrackingHelper tracker : mTrackersList) {
tracker.onResumePage(context);
}
}
@Override
public void onPausePage(Context context) {
for (TrackingHelper tracker : mTrackersList) {
tracker.onPausePage(context);
}
}
@Override
public void trackEvent(@NonNull String eventName, @Nullable Map eventInfo) {
for (TrackingHelper tracker : mTrackersList) {
tracker.trackEvent(eventName, eventInfo);
}
}
@Override
public void trackVisitEvent(Context context, VisitEventInfo eventInfo) {
for (TrackingHelper tracker : mTrackersList) {
tracker.trackVisitEvent(context, eventInfo);
}
}
@Override
public void trackClickEvent(Context context, ClickEventInfo eventInfo) {
for (TrackingHelper tracker : mTrackersList) {
tracker.trackClickEvent(context, eventInfo);
}
}
@Override
public void identifyUser(@Nullable User user) {
for (TrackingHelper tracker : mTrackersList) {
tracker.identifyUser(user);
}
}
@Override
public void resetUser() {
for (TrackingHelper tracker : mTrackersList) {
tracker.resetUser();
}
}
@Override
public void updateSuperproperties(@Nullable User user) {
for (TrackingHelper tracker : mTrackersList) {
tracker.updateSuperproperties(user);
}
}
}