Merge pull request #2134 from andyrozman/bug_2080_rewind_via_pump
Bug 2080 rewind via pump
This commit is contained in:
commit
68b0b25548
|
@ -250,4 +250,29 @@ public class DateTimeUtil {
|
||||||
|
|
||||||
return minutes.getMinutes();
|
return minutes.getMinutes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static long getMillisFromATDWithAddedMinutes(long atd, int minutesDiff) {
|
||||||
|
GregorianCalendar oldestEntryTime = DateTimeUtil.toGregorianCalendar(atd);
|
||||||
|
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||||
|
|
||||||
|
return oldestEntryTime.getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static long getATDWithAddedMinutes(long atd, int minutesDiff) {
|
||||||
|
GregorianCalendar oldestEntryTime = DateTimeUtil.toGregorianCalendar(atd);
|
||||||
|
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||||
|
|
||||||
|
return oldestEntryTime.getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static long getATDWithAddedMinutes(GregorianCalendar oldestEntryTime, int minutesDiff) {
|
||||||
|
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||||
|
|
||||||
|
return toATechDate(oldestEntryTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import com.google.gson.GsonBuilder;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.joda.time.LocalDateTime;
|
import org.joda.time.LocalDateTime;
|
||||||
import org.joda.time.Minutes;
|
import org.joda.time.Minutes;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -20,6 +22,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
|
import info.nightscout.androidaps.db.CareportalEvent;
|
||||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||||
import info.nightscout.androidaps.db.DbObjectBase;
|
import info.nightscout.androidaps.db.DbObjectBase;
|
||||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||||
|
@ -27,6 +30,7 @@ import info.nightscout.androidaps.db.Source;
|
||||||
import info.nightscout.androidaps.db.TDD;
|
import info.nightscout.androidaps.db.TDD;
|
||||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||||
import info.nightscout.androidaps.logging.L;
|
import info.nightscout.androidaps.logging.L;
|
||||||
|
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||||
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
|
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
|
||||||
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
|
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
|
||||||
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
|
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
|
||||||
|
@ -46,6 +50,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
|
||||||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
||||||
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
||||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||||
|
import info.nightscout.androidaps.utils.DateUtil;
|
||||||
import info.nightscout.androidaps.utils.SP;
|
import info.nightscout.androidaps.utils.SP;
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,6 +64,7 @@ import info.nightscout.androidaps.utils.SP;
|
||||||
// all times that time changed (TZ, DST, etc.). Data needs to be returned in batches (time_changed batches, so that we can
|
// all times that time changed (TZ, DST, etc.). Data needs to be returned in batches (time_changed batches, so that we can
|
||||||
// handle it. It would help to assign sort_ids to items (from oldest (1) to newest (x)
|
// handle it. It would help to assign sort_ids to items (from oldest (1) to newest (x)
|
||||||
|
|
||||||
|
// All things marked with "TODO: Fix db code" needs to be updated in new 2.5 database code
|
||||||
|
|
||||||
public class MedtronicHistoryData {
|
public class MedtronicHistoryData {
|
||||||
|
|
||||||
|
@ -382,6 +388,22 @@ public class MedtronicHistoryData {
|
||||||
*/
|
*/
|
||||||
public void processNewHistoryData() {
|
public void processNewHistoryData() {
|
||||||
|
|
||||||
|
// TODO: Fix db code
|
||||||
|
// Prime (for reseting autosense)
|
||||||
|
List<PumpHistoryEntry> primeRecords = getFilteredItems(PumpHistoryEntryType.Prime);
|
||||||
|
|
||||||
|
if (isLogEnabled())
|
||||||
|
LOG.debug("ProcessHistoryData: Prime [count={}, items={}]", primeRecords.size(), gson.toJson(primeRecords));
|
||||||
|
|
||||||
|
if (isCollectionNotEmpty(primeRecords)) {
|
||||||
|
try {
|
||||||
|
processPrime(primeRecords);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
LOG.error("ProcessHistoryData: Error processing Prime entries: " + ex.getMessage(), ex);
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TDD
|
// TDD
|
||||||
List<PumpHistoryEntry> tdds = getFilteredItems(PumpHistoryEntryType.EndResultTotals, getTDDType());
|
List<PumpHistoryEntry> tdds = getFilteredItems(PumpHistoryEntryType.EndResultTotals, getTDDType());
|
||||||
|
|
||||||
|
@ -454,6 +476,49 @@ public class MedtronicHistoryData {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processPrime(List<PumpHistoryEntry> primeRecords) {
|
||||||
|
|
||||||
|
long maxAllowedTimeInPast = DateTimeUtil.getATDWithAddedMinutes(new GregorianCalendar(), -30);
|
||||||
|
|
||||||
|
long lastPrimeRecord = 0L;
|
||||||
|
|
||||||
|
for (PumpHistoryEntry primeRecord : primeRecords) {
|
||||||
|
|
||||||
|
if (primeRecord.atechDateTime > maxAllowedTimeInPast) {
|
||||||
|
if (lastPrimeRecord < primeRecord.atechDateTime) {
|
||||||
|
lastPrimeRecord = primeRecord.atechDateTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lastPrimeRecord != 0L) {
|
||||||
|
long lastPrimeFromAAPS = SP.getLong(MedtronicConst.Statistics.LastPrime, 0L);
|
||||||
|
|
||||||
|
if (lastPrimeRecord != lastPrimeFromAAPS) {
|
||||||
|
uploadCareportalEvent(DateTimeUtil.toMillisFromATD(lastPrimeRecord), CareportalEvent.SITECHANGE);
|
||||||
|
|
||||||
|
SP.putLong(MedtronicConst.Statistics.LastPrime, lastPrimeRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void uploadCareportalEvent(long date, String event) {
|
||||||
|
if (MainApp.getDbHelper().getCareportalEventFromTimestamp(date) != null)
|
||||||
|
return;
|
||||||
|
try {
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
String enteredBy = SP.getString("careportal_enteredby", "");
|
||||||
|
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
||||||
|
data.put("created_at", DateUtil.toISOString(date));
|
||||||
|
data.put("eventType", event);
|
||||||
|
NSUpload.uploadCareportalEntryToNS(data);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void processTDDs(List<PumpHistoryEntry> tddsIn) {
|
private void processTDDs(List<PumpHistoryEntry> tddsIn) {
|
||||||
|
|
||||||
List<PumpHistoryEntry> tdds = filterTDDs(tddsIn);
|
List<PumpHistoryEntry> tdds = filterTDDs(tddsIn);
|
||||||
|
@ -686,7 +751,6 @@ public class MedtronicHistoryData {
|
||||||
*
|
*
|
||||||
* @param treatment Pump Entry
|
* @param treatment Pump Entry
|
||||||
* @param entriesFromHistory entries from history
|
* @param entriesFromHistory entries from history
|
||||||
*
|
|
||||||
* @return DbObject from AAPS (if found)
|
* @return DbObject from AAPS (if found)
|
||||||
*/
|
*/
|
||||||
private DbObjectBase findDbEntry(PumpHistoryEntry treatment, List<? extends DbObjectBase> entriesFromHistory) {
|
private DbObjectBase findDbEntry(PumpHistoryEntry treatment, List<? extends DbObjectBase> entriesFromHistory) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class MedtronicConst {
|
||||||
public static final String StandardBoluses = StatsPrefix + "std_boluses_delivered";
|
public static final String StandardBoluses = StatsPrefix + "std_boluses_delivered";
|
||||||
public static final String SMBBoluses = StatsPrefix + "smb_boluses_delivered";
|
public static final String SMBBoluses = StatsPrefix + "smb_boluses_delivered";
|
||||||
public static final String LastPumpHistoryEntry = StatsPrefix + "pump_history_entry";
|
public static final String LastPumpHistoryEntry = StatsPrefix + "pump_history_entry";
|
||||||
|
public static final String LastPrime = StatsPrefix + "last_sent_prime";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue