package com.bootstrap.analytics; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.google.android.gms.analytics.ecommerce.Product; import com.google.android.gms.analytics.ecommerce.ProductAction; import java.util.Arrays; public final class EventTracker { private final Tracker tracker; private final HitBuilders.EventBuilder builder; private String screenName; private Dimension[] dimensions; private EventTracker(final Tracker tracker) { this.tracker = tracker; this.builder = new HitBuilders.EventBuilder(); } public EventTracker screenName(final String screenName) { this.screenName = screenName; return this; } public EventTracker category(final String category) { builder.setCategory(category); return this; } public EventTracker action(final String action) { builder.setAction(action); return this; } public EventTracker label(final String label) { if (label != null) { builder.setLabel(label); } return this; } public EventTracker value(final long value) { builder.setValue(value); return this; } public EventTracker addProduct(final Product product) { builder.addProduct(product); return this; } public EventTracker productAction(final ProductAction productAction) { builder.setProductAction(productAction); return this; } public EventTracker customDimension(final Dimension dimension) { if (dimensions == null) { dimensions = new Dimension[1]; dimensions[0] = dimension; } else { dimensions = Arrays.copyOf(dimensions, dimensions.length + 1); dimensions[dimensions.length - 1] = dimension; } return this; } public void track() { if (dimensions != null && dimensions.length > 0) { for (Dimension dimension : dimensions) { builder.setCustomDimension(dimension.index, dimension.value); } } tracker.setScreenName(screenName); tracker.send(builder.build()); tracker.setScreenName(null); } protected static EventTracker from(final Tracker tracker) { return new EventTracker(tracker); } }