- added functionality to map TBRs to Pump History Records (similar to Bolus)
- changed log size to 5 MB (as it was before)
This commit is contained in:
parent
b5da57e20f
commit
cff20f78c8
10 changed files with 283 additions and 241 deletions
|
@ -105,14 +105,14 @@ android {
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
versionCode 1500
|
versionCode 1500
|
||||||
// dev_version: 2.3.1-dev
|
// dev_version: 2.3.1-dev
|
||||||
version "medtronic-0.9.4-SNAPSHOT"
|
version "medtronic-0.9.6-SNAPSHOT"
|
||||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||||
buildConfigField "String", "HEAD", '"' + generateGitBuild() + '"'
|
buildConfigField "String", "HEAD", '"' + generateGitBuild() + '"'
|
||||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||||
buildConfigField "String", "DEV_VERSION", '"2.3.1-dev"'
|
buildConfigField "String", "DEV_VERSION", '"2.3.1-dev"'
|
||||||
buildConfigField "String", "DEV_DATE", '"29.4.2019"'
|
buildConfigField "String", "DEV_DATE", '"2.5.2019"'
|
||||||
buildConfigField "String", "DEV_CHECKIN", '"ea60b6ceef30ccf32566bf7c6caa4f1f33b42f41"'
|
buildConfigField "String", "DEV_CHECKIN", '"75d469a9db4bad6c619de8d36006e935c12b6ff1"'
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
// if you change minSdkVersion to less than 11, you need to change executeTask for wear
|
// if you change minSdkVersion to less than 11, you need to change executeTask for wear
|
||||||
|
|
||||||
|
@ -276,6 +276,8 @@ dependencies {
|
||||||
testImplementation "com.google.truth:truth:0.39"
|
testImplementation "com.google.truth:truth:0.39"
|
||||||
testImplementation 'org.robolectric:robolectric:3.8'
|
testImplementation 'org.robolectric:robolectric:3.8'
|
||||||
testImplementation "org.skyscreamer:jsonassert:1.5.0"
|
testImplementation "org.skyscreamer:jsonassert:1.5.0"
|
||||||
|
testImplementation "org.hamcrest:hamcrest-all:1.3"
|
||||||
|
testImplementation "uk.org.lidalia:slf4j-test:1.2.0"
|
||||||
|
|
||||||
androidTestImplementation "org.mockito:mockito-core:2.8.47"
|
androidTestImplementation "org.mockito:mockito-core:2.8.47"
|
||||||
androidTestImplementation "com.google.dexmaker:dexmaker:${dexmakerVersion}"
|
androidTestImplementation "com.google.dexmaker:dexmaker:${dexmakerVersion}"
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
<timeBasedFileNamingAndTriggeringPolicy
|
<timeBasedFileNamingAndTriggeringPolicy
|
||||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
<maxFileSize>500KB</maxFileSize>
|
<maxFileSize>5MB</maxFileSize>
|
||||||
</timeBasedFileNamingAndTriggeringPolicy>
|
</timeBasedFileNamingAndTriggeringPolicy>
|
||||||
<!-- keep 30 days' worth of history -->
|
<!-- keep 30 days' worth of history -->
|
||||||
<maxHistory>240</maxHistory>
|
<maxHistory>240</maxHistory>
|
||||||
|
|
|
@ -454,6 +454,14 @@ public class MainApp extends Application {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isEngineeringMode() {
|
||||||
|
if (!Config.APS)
|
||||||
|
return true;
|
||||||
|
return engineeringMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean isEngineeringModeOrRelease() {
|
public static boolean isEngineeringModeOrRelease() {
|
||||||
if (!Config.APS)
|
if (!Config.APS)
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -876,6 +876,31 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
log.debug("TEMPBASAL: Already exists from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
|
log.debug("TEMPBASAL: Already exists from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// search by date (in case its standard record that has become pump record)
|
||||||
|
QueryBuilder<TemporaryBasal, Long> queryBuilder2 = getDaoTemporaryBasal().queryBuilder();
|
||||||
|
Where where2 = queryBuilder2.where();
|
||||||
|
where2.eq("date", tempBasal.date);
|
||||||
|
PreparedQuery<TemporaryBasal> preparedQuery2 = queryBuilder2.prepare();
|
||||||
|
List<TemporaryBasal> trList2 = getDaoTemporaryBasal().query(preparedQuery2);
|
||||||
|
|
||||||
|
if (trList2.size() > 0) {
|
||||||
|
old = trList2.get(0);
|
||||||
|
|
||||||
|
old.copyFromPump(tempBasal);
|
||||||
|
old.source = Source.PUMP;
|
||||||
|
|
||||||
|
if (L.isEnabled(L.DATABASE))
|
||||||
|
log.debug("TEMPBASAL: Updated record with Pump Data : " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
|
||||||
|
|
||||||
|
getDaoTemporaryBasal().update(old);
|
||||||
|
|
||||||
|
updateEarliestDataChange(tempBasal.date);
|
||||||
|
scheduleTemporaryBasalChange();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
getDaoTemporaryBasal().create(tempBasal);
|
getDaoTemporaryBasal().create(tempBasal);
|
||||||
if (L.isEnabled(L.DATABASE))
|
if (L.isEnabled(L.DATABASE))
|
||||||
log.debug("TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
|
log.debug("TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package info.nightscout.androidaps.db;
|
||||||
|
|
||||||
|
public interface DbObjectBase {
|
||||||
|
|
||||||
|
long getDate();
|
||||||
|
|
||||||
|
long getPumpId();
|
||||||
|
|
||||||
|
}
|
|
@ -27,7 +27,7 @@ import info.nightscout.androidaps.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@DatabaseTable(tableName = DatabaseHelper.DATABASE_TEMPORARYBASALS)
|
@DatabaseTable(tableName = DatabaseHelper.DATABASE_TEMPORARYBASALS)
|
||||||
public class TemporaryBasal implements Interval {
|
public class TemporaryBasal implements Interval, DbObjectBase {
|
||||||
private static Logger log = LoggerFactory.getLogger(L.DATABASE);
|
private static Logger log = LoggerFactory.getLogger(L.DATABASE);
|
||||||
|
|
||||||
@DatabaseField(id = true)
|
@DatabaseField(id = true)
|
||||||
|
@ -156,6 +156,14 @@ public class TemporaryBasal implements Interval {
|
||||||
netExtendedRate = t.netExtendedRate;
|
netExtendedRate = t.netExtendedRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void copyFromPump(TemporaryBasal t) {
|
||||||
|
durationInMinutes = t.durationInMinutes;
|
||||||
|
isAbsolute = t.isAbsolute;
|
||||||
|
percentRate = t.percentRate;
|
||||||
|
absoluteRate = t.absoluteRate;
|
||||||
|
pumpId = t.pumpId;
|
||||||
|
}
|
||||||
|
|
||||||
// -------- Interval interface ---------
|
// -------- Interval interface ---------
|
||||||
|
|
||||||
Long cuttedEnd = null;
|
Long cuttedEnd = null;
|
||||||
|
@ -416,4 +424,13 @@ public class TemporaryBasal implements Interval {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getDate() {
|
||||||
|
return this.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getPumpId() {
|
||||||
|
return this.pumpId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@ public enum PumpHistoryEntryType // implements CodeEnum
|
||||||
// V4
|
// V4
|
||||||
// Andy58(0x58, "Unknown", 13, 5, 0), // TO DO is this one really there ???
|
// Andy58(0x58, "Unknown", 13, 5, 0), // TO DO is this one really there ???
|
||||||
|
|
||||||
BolusWizardChange(0x5a, "Bolus Wizard Change", PumpHistoryEntryGroup.Configuration, 2, 5, 117), // V2: 522+[B=143]
|
BolusWizardChange(0x5a, "Bolus Wizard Change", PumpHistoryEntryGroup.Configuration, 2, 5, 117), // V2: 522+[B=143] // V6 124/144
|
||||||
BolusWizardBolusEstimate(0x5b, "Bolus Wizard Estimate", PumpHistoryEntryGroup.Configuration, 2, 5, 13), // 15 //
|
BolusWizardBolusEstimate(0x5b, "Bolus Wizard Estimate", PumpHistoryEntryGroup.Configuration, 2, 5, 13), // 15 //
|
||||||
UnabsorbedInsulin(0x5c, "Unabsorbed Insulin", PumpHistoryEntryGroup.Statistic, 5, 0, 0), // head[1] -> body
|
UnabsorbedInsulin(0x5c, "Unabsorbed Insulin", PumpHistoryEntryGroup.Statistic, 5, 0, 0), // head[1] -> body
|
||||||
// length
|
// length
|
||||||
|
@ -220,7 +220,7 @@ public enum PumpHistoryEntryType // implements CodeEnum
|
||||||
EndResultTotals.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 3));
|
EndResultTotals.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 3));
|
||||||
Bolus.addSpecialRuleHead(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 8));
|
Bolus.addSpecialRuleHead(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 8));
|
||||||
// BolusWizardChange.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_522andHigher, 143));
|
// BolusWizardChange.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_522andHigher, 143));
|
||||||
BolusWizardChange.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 143)); // V5:
|
BolusWizardChange.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 137)); // V5:
|
||||||
// 522
|
// 522
|
||||||
// has
|
// has
|
||||||
// old
|
// old
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.medtronic.data;
|
package info.nightscout.androidaps.plugins.pump.medtronic.data;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.util.CollectionUtils;
|
||||||
|
import com.google.common.base.Splitter;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
import org.joda.time.LocalDateTime;
|
||||||
|
import org.joda.time.Minutes;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
@ -8,20 +18,14 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.joda.time.LocalDateTime;
|
|
||||||
import org.joda.time.Minutes;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.google.common.base.Splitter;
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
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.DatabaseHelper;
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||||
|
import info.nightscout.androidaps.db.DbObjectBase;
|
||||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||||
import info.nightscout.androidaps.db.Source;
|
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.logging.L;
|
import info.nightscout.androidaps.logging.L;
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.DetailedBolusInfoStorage;
|
import info.nightscout.androidaps.plugins.configBuilder.DetailedBolusInfoStorage;
|
||||||
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
|
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
|
||||||
|
@ -34,6 +38,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.BasalProfile;
|
||||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.BolusDTO;
|
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.BolusDTO;
|
||||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.ClockDTO;
|
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.ClockDTO;
|
||||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.DailyTotalsDTO;
|
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.DailyTotalsDTO;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.TempBasalPair;
|
||||||
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
|
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
|
||||||
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;
|
||||||
|
@ -134,7 +139,6 @@ public class MedtronicHistoryData {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -221,7 +225,6 @@ public class MedtronicHistoryData {
|
||||||
PumpHistoryEntryType.ChangeMaxBolus, //
|
PumpHistoryEntryType.ChangeMaxBolus, //
|
||||||
PumpHistoryEntryType.ChangeMaxBasal, //
|
PumpHistoryEntryType.ChangeMaxBasal, //
|
||||||
PumpHistoryEntryType.ChangeTempBasalType);
|
PumpHistoryEntryType.ChangeTempBasalType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -340,7 +343,7 @@ public class MedtronicHistoryData {
|
||||||
LOG.debug("ProcessHistoryData: Bolus [count={}, items={}]", treatments.size(), gsonPretty.toJson(treatments));
|
LOG.debug("ProcessHistoryData: Bolus [count={}, items={}]", treatments.size(), gsonPretty.toJson(treatments));
|
||||||
|
|
||||||
if (treatments.size() > 0) {
|
if (treatments.size() > 0) {
|
||||||
processBoluses(treatments);
|
processEntries(treatments, ProcessHistoryRecord.Bolus);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TBR
|
// TBR
|
||||||
|
@ -349,7 +352,7 @@ public class MedtronicHistoryData {
|
||||||
LOG.debug("ProcessHistoryData: TBRs [count={}, items={}]", tbrs.size(), gsonPretty.toJson(tbrs));
|
LOG.debug("ProcessHistoryData: TBRs [count={}, items={}]", tbrs.size(), gsonPretty.toJson(tbrs));
|
||||||
|
|
||||||
if (tbrs.size() > 0) {
|
if (tbrs.size() > 0) {
|
||||||
// processTBRs(tbrs);
|
processEntries(tbrs, ProcessHistoryRecord.TBR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Suspends (for suspends/resume, fakeTBR)
|
// Suspends (for suspends/resume, fakeTBR)
|
||||||
|
@ -408,169 +411,69 @@ public class MedtronicHistoryData {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO needs to be implemented
|
private enum ProcessHistoryRecord {
|
||||||
public void processBoluses(List<PumpHistoryEntry> boluses) {
|
Bolus("Bolus"),
|
||||||
|
TBR("TBR"),
|
||||||
|
Suspend("Suspend");
|
||||||
|
|
||||||
int dateDifference = getOldestDateDifference(boluses);
|
private String description;
|
||||||
|
|
||||||
List<Treatment> treatmentsFromHistory = TreatmentsPlugin.getPlugin().getTreatmentsFromHistoryXMinutesAgo(
|
ProcessHistoryRecord(String desc) {
|
||||||
dateDifference);
|
this.description = desc;
|
||||||
|
}
|
||||||
|
|
||||||
LOG.debug("Boluses (before filter): {}, FromDb={}", gsonPretty.toJson(boluses),
|
public String getDescription() {
|
||||||
gsonPretty.toJson(treatmentsFromHistory));
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
filterOutAlreadyAddedEntries(boluses, treatmentsFromHistory);
|
}
|
||||||
|
|
||||||
if (boluses.isEmpty())
|
|
||||||
|
private void processEntries(List<PumpHistoryEntry> entryList, ProcessHistoryRecord processHistoryRecord) {
|
||||||
|
|
||||||
|
int dateDifference = getOldestDateDifference(entryList);
|
||||||
|
|
||||||
|
List<? extends DbObjectBase> entriesFromHistory = getDatabaseEntries(dateDifference, processHistoryRecord);
|
||||||
|
|
||||||
|
LOG.debug(processHistoryRecord.getDescription() + " List (before filter): {}, FromDb={}", gsonPretty.toJson(entryList),
|
||||||
|
gsonPretty.toJson(entriesFromHistory));
|
||||||
|
|
||||||
|
filterOutAlreadyAddedEntries(entryList, entriesFromHistory);
|
||||||
|
|
||||||
|
if (entryList.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LOG.debug("Boluses (after filter): {}, FromDb={}", gsonPretty.toJson(boluses),
|
LOG.debug(processHistoryRecord.getDescription() + " List (after filter): {}, FromDb={}", gsonPretty.toJson(entryList),
|
||||||
gsonPretty.toJson(treatmentsFromHistory));
|
gsonPretty.toJson(entriesFromHistory));
|
||||||
|
|
||||||
if (treatmentsFromHistory.isEmpty()) {
|
if (isCollectionEmpty(entriesFromHistory)) {
|
||||||
for (PumpHistoryEntry treatment : boluses) {
|
for (PumpHistoryEntry treatment : entryList) {
|
||||||
LOG.debug("Add Bolus (no treatments): " + treatment);
|
LOG.debug("Add " + processHistoryRecord.getDescription() + " (no db entries): " + treatment);
|
||||||
addBolus(treatment, null);
|
addEntry(treatment, null, processHistoryRecord);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (PumpHistoryEntry treatment : boluses) {
|
for (PumpHistoryEntry treatment : entryList) {
|
||||||
tryToGetByLocalTime(treatment.atechDateTime);
|
DbObjectBase treatmentDb = findDbEntry(treatment, entriesFromHistory);
|
||||||
Treatment treatmentDb = findTreatment(treatment, treatmentsFromHistory, dateDifference);
|
LOG.debug("Add " + processHistoryRecord.getDescription() + " {} - (entryFromDb={}) ", treatment, treatmentDb);
|
||||||
LOG.debug("Add Bolus {} - (treatmentFromDb={}) ", treatment, treatmentDb);
|
|
||||||
|
|
||||||
addBolus(treatment, treatmentDb);
|
addEntry(treatment, treatmentDb, processHistoryRecord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void filterOutAlreadyAddedEntries(List<PumpHistoryEntry> boluses, List<Treatment> treatmentsFromHistory) {
|
private DbObjectBase findDbEntry(PumpHistoryEntry treatment, List<? extends DbObjectBase> entriesFromHistory) {
|
||||||
|
|
||||||
List<Treatment> removeTreatmentsFromHistory = new ArrayList<>();
|
|
||||||
|
|
||||||
for (Treatment treatment : treatmentsFromHistory) {
|
|
||||||
|
|
||||||
if (treatment.pumpId != 0) {
|
|
||||||
|
|
||||||
PumpHistoryEntry selectedBolus = null;
|
|
||||||
|
|
||||||
for (PumpHistoryEntry bolus : boluses) {
|
|
||||||
if (bolus.getPumpId() == treatment.pumpId) {
|
|
||||||
selectedBolus = bolus;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (selectedBolus != null) {
|
|
||||||
boluses.remove(selectedBolus);
|
|
||||||
|
|
||||||
removeTreatmentsFromHistory.add(treatment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
treatmentsFromHistory.removeAll(removeTreatmentsFromHistory);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Treatment findTreatmentOld(PumpHistoryEntry treatment, List<Treatment> treatmentsFromHistory) {
|
|
||||||
|
|
||||||
long proposedTime = DateTimeUtil.toMillisFromATD(treatment.atechDateTime);
|
long proposedTime = DateTimeUtil.toMillisFromATD(treatment.atechDateTime);
|
||||||
|
|
||||||
proposedTime += (this.pumpTime.timeDifference * 1000);
|
proposedTime += (this.pumpTime.timeDifference * 1000);
|
||||||
|
|
||||||
treatment.phoneDateTime = proposedTime;
|
if (entriesFromHistory.size() == 0) {
|
||||||
|
|
||||||
List<Treatment> outList = new ArrayList<>();
|
|
||||||
|
|
||||||
for (Treatment treatment1 : treatmentsFromHistory) {
|
|
||||||
if ((treatment1.date > proposedTime - (5 * 60 * 1000))
|
|
||||||
&& (treatment1.date < proposedTime + (5 * 60 * 1000))) {
|
|
||||||
outList.add(treatment1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outList.size() == 0) {
|
|
||||||
return null;
|
return null;
|
||||||
} else if (outList.size() == 1) {
|
} else if (entriesFromHistory.size() == 1) {
|
||||||
return outList.get(0);
|
DbObjectBase treatment1 = entriesFromHistory.get(0);
|
||||||
} else {
|
LocalDateTime ldt = new LocalDateTime(treatment1.getDate());
|
||||||
LOG.error("TODO. Multiple options: {}", outList);
|
return entriesFromHistory.get(0);
|
||||||
|
|
||||||
Map<Treatment, Integer> data = new HashMap<>();
|
|
||||||
|
|
||||||
for (Treatment treatment1 : outList) {
|
|
||||||
int diff = Math.abs((int)(treatment1.date - proposedTime));
|
|
||||||
data.put(treatment1, diff);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 1; i < 5; i++) {
|
|
||||||
|
|
||||||
List<Treatment> outList2 = new ArrayList<>();
|
|
||||||
|
|
||||||
for (Treatment treatment1 : treatmentsFromHistory) {
|
|
||||||
if ((treatment1.date > proposedTime - (i * 60 * 1000))
|
|
||||||
&& (treatment1.date < proposedTime + (i * 60 * 1000))) {
|
|
||||||
outList2.add(treatment1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.error("Treatment List: (timeDiff={},count={},list={})", (i * 60 * 1000), outList2.size(),
|
|
||||||
gsonPretty.toJson(outList2));
|
|
||||||
|
|
||||||
if (outList2.size() == 1) {
|
|
||||||
return outList2.get(0);
|
|
||||||
} else if (outList2.size() > 1) {
|
|
||||||
|
|
||||||
for (int j = 1; j < 6; j++) {
|
|
||||||
|
|
||||||
List<Treatment> outList3 = new ArrayList<>();
|
|
||||||
|
|
||||||
int ttt = (i * 60 * 1000) - (10 * j * 1000);
|
|
||||||
|
|
||||||
for (Treatment treatment1 : treatmentsFromHistory) {
|
|
||||||
|
|
||||||
if ((treatment1.date > proposedTime - ttt) && (treatment1.date < proposedTime + ttt)) {
|
|
||||||
outList3.add(treatment1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.error("Treatment List: (timeDiff={},count={},list={})", ttt, outList3.size(),
|
|
||||||
gsonPretty.toJson(outList3));
|
|
||||||
|
|
||||||
if (outList3.size() == 1) {
|
|
||||||
return outList3.get(0);
|
|
||||||
}
|
|
||||||
} // for
|
|
||||||
|
|
||||||
} // outList2
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
} // outList
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Treatment findTreatment(PumpHistoryEntry treatment, List<Treatment> treatmentsFromHistory,
|
|
||||||
int dateDifference) {
|
|
||||||
|
|
||||||
long proposedTime = DateTimeUtil.toMillisFromATD(treatment.atechDateTime);
|
|
||||||
|
|
||||||
proposedTime += (this.pumpTime.timeDifference * 1000);
|
|
||||||
|
|
||||||
// treatment.phoneDateTime = proposedTime;
|
|
||||||
Date proposedTimeDD = new Date(proposedTime);
|
|
||||||
|
|
||||||
if (treatmentsFromHistory.size() == 0) {
|
|
||||||
return null;
|
|
||||||
} else if (treatmentsFromHistory.size() == 1) {
|
|
||||||
Treatment treatment1 = treatmentsFromHistory.get(0);
|
|
||||||
LocalDateTime ldt = new LocalDateTime(treatment1.date);
|
|
||||||
return treatmentsFromHistory.get(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int min = 0; min < 5; min++) {
|
for (int min = 0; min < 5; min++) {
|
||||||
|
@ -578,16 +481,16 @@ public class MedtronicHistoryData {
|
||||||
|
|
||||||
int diff = (min * 60 * 1000) + (sec * 1000);
|
int diff = (min * 60 * 1000) + (sec * 1000);
|
||||||
|
|
||||||
List<Treatment> outList = new ArrayList<>();
|
List<DbObjectBase> outList = new ArrayList<>();
|
||||||
|
|
||||||
for (Treatment treatment1 : treatmentsFromHistory) {
|
for (DbObjectBase treatment1 : entriesFromHistory) {
|
||||||
|
|
||||||
if ((treatment1.date > proposedTime - diff) && (treatment1.date < proposedTime + diff)) {
|
if ((treatment1.getDate() > proposedTime - diff) && (treatment1.getDate() < proposedTime + diff)) {
|
||||||
outList.add(treatment1);
|
outList.add(treatment1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG.error("Treatments: (timeDiff=[min={},sec={}],count={},list={})", min, sec, outList.size(),
|
LOG.error("Entries: (timeDiff=[min={},sec={}],count={},list={})", min, sec, outList.size(),
|
||||||
gsonPretty.toJson(outList));
|
gsonPretty.toJson(outList));
|
||||||
|
|
||||||
if (outList.size() == 1) {
|
if (outList.size() == 1) {
|
||||||
|
@ -595,21 +498,79 @@ public class MedtronicHistoryData {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (min == 0 && sec == 10 && outList.size() > 1) {
|
if (min == 0 && sec == 10 && outList.size() > 1) {
|
||||||
LOG.error("Too many treatments (with too small diff): (timeDiff=[min={},sec={}],count={},list={})",
|
LOG.error("Too many entries (with too small diff): (timeDiff=[min={},sec={}],count={},list={})",
|
||||||
min, sec, outList.size(), gsonPretty.toJson(outList));
|
min, sec, outList.size(), gsonPretty.toJson(outList));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void addEntry(PumpHistoryEntry treatment, DbObjectBase treatmentDb, ProcessHistoryRecord processHistoryRecord) {
|
||||||
|
|
||||||
|
if (processHistoryRecord==ProcessHistoryRecord.Bolus) {
|
||||||
|
addBolus(treatment, (Treatment)treatmentDb);
|
||||||
|
} else if (processHistoryRecord==ProcessHistoryRecord.TBR) {
|
||||||
|
addTBR(treatment, (TemporaryBasal)treatmentDb);
|
||||||
|
} else {
|
||||||
|
addTBR(treatment, (TemporaryBasal)treatmentDb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<? extends DbObjectBase> getDatabaseEntries(int dateDifference, ProcessHistoryRecord processHistoryRecord) {
|
||||||
|
if (processHistoryRecord==ProcessHistoryRecord.Bolus) {
|
||||||
|
List<Treatment> treatmentsFromHistory = TreatmentsPlugin.getPlugin().getTreatmentsFromHistoryXMinutesAgo(
|
||||||
|
dateDifference);
|
||||||
|
return treatmentsFromHistory;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
GregorianCalendar gc = new GregorianCalendar();
|
||||||
|
gc.add(Calendar.MINUTE, (-1)*dateDifference);
|
||||||
|
|
||||||
|
List<TemporaryBasal> tbrsFromHistory = databaseHelper.getTemporaryBasalsDataFromTime(gc.getTimeInMillis(), true);
|
||||||
|
return tbrsFromHistory;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void filterOutAlreadyAddedEntries(List<PumpHistoryEntry> entryList, List<? extends DbObjectBase> treatmentsFromHistory) {
|
||||||
|
|
||||||
|
if (isCollectionEmpty(treatmentsFromHistory) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
List<DbObjectBase> removeTreatmentsFromHistory = new ArrayList<>();
|
||||||
|
|
||||||
|
for (DbObjectBase treatment : treatmentsFromHistory) {
|
||||||
|
|
||||||
|
if (treatment.getPumpId() != 0) {
|
||||||
|
|
||||||
|
PumpHistoryEntry selectedBolus = null;
|
||||||
|
|
||||||
|
for (PumpHistoryEntry bolus : entryList) {
|
||||||
|
if (bolus.getPumpId() == treatment.getPumpId()) {
|
||||||
|
selectedBolus = bolus;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedBolus != null) {
|
||||||
|
entryList.remove(selectedBolus);
|
||||||
|
|
||||||
|
removeTreatmentsFromHistory.add(treatment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
treatmentsFromHistory.removeAll(removeTreatmentsFromHistory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void addBolus(PumpHistoryEntry bolus, Treatment treatment) {
|
private void addBolus(PumpHistoryEntry bolus, Treatment treatment) {
|
||||||
|
|
||||||
BolusDTO bolusDTO = (BolusDTO)bolus.getDecodedData().get("Object");
|
BolusDTO bolusDTO = (BolusDTO) bolus.getDecodedData().get("Object");
|
||||||
|
|
||||||
if (treatment == null) {
|
if (treatment == null) {
|
||||||
|
|
||||||
|
@ -648,12 +609,12 @@ public class MedtronicHistoryData {
|
||||||
|
|
||||||
TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus);
|
TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus);
|
||||||
|
|
||||||
|
if (L.isEnabled(L.PUMP)) {
|
||||||
LOG.debug("addBolus - Extended [date={},pumpId={}, insulin={}, duration={}]", extendedBolus.date,
|
LOG.debug("addBolus - Extended [date={},pumpId={}, insulin={}, duration={}]", extendedBolus.date,
|
||||||
extendedBolus.pumpId, extendedBolus.insulin, extendedBolus.durationInMinutes);
|
extendedBolus.pumpId, extendedBolus.insulin, extendedBolus.durationInMinutes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -673,50 +634,51 @@ public class MedtronicHistoryData {
|
||||||
|
|
||||||
bolus.setLinkedObject(detailedBolusInfo);
|
bolus.setLinkedObject(detailedBolusInfo);
|
||||||
|
|
||||||
if (L.isEnabled(L.PUMPCOMM))
|
if (L.isEnabled(L.PUMP)) {
|
||||||
LOG.debug("editBolus - [date={},pumpId={}, insulin={}, newRecord={}]", detailedBolusInfo.date,
|
LOG.debug("editBolus - [date={},pumpId={}, insulin={}, newRecord={}]", detailedBolusInfo.date,
|
||||||
detailedBolusInfo.pumpId, detailedBolusInfo.insulin, newRecord);
|
detailedBolusInfo.pumpId, detailedBolusInfo.insulin, newRecord);
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void addTBR(PumpHistoryEntry treatment, TemporaryBasal temporaryBasalDbInput) {
|
||||||
|
|
||||||
|
TempBasalPair tbr = (TempBasalPair)treatment.getDecodedData().get("Object");
|
||||||
|
|
||||||
|
TemporaryBasal temporaryBasalDb = temporaryBasalDbInput;
|
||||||
|
String operation = "editTBR";
|
||||||
|
|
||||||
|
if (temporaryBasalDb==null) {
|
||||||
|
temporaryBasalDb = new TemporaryBasal();
|
||||||
|
temporaryBasalDb.date = tryToGetByLocalTime(treatment.atechDateTime);
|
||||||
|
|
||||||
|
operation = "addTBR";
|
||||||
|
}
|
||||||
|
|
||||||
|
temporaryBasalDb.source = Source.PUMP;
|
||||||
|
temporaryBasalDb.pumpId = treatment.getPumpId();
|
||||||
|
temporaryBasalDb.durationInMinutes = tbr.getDurationMinutes();
|
||||||
|
temporaryBasalDb.absoluteRate = tbr.getInsulinRate();
|
||||||
|
temporaryBasalDb.isAbsolute = !tbr.isPercent();
|
||||||
|
|
||||||
|
treatment.setLinkedObject(temporaryBasalDb);
|
||||||
|
|
||||||
|
databaseHelper.createOrUpdate(temporaryBasalDb);
|
||||||
|
|
||||||
|
LOG.debug(operation + " - [date={},pumpId={}, rate={} {}, duration={}]", //
|
||||||
|
temporaryBasalDb.date, //
|
||||||
|
temporaryBasalDb.pumpId, //
|
||||||
|
temporaryBasalDb.isAbsolute ? String.format("%.2f", temporaryBasalDb.absoluteRate) :
|
||||||
|
String.format("%d", temporaryBasalDb.percentRate), //
|
||||||
|
temporaryBasalDb.isAbsolute ? "U/h" : "%", //
|
||||||
|
temporaryBasalDb.durationInMinutes);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private DetailedBolusInfo createTreatment(long date, double amount, long pumpId, Boolean isSmb, Treatment treatment) {
|
|
||||||
DetailedBolusInfo normalBolus = new DetailedBolusInfo();
|
|
||||||
normalBolus.date = date;
|
|
||||||
|
|
||||||
if (treatment != null) {
|
|
||||||
normalBolus.carbs = treatment.carbs;
|
|
||||||
normalBolus.date = treatment.date;
|
|
||||||
}
|
|
||||||
|
|
||||||
normalBolus.source = Source.PUMP;
|
|
||||||
normalBolus.insulin = amount;
|
|
||||||
normalBolus.pumpId = pumpId;
|
|
||||||
normalBolus.isValid = true;
|
|
||||||
normalBolus.isSMB = isSmb == null ? false : isSmb;
|
|
||||||
|
|
||||||
return normalBolus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TODO needs to be implemented
|
|
||||||
public void processTBRs(List<PumpHistoryEntry> treatments) {
|
|
||||||
|
|
||||||
int dateDifference = getOldestDateDifference(treatments);
|
|
||||||
|
|
||||||
// List<Treatment> treatmentsFromHistory = TreatmentsPlugin.getPlugin().getTreatmentsFromHistoryXMinutesAgo(
|
|
||||||
// dateDifference);
|
|
||||||
|
|
||||||
for (PumpHistoryEntry treatment : treatments) {
|
|
||||||
|
|
||||||
LOG.debug("TOE. Treatment: " + treatment);
|
|
||||||
long inLocalTime = tryToGetByLocalTime(treatment.atechDateTime);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TODO needs to be implemented
|
// TODO needs to be implemented
|
||||||
|
@ -783,25 +745,32 @@ public class MedtronicHistoryData {
|
||||||
private int getOldestDateDifference(List<PumpHistoryEntry> treatments) {
|
private int getOldestDateDifference(List<PumpHistoryEntry> treatments) {
|
||||||
|
|
||||||
long dt = Long.MAX_VALUE;
|
long dt = Long.MAX_VALUE;
|
||||||
|
PumpHistoryEntry currentTreatment = null;
|
||||||
|
|
||||||
for (PumpHistoryEntry treatment : treatments) {
|
for (PumpHistoryEntry treatment : treatments) {
|
||||||
|
|
||||||
if (treatment.atechDateTime < dt) {
|
if (treatment.atechDateTime < dt) {
|
||||||
dt = treatment.atechDateTime;
|
dt = treatment.atechDateTime;
|
||||||
|
currentTreatment = treatment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// LOG.debug("Oldest entry: {}, pumpTimeDifference={}", dt, this.pumpTime.timeDifference);
|
// LOG.debug("Oldest entry: {}, pumpTimeDifference={}", dt, this.pumpTime.timeDifference);
|
||||||
|
|
||||||
LocalDateTime oldestEntryTime = DateTimeUtil.toLocalDateTime(dt);
|
LocalDateTime oldestEntryTime = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
oldestEntryTime = DateTimeUtil.toLocalDateTime(dt);
|
||||||
oldestEntryTime = oldestEntryTime.minusMinutes(5);
|
oldestEntryTime = oldestEntryTime.minusMinutes(5);
|
||||||
|
|
||||||
if (this.pumpTime.timeDifference < 0) {
|
if (this.pumpTime.timeDifference < 0) {
|
||||||
oldestEntryTime = oldestEntryTime.plusSeconds(this.pumpTime.timeDifference);
|
oldestEntryTime = oldestEntryTime.plusSeconds(this.pumpTime.timeDifference);
|
||||||
}
|
}
|
||||||
// } else {
|
} catch (Exception ex) {
|
||||||
// d.minusSeconds(this.pumpTime.timeDifference);
|
LOG.error("Problem decoding date from last record: {}" + currentTreatment);
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
LocalDateTime now = new LocalDateTime();
|
LocalDateTime now = new LocalDateTime();
|
||||||
|
|
||||||
|
@ -925,7 +894,7 @@ public class MedtronicHistoryData {
|
||||||
|
|
||||||
if (newProfile != null) {
|
if (newProfile != null) {
|
||||||
LOG.debug("processLastBasalProfileChange. item found, setting new basalProfileLocally: " + newProfile);
|
LOG.debug("processLastBasalProfileChange. item found, setting new basalProfileLocally: " + newProfile);
|
||||||
BasalProfile basalProfile = (BasalProfile)newProfile.getDecodedData().get("Object");
|
BasalProfile basalProfile = (BasalProfile) newProfile.getDecodedData().get("Object");
|
||||||
mdtPumpStatus.basalsByHour = basalProfile.getProfilesByHour();
|
mdtPumpStatus.basalsByHour = basalProfile.getProfilesByHour();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ public class DailyTotalsDTO {
|
||||||
case DailyTotals522:
|
case DailyTotals522:
|
||||||
decodeDailyTotals522(entry.getBody());
|
decodeDailyTotals522(entry.getBody());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DailyTotals523:
|
case DailyTotals523:
|
||||||
decodeDailyTotals523(entry.getBody());
|
decodeDailyTotals523(entry.getBody());
|
||||||
break;
|
break;
|
||||||
|
@ -151,7 +152,7 @@ public class DailyTotalsDTO {
|
||||||
// Delivery Stats: BOLUS: Food=0.00, Corr=0.00, Manual=4.20
|
// Delivery Stats: BOLUS: Food=0.00, Corr=0.00, Manual=4.20
|
||||||
// Delivery Stats: NUM BOLUS: Food/Corr=0,Food+Corr=0, Manual=3
|
// Delivery Stats: NUM BOLUS: Food/Corr=0,Food+Corr=0, Manual=3
|
||||||
|
|
||||||
LOG.debug("515: {}", toString());
|
//LOG.debug("515: {}", toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@ public class DailyTotalsDTO {
|
||||||
// Delivery Stats: #Corr_only=0,Food+Corr=0.000, #Food+Corr=0
|
// Delivery Stats: #Corr_only=0,Food+Corr=0.000, #Food+Corr=0
|
||||||
// Delivery Stats: Manual = 0.95, #Manual=5
|
// Delivery Stats: Manual = 0.95, #Manual=5
|
||||||
|
|
||||||
LOG.debug("523: {}", toString());
|
//LOG.debug("523: {}", toString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Iob;
|
import info.nightscout.androidaps.data.Iob;
|
||||||
|
import info.nightscout.androidaps.db.DbObjectBase;
|
||||||
import info.nightscout.androidaps.db.Source;
|
import info.nightscout.androidaps.db.Source;
|
||||||
import info.nightscout.androidaps.interfaces.InsulinInterface;
|
import info.nightscout.androidaps.interfaces.InsulinInterface;
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||||
|
@ -27,7 +28,7 @@ import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||||
import info.nightscout.androidaps.utils.JsonHelper;
|
import info.nightscout.androidaps.utils.JsonHelper;
|
||||||
|
|
||||||
@DatabaseTable(tableName = Treatment.TABLE_TREATMENTS)
|
@DatabaseTable(tableName = Treatment.TABLE_TREATMENTS)
|
||||||
public class Treatment implements DataPointWithLabelInterface {
|
public class Treatment implements DataPointWithLabelInterface, DbObjectBase {
|
||||||
public static final String TABLE_TREATMENTS = "Treatments";
|
public static final String TABLE_TREATMENTS = "Treatments";
|
||||||
|
|
||||||
@DatabaseField(id = true)
|
@DatabaseField(id = true)
|
||||||
|
@ -266,4 +267,14 @@ public class Treatment implements DataPointWithLabelInterface {
|
||||||
InsulinInterface insulinInterface = ConfigBuilderPlugin.getPlugin().getActiveInsulin();
|
InsulinInterface insulinInterface = ConfigBuilderPlugin.getPlugin().getActiveInsulin();
|
||||||
return insulinInterface.iobCalcForTreatment(this, time, dia);
|
return insulinInterface.iobCalcForTreatment(this, time, dia);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getDate() {
|
||||||
|
return this.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getPumpId() {
|
||||||
|
return this.pumpId;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue