From 7d33d4c95932d1c1789f6fafecbcc761f85d0b5f Mon Sep 17 00:00:00 2001 From: Lennart Goedhart <lennart@omnibase.com.au> Date: Sun, 7 Jan 2018 11:04:15 +1100 Subject: [PATCH] Don't crash if there is no active pump history (new pump, or no CGM for last 7 days) --- .../android/medtronic/PumpHistoryHandler.java | 90 ++++++++++--------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java b/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java index 7f4cbd3..0da05bb 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java +++ b/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java @@ -459,57 +459,59 @@ public class PumpHistoryHandler { }); } */ - if (pulledFrom.getTime() > segment.get(1).getToDate().getTime()) { - // update the segment fromDate, we still need more history for this segment - historyRealm.executeTransaction(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - segment.get(0).setFromDate(pulledFrom); - } - }); - } else { - // segments now overlap, combine to single segment - historyRealm.executeTransaction(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - segment.get(1).setToDate(segment.get(0).getToDate()); - segment.deleteFromRealm(0); - } - }); - // check if any remaining segments need combining or deleting - boolean checkNext = true; - while (checkNext && segment.size() > 1) { - // delete next segment if not needed as we have the events from recent pull - if (segment.get(1).getFromDate().getTime() > pulledFrom.getTime()) { - historyRealm.executeTransaction(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - segment.deleteFromRealm(1); - } - }); - } - // combine segments if needed - else { - checkNext = false; - if (segment.get(1).getToDate().getTime() > pulledFrom.getTime()) { + if(pulledFrom != null) { + if (pulledFrom.getTime() > segment.get(1).getToDate().getTime()) { + // update the segment fromDate, we still need more history for this segment + historyRealm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + segment.get(0).setFromDate(pulledFrom); + } + }); + } else { + // segments now overlap, combine to single segment + historyRealm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + segment.get(1).setToDate(segment.get(0).getToDate()); + segment.deleteFromRealm(0); + } + }); + // check if any remaining segments need combining or deleting + boolean checkNext = true; + while (checkNext && segment.size() > 1) { + // delete next segment if not needed as we have the events from recent pull + if (segment.get(1).getFromDate().getTime() > pulledFrom.getTime()) { historyRealm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { - segment.get(1).setToDate(segment.get(0).getToDate()); - segment.deleteFromRealm(0); + segment.deleteFromRealm(1); } }); } - } - } - // finally update segment fromDate if needed - if (segment.get(0).getFromDate().getTime() > pulledFrom.getTime()) { - historyRealm.executeTransaction(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - segment.get(0).setFromDate(pulledFrom); + // combine segments if needed + else { + checkNext = false; + if (segment.get(1).getToDate().getTime() > pulledFrom.getTime()) { + historyRealm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + segment.get(1).setToDate(segment.get(0).getToDate()); + segment.deleteFromRealm(0); + } + }); + } } - }); + } + // finally update segment fromDate if needed + if (segment.get(0).getFromDate().getTime() > pulledFrom.getTime()) { + historyRealm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + segment.get(0).setFromDate(pulledFrom); + } + }); + } } } } -- GitLab