Search in sources :

Example 1 with User

use of nodomain.freeyourgadget.gadgetbridge.entities.User in project Gadgetbridge by Freeyourgadget.

the class FetchActivityOperation method saveSamples.

private void saveSamples() {
    if (samples.size() > 0) {
        // save all the samples that we got
        try (DBHandler handler = GBApplication.acquireDB()) {
            DaoSession session = handler.getDaoSession();
            SampleProvider<MiBandActivitySample> sampleProvider = new MiBandSampleProvider(getDevice(), session);
            Device device = DBHelper.getDevice(getDevice(), session);
            User user = DBHelper.getUser(session);
            GregorianCalendar timestamp = (GregorianCalendar) startTimestamp.clone();
            for (MiBandActivitySample sample : samples) {
                sample.setDevice(device);
                sample.setUser(user);
                sample.setTimestamp((int) (timestamp.getTimeInMillis() / 1000));
                sample.setProvider(sampleProvider);
                if (LOG.isDebugEnabled()) {
                //                        LOG.debug("sample: " + sample);
                }
                timestamp.add(Calendar.MINUTE, 1);
            }
            sampleProvider.addGBActivitySamples(samples.toArray(new MiBandActivitySample[0]));
            saveLastSyncTimestamp(timestamp);
            LOG.info("Mi2 activity data: last sample timestamp: " + DateTimeUtils.formatDateTime(timestamp.getTime()));
        } catch (Exception ex) {
            GB.toast(getContext(), "Error saving activity samples", Toast.LENGTH_LONG, GB.ERROR);
        } finally {
            samples.clear();
        }
    }
}
Also used : DBHandler(nodomain.freeyourgadget.gadgetbridge.database.DBHandler) User(nodomain.freeyourgadget.gadgetbridge.entities.User) Device(nodomain.freeyourgadget.gadgetbridge.entities.Device) GregorianCalendar(java.util.GregorianCalendar) MiBandSampleProvider(nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandSampleProvider) MiBandActivitySample(nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySample) IOException(java.io.IOException) DaoSession(nodomain.freeyourgadget.gadgetbridge.entities.DaoSession)

Example 2 with User

use of nodomain.freeyourgadget.gadgetbridge.entities.User in project Gadgetbridge by Freeyourgadget.

the class ConfigureAlarms method addMissingAlarms.

private void addMissingAlarms(List<Alarm> alarms) {
    DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(getGbDevice());
    int supportedNumAlarms = coordinator.getAlarmSlotCount();
    if (supportedNumAlarms > alarms.size()) {
        try (DBHandler db = GBApplication.acquireDB()) {
            DaoSession daoSession = db.getDaoSession();
            Device device = DBHelper.getDevice(getGbDevice(), daoSession);
            User user = DBHelper.getUser(daoSession);
            for (int position = 0; position < supportedNumAlarms; position++) {
                boolean found = false;
                for (Alarm alarm : alarms) {
                    if (alarm.getPosition() == position) {
                        found = true;
                        break;
                    }
                }
                if (!found) {
                    LOG.info("adding missing alarm at position " + position);
                    alarms.add(position, createDefaultAlarm(device, user, position));
                }
            }
        } catch (Exception e) {
            LOG.error("Error accessing database", e);
        }
    }
}
Also used : DBHandler(nodomain.freeyourgadget.gadgetbridge.database.DBHandler) User(nodomain.freeyourgadget.gadgetbridge.entities.User) Device(nodomain.freeyourgadget.gadgetbridge.entities.Device) GBDevice(nodomain.freeyourgadget.gadgetbridge.impl.GBDevice) Alarm(nodomain.freeyourgadget.gadgetbridge.entities.Alarm) DeviceCoordinator(nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator) DaoSession(nodomain.freeyourgadget.gadgetbridge.entities.DaoSession)

Example 3 with User

