@Override public Integer doDbWork(final SQLiteDatabase db) { Cursor cursor = null; try { cursor = db.rawQuery("SELECT COUNT(*) FROM folders", null); cursor.moveToFirst(); return cursor.getInt(0); // folder count } finally { Utility.closeQuietly(cursor); } } });
@Override public Integer doDbWork(final SQLiteDatabase db) { Cursor cursor = null; try { cursor = db.rawQuery("SELECT COUNT(*) FROM messages", null); cursor.moveToFirst(); return cursor.getInt(0); // message count } finally { Utility.closeQuietly(cursor); } } });
private LocalMessage loadLocalMessageByRootPartId(SQLiteDatabase db, String rootPart) throws MessagingException { Cursor cursor = db.query("messages", new String[] { "id" }, "message_part_id = ?", new String[] { rootPart }, null, null, null); long messageId; try { if (!cursor.moveToFirst()) { return null; } messageId = cursor.getLong(0); } finally { Utility.closeQuietly(cursor); } return loadLocalMessageByMessageId(messageId); }
@Override public Void doDbWork(final SQLiteDatabase db) throws WrappedException, MessagingException { Cursor cursor = db.query("message_parts", GET_ATTACHMENT_COLS, "id = ?", new String[] { partId }, null, null, null); try { writeCursorPartsToOutputStream(db, cursor, outputStream); } catch (IOException e) { throw new WrappedException(e); } finally { Utility.closeQuietly(cursor); } return null; } });
@Override public Boolean doDbWork(final SQLiteDatabase db) throws WrappedException { Cursor cursor = null; try { cursor = db.rawQuery("SELECT id FROM folders where folders.server_id = ?", new String[] { LocalFolder.this.getServerId() }); if (cursor.moveToFirst()) { int folderId = cursor.getInt(0); return (folderId > 0); } return false; } finally { Utility.closeQuietly(cursor); } } });
private String readValue(SQLiteDatabase mDb, String key) { Cursor cursor = null; String value = null; try { cursor = mDb.query( "preferences_storage", new String[] {"value"}, "primkey = ?", new String[] {key}, null, null, null); if (cursor.moveToNext()) { value = cursor.getString(0); Timber.d("Loading key '%s', value = '%s'", key, value); } } finally { Utility.closeQuietly(cursor); } return value; }
private static List<OldPendingCommand> getPendingCommands(SQLiteDatabase db) { Cursor cursor = null; try { cursor = db.query("pending_commands", new String[] { "id", "command", "arguments" }, null, null, null, null, "id ASC"); List<OldPendingCommand> commands = new ArrayList<>(); while (cursor.moveToNext()) { OldPendingCommand command = new OldPendingCommand(); command.command = cursor.getString(1); String arguments = cursor.getString(2); command.arguments = arguments.split(","); for (int i = 0; i < command.arguments.length; i++) { command.arguments[i] = fastUrlDecode(command.arguments[i]); } commands.add(command); } return commands; } finally { Utility.closeQuietly(cursor); } }
@Override public List<PendingCommand> doDbWork(final SQLiteDatabase db) throws WrappedException { Cursor cursor = null; try { cursor = db.query("pending_commands", new String[] { "id", "command", "data" }, null, null, null, null, "id ASC"); List<PendingCommand> commands = new ArrayList<>(); while (cursor.moveToNext()) { long databaseId = cursor.getLong(0); String commandName = cursor.getString(1); String data = cursor.getString(2); PendingCommand command = pendingCommandSerializer.unserialize( databaseId, commandName, data); commands.add(command); } return commands; } finally { Utility.closeQuietly(cursor); } } });
@Override public Integer doDbWork(final SQLiteDatabase db) { Cursor cursor = null; try { open(OPEN_MODE_RO); cursor = db.rawQuery("SELECT MAX(uid) FROM messages WHERE folder_id=?", new String[] { Long.toString( databaseId) }); if (cursor.getCount() > 0) { cursor.moveToFirst(); return cursor.getInt(0); } } catch (Exception e) { Timber.e(e, "Unable to updateLastUid: "); } finally { Utility.closeQuietly(cursor); } return null; } });
@Override public Long doDbWork(final SQLiteDatabase db) { Cursor cursor = null; try { open(OPEN_MODE_RO); cursor = db.rawQuery("SELECT MIN(date) FROM messages WHERE folder_id=?", new String[] { Long.toString( databaseId) }); if (cursor.getCount() > 0) { cursor.moveToFirst(); return cursor.getLong(0); } } catch (Exception e) { Timber.e(e, "Unable to fetch oldest message date: "); } finally { Utility.closeQuietly(cursor); } return null; } });
@Override public String doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException { try { open(OPEN_MODE_RW); Cursor cursor = null; try { cursor = db.rawQuery( "SELECT uid FROM messages WHERE id = ? AND folder_id = ?", new String[] { Long.toString(id), Long.toString(LocalFolder.this.databaseId) }); if (!cursor.moveToNext()) { return null; } return cursor.getString(0); } finally { Utility.closeQuietly(cursor); } } catch (MessagingException e) { throw new WrappedException(e); } } });
@Override public Integer doDbWork(final SQLiteDatabase db) throws WrappedException { try { open(OPEN_MODE_RW); } catch (MessagingException e) { throw new WrappedException(e); } Cursor cursor = null; try { cursor = db.rawQuery( "SELECT COUNT(id) FROM messages " + "WHERE empty = 0 AND deleted = 0 and folder_id = ?", new String[] { Long.toString(databaseId) }); cursor.moveToFirst(); return cursor.getInt(0); //messagecount } finally { Utility.closeQuietly(cursor); } } });
@Override public List<String> doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException { Cursor cursor = null; ArrayList<String> result = new ArrayList<>(); try { open(OPEN_MODE_RO); cursor = db.rawQuery( "SELECT uid " + "FROM messages " + "WHERE empty = 0 AND deleted = 0 AND " + "folder_id = ? ORDER BY date DESC", new String[] { Long.toString(databaseId) }); while (cursor.moveToNext()) { String uid = cursor.getString(0); result.add(uid); } } catch (MessagingException e) { throw new WrappedException(e); } finally { Utility.closeQuietly(cursor); } return result; } });
public static void db41UpdateFolderMetadata(SQLiteDatabase db, MigrationsHelper migrationsHelper) { Cursor cursor = null; try { cursor = db.rawQuery("SELECT id, name FROM folders", null); while (cursor.moveToNext()) { try { int id = cursor.getInt(0); String name = cursor.getString(1); update41Metadata(db, migrationsHelper, id, name); } catch (Exception e) { Timber.e(e, " error trying to ugpgrade a folder class"); } } } catch (SQLiteException e) { Timber.e(e, "Exception while upgrading database to v41. folder classes may have vanished"); } finally { Utility.closeQuietly(cursor); } }
@Override public Map<String, Long> doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException { Cursor cursor = null; HashMap<String, Long> result = new HashMap<>(); try { open(OPEN_MODE_RO); cursor = db.rawQuery( "SELECT uid, date " + "FROM messages " + "WHERE empty = 0 AND deleted = 0 AND " + "folder_id = ? ORDER BY date DESC", new String[] { Long.toString(databaseId) }); while (cursor.moveToNext()) { String uid = cursor.getString(0); Long date = cursor.isNull(1) ? null : cursor.getLong(1); result.put(uid, date); } } catch (MessagingException e) { throw new WrappedException(e); } finally { Utility.closeQuietly(cursor); } return result; } });
@Override @CheckResult public Map<String, String> loadValues() { long startTime = SystemClock.elapsedRealtime(); Timber.i("Loading preferences from DB into Storage"); HashMap<String, String> loadedValues = new HashMap<>(); Cursor cursor = null; SQLiteDatabase mDb = null; try { mDb = openDB(); cursor = mDb.rawQuery("SELECT primkey, value FROM preferences_storage", null); while (cursor.moveToNext()) { String key = cursor.getString(0); String value = cursor.getString(1); Timber.d("Loading key '%s', value = '%s'", key, value); loadedValues.put(key, value); } } finally { Utility.closeQuietly(cursor); if (mDb != null) { mDb.close(); } long endTime = SystemClock.elapsedRealtime(); Timber.i("Preferences load took %d ms", endTime - startTime); } return loadedValues; }
@Override public List <? extends Folder > doDbWork(final SQLiteDatabase db) throws WrappedException { Cursor cursor = null; try { cursor = db.rawQuery("SELECT " + GET_FOLDER_COLS + " FROM folders " + "ORDER BY name ASC", null); while (cursor.moveToNext()) { if (cursor.isNull(FOLDER_ID_INDEX)) { continue; } String folderServerId = cursor.getString(FOLDER_SERVER_ID_INDEX); LocalFolder folder = new LocalFolder(LocalStore.this, folderServerId); folder.open(cursor); folders.add(folder); } return folders; } catch (MessagingException e) { throw new WrappedException(e); } finally { Utility.closeQuietly(cursor); } } });
@Override public Void doDbWork(final SQLiteDatabase db) throws WrappedException { Cursor cursor = null; try { String baseQuery = "SELECT " + LocalStore.GET_FOLDER_COLS + " FROM folders "; if (serverId != null) { cursor = db.rawQuery(baseQuery + "where folders.server_id = ?", new String[] { serverId }); } else { cursor = db.rawQuery(baseQuery + "where folders.id = ?", new String[] { Long.toString( databaseId) }); } if (cursor.moveToFirst() && !cursor.isNull(LocalStore.FOLDER_ID_INDEX)) { int folderId = cursor.getInt(LocalStore.FOLDER_ID_INDEX); if (folderId > 0) { open(cursor); } } else { throw new MessagingException("LocalFolder.open(): Folder not found: " + serverId + " (" + databaseId + ")"); } } catch (MessagingException e) { throw new WrappedException(e); } finally { Utility.closeQuietly(cursor); } return null; } });
@Override public Void doDbWork(final SQLiteDatabase db) { Cursor cursor = db.rawQuery("SELECT uid " + "FROM messages " + "WHERE empty = 0 AND deleted = 0 AND folder_id = ? ORDER BY date DESC " + " LIMIT -1 OFFSET ?", new String[] { Long.toString(getDatabaseId()), Integer.toString(visibleLimit) }); try { while (cursor.moveToNext()) { String uid = cursor.getString(0); LocalMessage localMessage = getMessage(uid); if (listener != null) { listener.messageRemoved(localMessage); } destroyMessage(localMessage); } } catch (Exception e) { Timber.d(e, "Got an exception"); } finally { Utility.closeQuietly(cursor); } return null; } });
@Override public LocalMessage doDbWork(final SQLiteDatabase db) throws WrappedException, UnavailableStorageException { try { open(OPEN_MODE_RW); LocalMessage message = new LocalMessage(LocalFolder.this.localStore, uid, LocalFolder.this); Cursor cursor = null; try { cursor = db.rawQuery( "SELECT " + LocalStore.GET_MESSAGES_COLS + "FROM messages " + "LEFT JOIN message_parts ON (message_parts.id = messages.message_part_id) " + "LEFT JOIN threads ON (threads.message_id = messages.id) " + "WHERE uid = ? AND folder_id = ?", new String[] { message.getUid(), Long.toString(databaseId) }); if (!cursor.moveToNext()) { return null; } message.populateFromGetMessageCursor(cursor); } finally { Utility.closeQuietly(cursor); } return message; } catch (MessagingException e) { throw new WrappedException(e); } } });