package com.bootstrap.analytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import java.util.Arrays;
public final class TimingTracker {
private final Tracker tracker;
private final HitBuilders.TimingBuilder builder;
private String screenName;
private Dimension[] dimensions;
public TimingTracker(final Tracker tracker) {
this.tracker = tracker;
this.builder = new HitBuilders.TimingBuilder();
}
public TimingTracker screenName(final String screenName) {
this.screenName = screenName;
return this;
}
public TimingTracker category(final String category) {
builder.setCategory(category);
return this;
}
public TimingTracker variable(final String variable) {
builder.setVariable(variable);
return this;
}
public TimingTracker label(final String label) {
if (label != null) {
builder.setLabel(label);
}
return this;
}
public TimingTracker value(final long timeInMillis) {
builder.setValue(timeInMillis);
return this;
}
public TimingTracker 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 TimingTracker from(final Tracker tracker) {
return new TimingTracker(tracker);
}
}