use of nodomain.freeyourgadget.gadgetbridge.entities.User in project Gadgetbridge by Freeyourgadget.

the class DBHelper method getReminders.

/**
 * Returns all user-configurable reminders for the given user and device. The list is sorted by
 * {@link Reminder#getDate}. Calendar events that may also be modeled as reminders are not stored
 * in the database and hence not returned by this method.
 * @param gbDevice the device for which the alarms shall be loaded
 * @return the list of reminders for the given device
 */
@NonNull
public static List<Reminder> getReminders(@NonNull GBDevice gbDevice) {
    final DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(gbDevice);
    final Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()));
    int reservedSlots = prefs.getInt(DeviceSettingsPreferenceConst.PREF_RESERVER_REMINDERS_CALENDAR, 9);
    final int reminderSlots = coordinator.getReminderSlotCount();
    try (DBHandler db = GBApplication.acquireDB()) {
        final DaoSession daoSession = db.getDaoSession();
        final User user = getUser(daoSession);
        final Device dbDevice = DBHelper.findDevice(gbDevice, daoSession);
        if (dbDevice != null) {
            final ReminderDao reminderDao = daoSession.getReminderDao();
            final Long deviceId = dbDevice.getId();
            final QueryBuilder<Reminder> qb = reminderDao.queryBuilder();
            qb.where(ReminderDao.Properties.UserId.eq(user.getId()), ReminderDao.Properties.DeviceId.eq(deviceId)).orderAsc(ReminderDao.Properties.Date).limit(reminderSlots - reservedSlots);
            return qb.build().list();
        }
    } catch (final Exception e) {
        LOG.error("Error reading reminders from db", e);
    }
    return Collections.emptyList();
}
Also used : User(nodomain.freeyourgadget.gadgetbridge.entities.User) ActivityUser(nodomain.freeyourgadget.gadgetbridge.model.ActivityUser) Reminder(nodomain.freeyourgadget.gadgetbridge.entities.Reminder) Device(nodomain.freeyourgadget.gadgetbridge.entities.Device) GBDevice(nodomain.freeyourgadget.gadgetbridge.impl.GBDevice) Prefs(nodomain.freeyourgadget.gadgetbridge.util.Prefs) DeviceCoordinator(nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator) IOException(java.io.IOException) DaoSession(nodomain.freeyourgadget.gadgetbridge.entities.DaoSession) ReminderDao(nodomain.freeyourgadget.gadgetbridge.entities.ReminderDao) NonNull(androidx.annotation.NonNull)

Example 4 with User

use of nodomain.freeyourgadget.gadgetbridge.entities.User in project Gadgetbridge by Freeyourgadget.

the class CasioGBX100DeviceSupport method getSumWithinRange.

public CasioGBX100ActivitySample getSumWithinRange(int timestamp_from, int timestamp_to) {
    int steps = 0;
    int calories = 0;
    try (DBHandler dbHandler = GBApplication.acquireDB()) {
        User user = DBHelper.getUser(dbHandler.getDaoSession());
        Device device = DBHelper.getDevice(this.getDevice(), dbHandler.getDaoSession());
        CasioGBX100SampleProvider provider = new CasioGBX100SampleProvider(this.getDevice(), dbHandler.getDaoSession());
        List<CasioGBX100ActivitySample> samples = provider.getActivitySamples(timestamp_from, timestamp_to);
        for (CasioGBX100ActivitySample sample : samples) {
            if (sample.getDevice().equals(device) && sample.getUser().equals(user)) {
                steps += sample.getSteps();
                calories += sample.getCalories();
            }
        }
    } catch (Exception e) {
        LOG.error("Error fetching activity data.");
    }
    CasioGBX100ActivitySample ret = new CasioGBX100ActivitySample();
    ret.setCalories(calories);
    ret.setSteps(steps);
    LOG.debug("Fetched for today: " + calories + " cals and " + steps + " steps.");
    return ret;
}
Also used : DBHandler(nodomain.freeyourgadget.gadgetbridge.database.DBHandler) User(nodomain.freeyourgadget.gadgetbridge.entities.User) CasioGBX100SampleProvider(nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioGBX100SampleProvider) Device(nodomain.freeyourgadget.gadgetbridge.entities.Device) GBDevice(nodomain.freeyourgadget.gadgetbridge.impl.GBDevice) CasioGBX100ActivitySample(nodomain.freeyourgadget.gadgetbridge.entities.CasioGBX100ActivitySample) IOException(java.io.IOException)

