Skip to content
Snippets Groups Projects
Commit 7d33d4c9 authored by Lennart Goedhart's avatar Lennart Goedhart
Browse files

Don't crash if there is no active pump history (new pump, or no CGM for last 7 days)

parent 23a4f164
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
});
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment