package com.eveningoutpost.dexdrip.Services; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.IBinder; import android.preference.PreferenceManager; import android.util.Log; import com.eveningoutpost.dexdrip.Models.BgReading; import com.eveningoutpost.dexdrip.Models.Calibration; import com.eveningoutpost.dexdrip.UtilityModels.BgSendQueue; import com.eveningoutpost.dexdrip.UtilityModels.CalibrationSendQueue; import com.eveningoutpost.dexdrip.UtilityModels.MongoSendTask; import com.eveningoutpost.dexdrip.UtilityModels.NightscoutUploader; import com.eveningoutpost.dexdrip.UtilityModels.RestCalls; import com.eveningoutpost.dexdrip.UtilityModels.SensorSendQueue; import java.util.ArrayList; import java.util.Calendar; import java.util.List; public class SyncService extends Service { int mStartMode; private Context mContext; private Boolean enableRESTUpload; private Boolean enableMongoUpload; private SharedPreferences prefs; @Override public void onCreate() { Log.w("SYNC SERVICE:", "STARTING SERVICE"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { attemptSend(); return START_STICKY; } @Override public void onDestroy() { setRetryTimer(); Log.w("SYNC SERVICE", "SERVICE STOPPED"); } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } public void attemptSend() { mContext = getApplicationContext(); prefs = PreferenceManager.getDefaultSharedPreferences(mContext); enableRESTUpload = prefs.getBoolean("cloud_storage_api_enable", false); enableMongoUpload = prefs.getBoolean("cloud_storage_mongodb_enable", false); if (enableRESTUpload || enableMongoUpload) { syncToMogoDb(); } if (false) { for (SensorSendQueue job : SensorSendQueue.queue()) { RestCalls.sendSensor(job); } for (CalibrationSendQueue job : CalibrationSendQueue.queue()) { RestCalls.sendCalibration(job); } for (BgSendQueue job : BgSendQueue.queue()) { RestCalls.sendBgReading(job); } } setRetryTimer(); } public void setRetryTimer() { Calendar calendar = Calendar.getInstance(); AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); alarm.set(alarm.RTC_WAKEUP, calendar.getTimeInMillis() + (1000 * 30 * 5), PendingIntent.getService(this, 0, new Intent(this, SyncService.class), 0)); } public void syncToMogoDb() { MongoSendTask task = new MongoSendTask(getApplicationContext()); task.execute(); } }