package pl.edu.agh.android.sender.strategy.impl; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import pl.edu.agh.android.components.LocationDataSource; import pl.edu.agh.android.sender.DataSender; import pl.edu.agh.android.sender.strategy.SendingStrategy; public class DumbSendingStrategy implements SendingStrategy, Runnable { public static final long DEFAULT_SEDING_INTERVAL = 10000L; private DataSender sender; private LocationDataSource dataSource; private ScheduledExecutorService executor; private Future<?> taskFuture = null; private long interval; public DumbSendingStrategy(DataSender sender, LocationDataSource dataSource, long interval) { this.sender = sender; this.dataSource = dataSource; this.interval = interval; executor = Executors.newSingleThreadScheduledExecutor(); } public void activate() { if(taskFuture == null) { taskFuture = executor.scheduleAtFixedRate(this, 0, interval, TimeUnit.MILLISECONDS); } } public void deactivate() { if(taskFuture != null) { taskFuture.cancel(false); taskFuture = null; } } public void run() { if(dataSource.getLocationData().size() > 0) { sender.sendAllData(); } } }