Loading app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +0 −46 Original line number Diff line number Diff line Loading @@ -2526,52 +2526,6 @@ public class MessagingController { }); } public void clear(final Account account, final MessagingListener ml) { putBackground("clear:" + account.getDescription(), ml, new Runnable() { @Override public void run() { try { LocalStore localStore = localStoreProvider.getInstance(account); long oldSize = localStore.getSize(); localStore.clear(); localStore.resetVisibleLimits(account.getDisplayCount()); long newSize = localStore.getSize(); for (MessagingListener l : getListeners(ml)) { l.accountSizeChanged(account, oldSize, newSize); } } catch (UnavailableStorageException e) { Timber.i("Failed to clear account because storage is not available - trying again later."); throw new UnavailableAccountException(e); } catch (Exception e) { Timber.e(e, "Failed to clear account %s", account.getDescription()); } } }); } public void recreate(final Account account, final MessagingListener ml) { putBackground("recreate:" + account.getDescription(), ml, new Runnable() { @Override public void run() { try { LocalStore localStore = localStoreProvider.getInstance(account); long oldSize = localStore.getSize(); localStore.recreate(); localStore.resetVisibleLimits(account.getDisplayCount()); long newSize = localStore.getSize(); for (MessagingListener l : getListeners(ml)) { l.accountSizeChanged(account, oldSize, newSize); } } catch (UnavailableStorageException e) { Timber.i("Failed to recreate an account because storage is not available - trying again later."); throw new UnavailableAccountException(e); } catch (Exception e) { Timber.e(e, "Failed to recreate account %s", account.getDescription()); } } }); } public void deleteAccount(Account account) { notificationController.clearNewMailNotifications(account); memorizingMessagingListener.removeAccount(account); Loading app/core/src/main/java/com/fsck/k9/mailstore/LocalStore.java +0 −131 Original line number Diff line number Diff line Loading @@ -53,10 +53,7 @@ import com.fsck.k9.mailstore.LockableDatabase.SchemaDefinition; import com.fsck.k9.mailstore.LockableDatabase.WrappedException; import com.fsck.k9.mailstore.StorageManager.InternalStorageProvider; import com.fsck.k9.mailstore.StorageManager.StorageProvider; import com.fsck.k9.message.extractors.AttachmentCounter; import com.fsck.k9.message.extractors.AttachmentInfoExtractor; import com.fsck.k9.message.extractors.MessageFulltextCreator; import com.fsck.k9.message.extractors.MessagePreviewCreator; import com.fsck.k9.provider.EmailProvider; import com.fsck.k9.provider.EmailProvider.MessageColumns; import com.fsck.k9.search.LocalSearch; Loading Loading @@ -170,9 +167,6 @@ public class LocalStore { private final Context context; private final ContentResolver contentResolver; private final MessagePreviewCreator messagePreviewCreator; private final MessageFulltextCreator messageFulltextCreator; private final AttachmentCounter attachmentCounter; private final PendingCommandSerializer pendingCommandSerializer; private final AttachmentInfoExtractor attachmentInfoExtractor; Loading @@ -193,9 +187,6 @@ public class LocalStore { this.context = context; this.contentResolver = context.getContentResolver(); messagePreviewCreator = MessagePreviewCreator.newInstance(); messageFulltextCreator = MessageFulltextCreator.newInstance(); attachmentCounter = AttachmentCounter.newInstance(); pendingCommandSerializer = PendingCommandSerializer.getInstance(); attachmentInfoExtractor = DI.get(AttachmentInfoExtractor.class); Loading Loading @@ -288,78 +279,6 @@ public class LocalStore { } } public void clear() throws MessagingException { if (K9.isDebugLoggingEnabled()) { Timber.i("Before prune size = %d", getSize()); } deleteAllMessageDataFromDisk(); if (K9.isDebugLoggingEnabled()) { Timber.i("After prune / before compaction size = %d", getSize()); Timber.i("Before clear folder count = %d", getFolderCount()); Timber.i("Before clear message count = %d", getMessageCount()); Timber.i("After prune / before clear size = %d", getSize()); } database.execute(false, new DbCallback<Void>() { @Override public Void doDbWork(final SQLiteDatabase db) { // We don't care about threads of deleted messages, so delete the whole table. db.delete("threads", null, null); // Don't delete deleted messages. They are essentially placeholders for UIDs of messages that have // been deleted locally. db.delete("messages", "deleted = 0", null); // We don't need the search data now either db.delete("messages_fulltext", null, null); return null; } }); compact(); if (K9.isDebugLoggingEnabled()) { Timber.i("After clear message count = %d", getMessageCount()); Timber.i("After clear size = %d", getSize()); } } private int getMessageCount() throws MessagingException { return database.execute(false, new DbCallback<Integer>() { @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 int getFolderCount() throws MessagingException { return database.execute(false, new DbCallback<Integer>() { @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); } } }); } public LocalFolder getFolder(String serverId) { return new LocalFolder(this, serverId); } Loading Loading @@ -412,44 +331,6 @@ public class LocalStore { database.delete(); } public void recreate() throws UnavailableStorageException { database.recreate(); } private void deleteAllMessageDataFromDisk() throws MessagingException { markAllMessagePartsDataAsMissing(); deleteAllMessagePartsDataFromDisk(); } private void markAllMessagePartsDataAsMissing() throws MessagingException { database.execute(false, new DbCallback<Void>() { @Override public Void doDbWork(final SQLiteDatabase db) throws WrappedException { ContentValues cv = new ContentValues(); cv.put("data_location", DataLocation.MISSING); db.update("message_parts", cv, null, null); return null; } }); } private void deleteAllMessagePartsDataFromDisk() { final StorageManager storageManager = StorageManager.getInstance(context); File attachmentDirectory = storageManager.getAttachmentDirectory( account.getUuid(), database.getStorageProviderId()); File[] files = attachmentDirectory.listFiles(); if (files == null) { return; } for (File file : files) { if (file.exists() && !file.delete()) { file.deleteOnExit(); } } } public void resetVisibleLimits(int visibleLimit) throws MessagingException { final ContentValues cv = new ContentValues(); cv.put("visible_limit", Integer.toString(visibleLimit)); Loading Loading @@ -937,18 +818,6 @@ public class LocalStore { return database; } MessagePreviewCreator getMessagePreviewCreator() { return messagePreviewCreator; } public MessageFulltextCreator getMessageFulltextCreator() { return messageFulltextCreator; } AttachmentCounter getAttachmentCounter() { return attachmentCounter; } AttachmentInfoExtractor getAttachmentInfoExtractor() { return attachmentInfoExtractor; } Loading Loading
app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +0 −46 Original line number Diff line number Diff line Loading @@ -2526,52 +2526,6 @@ public class MessagingController { }); } public void clear(final Account account, final MessagingListener ml) { putBackground("clear:" + account.getDescription(), ml, new Runnable() { @Override public void run() { try { LocalStore localStore = localStoreProvider.getInstance(account); long oldSize = localStore.getSize(); localStore.clear(); localStore.resetVisibleLimits(account.getDisplayCount()); long newSize = localStore.getSize(); for (MessagingListener l : getListeners(ml)) { l.accountSizeChanged(account, oldSize, newSize); } } catch (UnavailableStorageException e) { Timber.i("Failed to clear account because storage is not available - trying again later."); throw new UnavailableAccountException(e); } catch (Exception e) { Timber.e(e, "Failed to clear account %s", account.getDescription()); } } }); } public void recreate(final Account account, final MessagingListener ml) { putBackground("recreate:" + account.getDescription(), ml, new Runnable() { @Override public void run() { try { LocalStore localStore = localStoreProvider.getInstance(account); long oldSize = localStore.getSize(); localStore.recreate(); localStore.resetVisibleLimits(account.getDisplayCount()); long newSize = localStore.getSize(); for (MessagingListener l : getListeners(ml)) { l.accountSizeChanged(account, oldSize, newSize); } } catch (UnavailableStorageException e) { Timber.i("Failed to recreate an account because storage is not available - trying again later."); throw new UnavailableAccountException(e); } catch (Exception e) { Timber.e(e, "Failed to recreate account %s", account.getDescription()); } } }); } public void deleteAccount(Account account) { notificationController.clearNewMailNotifications(account); memorizingMessagingListener.removeAccount(account); Loading
app/core/src/main/java/com/fsck/k9/mailstore/LocalStore.java +0 −131 Original line number Diff line number Diff line Loading @@ -53,10 +53,7 @@ import com.fsck.k9.mailstore.LockableDatabase.SchemaDefinition; import com.fsck.k9.mailstore.LockableDatabase.WrappedException; import com.fsck.k9.mailstore.StorageManager.InternalStorageProvider; import com.fsck.k9.mailstore.StorageManager.StorageProvider; import com.fsck.k9.message.extractors.AttachmentCounter; import com.fsck.k9.message.extractors.AttachmentInfoExtractor; import com.fsck.k9.message.extractors.MessageFulltextCreator; import com.fsck.k9.message.extractors.MessagePreviewCreator; import com.fsck.k9.provider.EmailProvider; import com.fsck.k9.provider.EmailProvider.MessageColumns; import com.fsck.k9.search.LocalSearch; Loading Loading @@ -170,9 +167,6 @@ public class LocalStore { private final Context context; private final ContentResolver contentResolver; private final MessagePreviewCreator messagePreviewCreator; private final MessageFulltextCreator messageFulltextCreator; private final AttachmentCounter attachmentCounter; private final PendingCommandSerializer pendingCommandSerializer; private final AttachmentInfoExtractor attachmentInfoExtractor; Loading @@ -193,9 +187,6 @@ public class LocalStore { this.context = context; this.contentResolver = context.getContentResolver(); messagePreviewCreator = MessagePreviewCreator.newInstance(); messageFulltextCreator = MessageFulltextCreator.newInstance(); attachmentCounter = AttachmentCounter.newInstance(); pendingCommandSerializer = PendingCommandSerializer.getInstance(); attachmentInfoExtractor = DI.get(AttachmentInfoExtractor.class); Loading Loading @@ -288,78 +279,6 @@ public class LocalStore { } } public void clear() throws MessagingException { if (K9.isDebugLoggingEnabled()) { Timber.i("Before prune size = %d", getSize()); } deleteAllMessageDataFromDisk(); if (K9.isDebugLoggingEnabled()) { Timber.i("After prune / before compaction size = %d", getSize()); Timber.i("Before clear folder count = %d", getFolderCount()); Timber.i("Before clear message count = %d", getMessageCount()); Timber.i("After prune / before clear size = %d", getSize()); } database.execute(false, new DbCallback<Void>() { @Override public Void doDbWork(final SQLiteDatabase db) { // We don't care about threads of deleted messages, so delete the whole table. db.delete("threads", null, null); // Don't delete deleted messages. They are essentially placeholders for UIDs of messages that have // been deleted locally. db.delete("messages", "deleted = 0", null); // We don't need the search data now either db.delete("messages_fulltext", null, null); return null; } }); compact(); if (K9.isDebugLoggingEnabled()) { Timber.i("After clear message count = %d", getMessageCount()); Timber.i("After clear size = %d", getSize()); } } private int getMessageCount() throws MessagingException { return database.execute(false, new DbCallback<Integer>() { @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 int getFolderCount() throws MessagingException { return database.execute(false, new DbCallback<Integer>() { @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); } } }); } public LocalFolder getFolder(String serverId) { return new LocalFolder(this, serverId); } Loading Loading @@ -412,44 +331,6 @@ public class LocalStore { database.delete(); } public void recreate() throws UnavailableStorageException { database.recreate(); } private void deleteAllMessageDataFromDisk() throws MessagingException { markAllMessagePartsDataAsMissing(); deleteAllMessagePartsDataFromDisk(); } private void markAllMessagePartsDataAsMissing() throws MessagingException { database.execute(false, new DbCallback<Void>() { @Override public Void doDbWork(final SQLiteDatabase db) throws WrappedException { ContentValues cv = new ContentValues(); cv.put("data_location", DataLocation.MISSING); db.update("message_parts", cv, null, null); return null; } }); } private void deleteAllMessagePartsDataFromDisk() { final StorageManager storageManager = StorageManager.getInstance(context); File attachmentDirectory = storageManager.getAttachmentDirectory( account.getUuid(), database.getStorageProviderId()); File[] files = attachmentDirectory.listFiles(); if (files == null) { return; } for (File file : files) { if (file.exists() && !file.delete()) { file.deleteOnExit(); } } } public void resetVisibleLimits(int visibleLimit) throws MessagingException { final ContentValues cv = new ContentValues(); cv.put("visible_limit", Integer.toString(visibleLimit)); Loading Loading @@ -937,18 +818,6 @@ public class LocalStore { return database; } MessagePreviewCreator getMessagePreviewCreator() { return messagePreviewCreator; } public MessageFulltextCreator getMessageFulltextCreator() { return messageFulltextCreator; } AttachmentCounter getAttachmentCounter() { return attachmentCounter; } AttachmentInfoExtractor getAttachmentInfoExtractor() { return attachmentInfoExtractor; } Loading