package com.jdroid.java.analytics; import com.jdroid.java.collections.Lists; import com.jdroid.java.utils.LoggerUtils; import org.slf4j.Logger; import java.util.List; public class BaseAnalyticsSender<T extends BaseAnalyticsTracker> implements BaseAnalyticsTracker { private static final Logger LOGGER = LoggerUtils.getLogger(BaseAnalyticsSender.class); private List<T> trackers = Lists.newArrayList(); @SafeVarargs public BaseAnalyticsSender(T... trackers) { this(Lists.newArrayList(trackers)); } public BaseAnalyticsSender(List<T> trackers) { for (T tracker : trackers) { if (tracker.isEnabled()) { this.trackers.add(tracker); } } } @Override public Boolean isEnabled() { return null; } protected List<T> getTrackers() { return trackers; } public void addTracker(T tracker) { trackers.add(tracker); } public abstract class TrackerRunnable implements Runnable { @Override public void run() { for (T tracker : getTrackers()) { try { if (tracker.isEnabled()) { track(tracker); } } catch (Exception e) { LoggerUtils.logHandledException(LOGGER, e); } } } protected abstract void track(T tracker); } }