From 5cfddbb7e9cd095a28950d9d6a37450e1e664f8e Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Tue, 9 Aug 2016 17:52:07 +0200 Subject: [PATCH] Use the right properties to build the query and fix the comparison operators. Performance: iterate first on the smaller dataset. --- .../devices/pebble/PebbleHealthSampleProvider.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleHealthSampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleHealthSampleProvider.java index c34b19d99..6cacb5489 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleHealthSampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleHealthSampleProvider.java @@ -12,6 +12,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivityOverlay; +import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivityOverlayDao; import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivitySampleDao; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; @@ -37,25 +38,22 @@ public class PebbleHealthSampleProvider extends AbstractSampleProvider qb = getSession().getPebbleHealthActivityOverlayDao().queryBuilder(); // I assume it returns the records by id ascending ... (last overlay is dominant) - qb.where(deviceProperty.eq(dbDevice.getId()), timestampProperty.ge(timestamp_from)) - .where(timestampProperty.le(timestamp_to)); + qb.where(PebbleHealthActivityOverlayDao.Properties.DeviceId.eq(dbDevice.getId()), PebbleHealthActivityOverlayDao.Properties.TimestampFrom.ge(timestamp_from)) + .where(PebbleHealthActivityOverlayDao.Properties.TimestampTo.le(timestamp_to)); List overlayRecords = qb.build().list(); - for (PebbleHealthActivitySample sample : samples) { - for (PebbleHealthActivityOverlay overlay : overlayRecords) { - if (overlay.getTimestampFrom() <= sample.getTimestamp() && overlay.getTimestampTo() >= sample.getTimestamp()) { + for (PebbleHealthActivityOverlay overlay : overlayRecords) { + for (PebbleHealthActivitySample sample : samples) { + if (overlay.getTimestampFrom() >= sample.getTimestamp() && overlay.getTimestampTo() <= sample.getTimestamp()) { // patch in the raw kind sample.setRawKind(overlay.getRawKind()); } } } - return samples; }