private synchronized void addAccount(final RedditAccount account, final SQLiteDatabase inDb) {

    final SQLiteDatabase db;
    if (inDb == null) db = getWritableDatabase();
    else db = inDb;

    final ContentValues row = new ContentValues();

    row.put(FIELD_USERNAME, account.username);

    if (account.refreshToken == null) {
      row.putNull(FIELD_REFRESH_TOKEN);
    } else {
      row.put(FIELD_REFRESH_TOKEN, account.refreshToken.token);
    }

    row.put(FIELD_PRIORITY, account.priority);

    db.insert(TABLE, null, row);

    reloadAccounts(db);
    updateNotifier.updateAllListeners();

    if (inDb == null) db.close();
  }
  public void deleteAccount(RedditAccount account) {

    final SQLiteDatabase db = getWritableDatabase();
    db.delete(TABLE, FIELD_USERNAME + "=?", new String[] {account.username});
    reloadAccounts(db);
    updateNotifier.updateAllListeners();
    db.close();
  }
  public synchronized void setDefaultAccount(final RedditAccount newDefault) {

    final SQLiteDatabase db = getWritableDatabase();

    db.execSQL(
        String.format(
            "UPDATE %s SET %s=(SELECT MIN(%s)-1 FROM %s) WHERE %s=?",
            TABLE, FIELD_PRIORITY, FIELD_PRIORITY, TABLE, FIELD_USERNAME),
        new String[] {newDefault.username});

    reloadAccounts(db);
    db.close();

    updateNotifier.updateAllListeners();
  }
 public void addUpdateListener(final RedditAccountChangeListener listener) {
   updateNotifier.addListener(listener);
 }