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 7f4cbd3aee876938f53d17d30ddaa4b09281495c..0da05bb9a315f941a2dc090130b5509717d94d8b 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); + } + }); + } } } }