Example 5 with User

use of nodomain.freeyourgadget.gadgetbridge.entities.User in project Gadgetbridge by Freeyourgadget.

the class CasioGBX100DeviceSupport method addGBActivitySamples.

private void addGBActivitySamples(ArrayList<CasioGBX100ActivitySample> samples) {
    try (DBHandler dbHandler = GBApplication.acquireDB()) {
        User user = DBHelper.getUser(dbHandler.getDaoSession());
        Device device = DBHelper.getDevice(this.getDevice(), dbHandler.getDaoSession());
        CasioGBX100SampleProvider provider = new CasioGBX100SampleProvider(this.getDevice(), dbHandler.getDaoSession());
        for (CasioGBX100ActivitySample sample : samples) {
            sample.setDevice(device);
            sample.setUser(user);
            sample.setProvider(provider);
            provider.addGBActivitySample(sample);
        }
    } catch (Exception ex) {
        // Why is this a toast? The user doesn't care about the error.
        GB.toast(getContext(), "Error saving samples: " + ex.getLocalizedMessage(), Toast.LENGTH_LONG, GB.ERROR);
        GB.updateTransferNotification(null, "Data transfer failed", false, 0, getContext());
        LOG.error(ex.getMessage());
    }
}
Also used : DBHandler(nodomain.freeyourgadget.gadgetbridge.database.DBHandler) User(nodomain.freeyourgadget.gadgetbridge.entities.User) CasioGBX100SampleProvider(nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioGBX100SampleProvider) Device(nodomain.freeyourgadget.gadgetbridge.entities.Device) GBDevice(nodomain.freeyourgadget.gadgetbridge.impl.GBDevice) CasioGBX100ActivitySample(nodomain.freeyourgadget.gadgetbridge.entities.CasioGBX100ActivitySample) IOException(java.io.IOException)

Aggregations

User (nodomain.freeyourgadget.gadgetbridge.entities.User)23 Device (nodomain.freeyourgadget.gadgetbridge.entities.Device)19 DBHandler (nodomain.freeyourgadget.gadgetbridge.database.DBHandler)14 GBDevice (nodomain.freeyourgadget.gadgetbridge.impl.GBDevice)12 IOException (java.io.IOException)11 DaoSession (nodomain.freeyourgadget.gadgetbridge.entities.DaoSession)9 ActivityUser (nodomain.freeyourgadget.gadgetbridge.model.ActivityUser)9 NonNull (androidx.annotation.NonNull)5 GregorianCalendar (java.util.GregorianCalendar)4 DeviceCoordinator (nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator)4 MiBandSampleProvider (nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandSampleProvider)4 MiBandActivitySample (nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySample)4 Alarm (nodomain.freeyourgadget.gadgetbridge.entities.Alarm)3 Prefs (nodomain.freeyourgadget.gadgetbridge.util.Prefs)3 Test (org.junit.Test)3 Calendar (java.util.Calendar)2 GBException (nodomain.freeyourgadget.gadgetbridge.GBException)2 CasioGBX100SampleProvider (nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioGBX100SampleProvider)2 CasioGBX100ActivitySample (nodomain.freeyourgadget.gadgetbridge.entities.CasioGBX100ActivitySample)2 Reminder (nodomain.freeyourgadget.gadgetbridge.entities.Reminder)2