package co.smartreceipts.android.analytics;
import android.content.Context;
import android.support.annotation.NonNull;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.google.common.base.Preconditions;
import java.util.List;
import javax.inject.Inject;
import co.smartreceipts.android.R;
import co.smartreceipts.android.analytics.events.DataPoint;
import co.smartreceipts.android.analytics.events.Event;
import co.smartreceipts.android.utils.log.Logger;
public class GoogleAnalytics implements Analytics {
private final Tracker mTracker;
@Inject
public GoogleAnalytics(Context context) {
this(com.google.android.gms.analytics.GoogleAnalytics.getInstance(context).newTracker(R.xml.analytics));
}
private GoogleAnalytics(@NonNull Tracker tracker) {
mTracker = Preconditions.checkNotNull(tracker);
}
@Override
public synchronized void record(@NonNull Event event) {
try {
mTracker.send(new HitBuilders.EventBuilder(event.category().name(), event.name().name()).setLabel(getLabelString(event.getDataPoints())).build());
} catch (Exception e) {
Logger.error(this, "Swallowing GA Exception", e);
}
}
@NonNull
private String getLabelString(@NonNull List<DataPoint> dataPoints) {
if (!dataPoints.isEmpty()) {
final StringBuilder stringBuilder = new StringBuilder("{");
final String separatorChar = ",";
String currentSeparator = "";
for (int i = 0; i < dataPoints.size(); i++) {
stringBuilder.append(currentSeparator).append(dataPoints.get(i).toString());
currentSeparator = separatorChar;
}
return stringBuilder.append("}").toString();
} else {
return "";
}
}
}