From 297fe487f75de9a4adcf064b93a1946172ee2d9f Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Mon, 2 Jul 2018 06:54:02 +0200 Subject: [PATCH] update with data from pump --- .../plugins/Treatments/Treatment.java | 23 ++++++++++---- .../plugins/Treatments/TreatmentService.java | 30 ++++++++++++++++--- .../plugins/Treatments/TreatmentsPlugin.java | 5 +++- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/Treatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/Treatment.java index 54802a9081..6ad09a4aa2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/Treatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/Treatment.java @@ -26,6 +26,7 @@ import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLab import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.JsonHelper; +import info.nightscout.utils.ToastUtils; @DatabaseTable(tableName = Treatment.TABLE_TREATMENTS) public class Treatment implements DataPointWithLabelInterface { @@ -135,16 +136,21 @@ public class Treatment implements DataPointWithLabelInterface { /* * mealBolus, _id and isSMB cannot be known coming from pump. Only compare rest + * TODO: remove debug toasts */ public boolean equalsRePumpHistory(Treatment other) { - if (date != other.date) + if (date != other.date) { + ToastUtils.showToastInUiThread(MainApp.instance(), "date: " + date + " vs " + other.date); return false; - if (insulin != other.insulin) + } + if (insulin != other.insulin) { + ToastUtils.showToastInUiThread(MainApp.instance(), "insulin: " + insulin + " vs " + other.insulin); return false; - if (carbs != other.carbs) - return false; - if (pumpId != other.pumpId) + } + if (carbs != other.carbs) { + ToastUtils.showToastInUiThread(MainApp.instance(), "carbs: " + carbs + " vs " + other.carbs); return false; + } return true; } @@ -158,6 +164,13 @@ public class Treatment implements DataPointWithLabelInterface { isSMB = t.isSMB; } + public void copyBasics(Treatment t) { + date = t.date; + insulin = t.insulin; + carbs = t.carbs; + pumpId = t.pumpId; + } + // ----------------- DataPointInterface -------------------- @Override public double getX() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentService.java index 7db14ab037..2fcfe9be55 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentService.java @@ -250,10 +250,32 @@ public class TreatmentService extends OrmLiteBaseService { // check for changed from pump change in NS Treatment existingTreatment = getPumpRecordById(treatment.pumpId); if (existingTreatment != null) { - // do nothing, pump history record cannot be changed - log.debug("TREATMENT: Pump record already found in database: " + treatment.toString()); - //return new UpdateReturn(true, false); - return new UpdateReturn(existingTreatment.equalsRePumpHistory(treatment), false); + boolean equalRePumpHistory = existingTreatment.equalsRePumpHistory(treatment); + if(!equalRePumpHistory) { + // another treatment exists. Update it with the treatment coming from the pump + log.debug("TREATMENT: Pump record already found in database: " + existingTreatment.toString() + " wanting to add " + treatment.toString()); + long oldDate = existingTreatment.date; + getDao().delete(existingTreatment); // need to delete/create because date may change too + existingTreatment.copyBasics(treatment); + getDao().create(existingTreatment); + DatabaseHelper.updateEarliestDataChange(oldDate); + DatabaseHelper.updateEarliestDataChange(existingTreatment.date); + scheduleTreatmentChange(treatment); } + return new UpdateReturn(equalRePumpHistory, false); + } + existingTreatment = getDao().queryForId(treatment.date); + if (existingTreatment != null) { + // another treatment exists with different pumpID. Update it with the treatment coming from the pump + boolean equalRePumpHistory = existingTreatment.equalsRePumpHistory(treatment); + long oldDate = existingTreatment.date; + log.debug("TREATMENT: Pump record already found in database: " + existingTreatment.toString() + " wanting to add " + treatment.toString()); + getDao().delete(existingTreatment); // need to delete/create because date may change too + existingTreatment.copyFrom(treatment); + getDao().create(existingTreatment); + DatabaseHelper.updateEarliestDataChange(oldDate); + DatabaseHelper.updateEarliestDataChange(existingTreatment.date); + scheduleTreatmentChange(treatment); + return new UpdateReturn(equalRePumpHistory, false); } getDao().create(treatment); log.debug("TREATMENT: New record from: " + Source.getString(treatment.source) + " " + treatment.toString()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index 1abbd52e94..a99591a781 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -497,10 +497,13 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface if (!allowUpdate && !creatOrUpdateResult.success) { log.error("Treatment could not be added to DB", new Exception()); + + String status = String.format(MainApp.gs(R.string.error_adding_treatment_message), treatment.insulin, (int) treatment.carbs, DateUtil.dateAndTimeString(treatment.date)); + Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class); i.putExtra("soundid", R.raw.error); i.putExtra("title", MainApp.gs(R.string.error_adding_treatment_title)); - i.putExtra("status", String.format(MainApp.gs(R.string.error_adding_treatment_message), treatment.insulin, (int) treatment.carbs)); + i.putExtra("status", status); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); MainApp.instance().startActivity(i); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3faab4c3e8..9123990b61 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1181,7 +1181,7 @@ Attention: If you activate and connect to a hardware pump, AndroidAPS will copy the basal settings from the profile to the pump, overwriting the existing basal rate stored on the pump. Make sure you have the correct basal setting in AndroidAPS. If you are not sure or don\'t want to overwrite the basal settings on your pump, press cancel and repeat switching to the pump at a later time. Treatment data incomplete - A treatment (insulin: %.2f, carbs: %d) could not be added to treatments. Please check and manually add a record as appropriate. + A treatment (insulin: %.2f, carbs: %d, at: %s) could not be added to treatments. Please check and manually add a record as appropriate. %d day