@Override
  public void onUpdate(SyncAccount syncAccount, Map<String, Object> originalValues) {

    if (!originalValues.containsKey("active")) {
      return;
    }

    List<Long> activeSyncAccountIds = SyncAccountService.getActiveSyncAccountIds();

    if ((Boolean) originalValues.get("active")) {
      activeSyncAccountIds.remove(syncAccount.getSyncAccountId());

      try {
        SyncEngine.cancelSyncAccountTasks(syncAccount.getSyncAccountId());
      } catch (Exception e) {
        _logger.error(e.getMessage(), e);
      }
    } else {
      activeSyncAccountIds.add(syncAccount.getSyncAccountId());

      try {
        SyncEngine.scheduleSyncAccountTasks(syncAccount.getSyncAccountId());
      } catch (Exception e) {
        _logger.error(e.getMessage(), e);
      }
    }

    SyncAccountService.setActiveSyncAccountIds(activeSyncAccountIds);
  }
  @Override
  public void onRemove(SyncAccount syncAccount) {
    List<Long> activeSyncAccountIds = SyncAccountService.getActiveSyncAccountIds();

    activeSyncAccountIds.remove(syncAccount.getSyncAccountId());

    SyncAccountService.setActiveSyncAccountIds(activeSyncAccountIds);

    try {
      SyncEngine.cancelSyncAccountTasks(syncAccount.getSyncAccountId());
    } catch (Exception e) {
      _logger.error(e.getMessage(), e);
    }
  }