private boolean isOldMessage(BackendFolder backendFolder, Message message) { return message.olderThan(backendFolder.getLatestOldMessageSeenTime()); }
private boolean shouldImportMessage(Message message, Date earliestDate) { if (message.olderThan(earliestDate)) { Timber.d("Message %s is older than %s, hence not saving", message.getUid(), earliestDate); return false; } return true; }
private Message buildLargeNewMessage() { Message message = mock(Message.class); when(message.olderThan(nullable(Date.class))).thenReturn(false); when(message.getSize()).thenReturn((long) (MAXIMUM_SMALL_MESSAGE_SIZE + 1)); return message; }
private Message buildSmallNewMessage() { Message message = mock(Message.class); when(message.olderThan(nullable(Date.class))).thenReturn(false); when(message.getSize()).thenReturn((long) MAXIMUM_SMALL_MESSAGE_SIZE); return message; }
@Test public void sync_withAccountSetToSyncRemoteDeletions_shouldNotDeleteLocalCopiesOfExistingMessagesAfterEarliestPollDate() throws Exception { messageCountInRemoteFolder(1); Date dateOfEarliestPoll = new Date(); Message remoteMessage = messageOnServer(); configureSyncConfigWithSyncRemoteDeletionsAndEarliestPollDate(dateOfEarliestPoll); when(remoteMessage.olderThan(dateOfEarliestPoll)).thenReturn(false); imapSync.sync(FOLDER_NAME, syncConfig, listener, remoteFolder); verify(backendFolder, never()).destroyMessages(messageListCaptor.capture()); }
@Test public void sync_withAccountSetToSyncRemoteDeletions_shouldDeleteLocalCopiesOfExistingMessagesBeforeEarliestPollDate() throws Exception { messageCountInRemoteFolder(1); Message remoteMessage = messageOnServer(); Date dateOfEarliestPoll = new Date(); configureSyncConfigWithSyncRemoteDeletionsAndEarliestPollDate(dateOfEarliestPoll); when(remoteMessage.olderThan(dateOfEarliestPoll)).thenReturn(true); when(backendFolder.getAllMessagesAndEffectiveDates()).thenReturn(Collections.singletonMap(MESSAGE_UID1, 0L)); imapSync.sync(FOLDER_NAME, syncConfig, listener, remoteFolder); verify(backendFolder).destroyMessages(messageListCaptor.capture()); assertEquals(MESSAGE_UID1, messageListCaptor.getValue().get(0)); }
@Override public void messageFinished(T message, int number, int ofTotal) { try { if (message.isSet(Flag.DELETED) || message.olderThan(earliestDate)) { if (message.isSet(Flag.DELETED)) { Timber.v("Newly downloaded message %s:%s:%s was marked deleted on server, " + "skipping", accountName, folder, message.getUid()); } else { Timber.d("Newly downloaded message %s is older than %s, skipping", message.getUid(), earliestDate); } progress.incrementAndGet(); //TODO: This might be the source of poll count errors in the UI. Is todo always the same as ofTotal listener.syncProgress(folder, progress.get(), todo); return; } if (syncConfig.getMaximumAutoDownloadMessageSize() > 0 && message.getSize() > syncConfig.getMaximumAutoDownloadMessageSize()) { largeMessages.add(message); } else { smallMessages.add(message); } } catch (Exception e) { Timber.e(e, "Error while storing downloaded message."); } }
@Override public void messageFinished(T message, int number, int ofTotal) { try { if (message.isSet(Flag.DELETED) || message.olderThan(earliestDate)) { if (message.isSet(Flag.DELETED)) { Timber.v("Newly downloaded message %s:%s:%s was marked deleted on server, " + "skipping", accountName, folder, message.getUid()); } else { Timber.d("Newly downloaded message %s is older than %s, skipping", message.getUid(), earliestDate); } progress.incrementAndGet(); //TODO: This might be the source of poll count errors in the UI. Is todo always the same as ofTotal listener.syncProgress(folder, progress.get(), todo); return; } if (syncConfig.getMaximumAutoDownloadMessageSize() > 0 && message.getSize() > syncConfig.getMaximumAutoDownloadMessageSize()) { largeMessages.add(message); } else { smallMessages.add(message); } } catch (Exception e) { Timber.e(e, "Error while storing downloaded message."); } }
@Override public void messageFinished(T message, int number, int ofTotal) { try { if (message.isSet(Flag.DELETED) || message.olderThan(earliestDate)) { if (message.isSet(Flag.DELETED)) { Timber.v("Newly downloaded message %s:%s:%s was marked deleted on server, " + "skipping", accountName, folder, message.getUid()); } else { Timber.d("Newly downloaded message %s is older than %s, skipping", message.getUid(), earliestDate); } progress.incrementAndGet(); //TODO: This might be the source of poll count errors in the UI. Is todo always the same as ofTotal listener.syncProgress(folder, progress.get(), todo); return; } if (syncConfig.getMaximumAutoDownloadMessageSize() > 0 && message.getSize() > syncConfig.getMaximumAutoDownloadMessageSize()) { largeMessages.add(message); } else { smallMessages.add(message); } } catch (Exception e) { Timber.e(e, "Error while storing downloaded message."); } }