Avoid runtime type checks/casts
This commit is contained in:
parent
8179d88113
commit
5d2e28e8ed
4 changed files with 119 additions and 81 deletions
|
@ -1736,19 +1736,8 @@ public class MessagingController {
|
||||||
* other command processes. This maintains the order of the commands.
|
* other command processes. This maintains the order of the commands.
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
if (command instanceof PendingAppend) {
|
command.execute(this, account);
|
||||||
processPendingAppend((PendingAppend) command, account);
|
|
||||||
} else if (command instanceof PendingSetFlag) {
|
|
||||||
processPendingSetFlag((PendingSetFlag) command, account);
|
|
||||||
} else if (command instanceof PendingMarkAllAsRead) {
|
|
||||||
processPendingMarkAllAsRead((PendingMarkAllAsRead) command, account);
|
|
||||||
} else if (command instanceof PendingMoveOrCopy) {
|
|
||||||
processPendingMoveOrCopy((PendingMoveOrCopy) command, account);
|
|
||||||
} else if (command instanceof PendingEmptyTrash) {
|
|
||||||
processPendingEmptyTrash((PendingEmptyTrash) command, account);
|
|
||||||
} else if (command instanceof PendingExpunge) {
|
|
||||||
processPendingExpunge((PendingExpunge) command, account);
|
|
||||||
}
|
|
||||||
localStore.removePendingCommand(command);
|
localStore.removePendingCommand(command);
|
||||||
if (K9.DEBUG) {
|
if (K9.DEBUG) {
|
||||||
Log.d(K9.LOG_TAG, "Done processing pending command '" + command + "'");
|
Log.d(K9.LOG_TAG, "Done processing pending command '" + command + "'");
|
||||||
|
@ -1789,7 +1778,7 @@ public class MessagingController {
|
||||||
* created.
|
* created.
|
||||||
* TODO update the local message UID instead of deleteing it
|
* TODO update the local message UID instead of deleteing it
|
||||||
*/
|
*/
|
||||||
private void processPendingAppend(PendingAppend command, Account account) throws MessagingException {
|
void processPendingAppend(PendingAppend command, Account account) throws MessagingException {
|
||||||
Folder remoteFolder = null;
|
Folder remoteFolder = null;
|
||||||
LocalFolder localFolder = null;
|
LocalFolder localFolder = null;
|
||||||
try {
|
try {
|
||||||
|
@ -1915,7 +1904,7 @@ public class MessagingController {
|
||||||
if (account.getErrorFolderName().equals(srcFolder)) {
|
if (account.getErrorFolderName().equals(srcFolder)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PendingCommand command = MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uids);
|
PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids);
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1927,12 +1916,12 @@ public class MessagingController {
|
||||||
if (account.getErrorFolderName().equals(srcFolder)) {
|
if (account.getErrorFolderName().equals(srcFolder)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PendingCommand command = MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uidMap);
|
PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap);
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processPendingMoveOrCopy(PendingMoveOrCopy command, Account account) throws MessagingException {
|
void processPendingMoveOrCopy(PendingMoveOrCopy command, Account account) throws MessagingException {
|
||||||
Folder remoteSrcFolder = null;
|
Folder remoteSrcFolder = null;
|
||||||
Folder remoteDestFolder = null;
|
Folder remoteDestFolder = null;
|
||||||
LocalFolder localDestFolder;
|
LocalFolder localDestFolder;
|
||||||
|
@ -2031,7 +2020,7 @@ public class MessagingController {
|
||||||
putBackground("queueSetFlag " + account.getDescription() + ":" + folderName, null, new Runnable() {
|
putBackground("queueSetFlag " + account.getDescription() + ":" + folderName, null, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
PendingCommand command = MessagingControllerCommands.createSetFlag(folderName, newState, flag, uids);
|
PendingCommand command = PendingSetFlag.create(folderName, newState, flag, uids);
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
|
@ -2040,7 +2029,7 @@ public class MessagingController {
|
||||||
/**
|
/**
|
||||||
* Processes a pending mark read or unread command.
|
* Processes a pending mark read or unread command.
|
||||||
*/
|
*/
|
||||||
private void processPendingSetFlag(PendingSetFlag command, Account account) throws MessagingException {
|
void processPendingSetFlag(PendingSetFlag command, Account account) throws MessagingException {
|
||||||
String folder = command.folder;
|
String folder = command.folder;
|
||||||
|
|
||||||
if (account.getErrorFolderName().equals(folder) || account.getOutboxFolderName().equals(folder)) {
|
if (account.getErrorFolderName().equals(folder) || account.getOutboxFolderName().equals(folder)) {
|
||||||
|
@ -2081,13 +2070,13 @@ public class MessagingController {
|
||||||
putBackground("queueExpunge " + account.getDescription() + ":" + folderName, null, new Runnable() {
|
putBackground("queueExpunge " + account.getDescription() + ":" + folderName, null, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
PendingCommand command = MessagingControllerCommands.createExpunge(folderName);
|
PendingCommand command = PendingExpunge.create(folderName);
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
private void processPendingExpunge(PendingExpunge command, Account account) throws MessagingException {
|
void processPendingExpunge(PendingExpunge command, Account account) throws MessagingException {
|
||||||
String folder = command.folder;
|
String folder = command.folder;
|
||||||
|
|
||||||
if (account.getErrorFolderName().equals(folder)) {
|
if (account.getErrorFolderName().equals(folder)) {
|
||||||
|
@ -2114,7 +2103,7 @@ public class MessagingController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processPendingMarkAllAsRead(PendingMarkAllAsRead command, Account account) throws MessagingException {
|
void processPendingMarkAllAsRead(PendingMarkAllAsRead command, Account account) throws MessagingException {
|
||||||
String folder = command.folder;
|
String folder = command.folder;
|
||||||
Folder remoteFolder = null;
|
Folder remoteFolder = null;
|
||||||
LocalFolder localFolder = null;
|
LocalFolder localFolder = null;
|
||||||
|
@ -2238,7 +2227,7 @@ public class MessagingController {
|
||||||
if (K9.DEBUG) {
|
if (K9.DEBUG) {
|
||||||
Log.i(K9.LOG_TAG, "Marking all messages in " + account.getDescription() + ":" + folder + " as read");
|
Log.i(K9.LOG_TAG, "Marking all messages in " + account.getDescription() + ":" + folder + " as read");
|
||||||
}
|
}
|
||||||
PendingCommand command = MessagingControllerCommands.createMarkAllAsRead(folder);
|
PendingCommand command = PendingMarkAllAsRead.create(folder);
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
|
@ -2821,7 +2810,7 @@ public class MessagingController {
|
||||||
if (K9.DEBUG)
|
if (K9.DEBUG)
|
||||||
Log.i(K9.LOG_TAG, "Moved sent message to folder '" + account.getSentFolderName() + "' (" + localSentFolder.getId() + ") ");
|
Log.i(K9.LOG_TAG, "Moved sent message to folder '" + account.getSentFolderName() + "' (" + localSentFolder.getId() + ") ");
|
||||||
|
|
||||||
PendingCommand command = MessagingControllerCommands.createAppend(localSentFolder.getName(), message.getUid());
|
PendingCommand command = PendingAppend.create(localSentFolder.getName(), message.getUid());
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
|
@ -3420,7 +3409,7 @@ public class MessagingController {
|
||||||
for (Message message : messages) {
|
for (Message message : messages) {
|
||||||
// If the message was in the Outbox, then it has been copied to local Trash, and has
|
// If the message was in the Outbox, then it has been copied to local Trash, and has
|
||||||
// to be copied to remote trash
|
// to be copied to remote trash
|
||||||
PendingCommand command = MessagingControllerCommands.createAppend(account.getTrashFolderName(), message.getUid());
|
PendingCommand command = PendingAppend.create(account.getTrashFolderName(), message.getUid());
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
}
|
}
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
|
@ -3461,8 +3450,7 @@ public class MessagingController {
|
||||||
return uids;
|
return uids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("UnusedParameters") // for consistency with other PendingCommand methods
|
void processPendingEmptyTrash(Account account) throws MessagingException {
|
||||||
private void processPendingEmptyTrash(PendingEmptyTrash command, Account account) throws MessagingException {
|
|
||||||
Store remoteStore = account.getRemoteStore();
|
Store remoteStore = account.getRemoteStore();
|
||||||
|
|
||||||
Folder remoteFolder = remoteStore.getFolder(account.getTrashFolderName());
|
Folder remoteFolder = remoteStore.getFolder(account.getTrashFolderName());
|
||||||
|
@ -3508,7 +3496,7 @@ public class MessagingController {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isTrashLocalOnly) {
|
if (!isTrashLocalOnly) {
|
||||||
PendingCommand command = MessagingControllerCommands.createEmptyTrash();
|
PendingCommand command = PendingEmptyTrash.create();
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
|
@ -4001,7 +3989,7 @@ public class MessagingController {
|
||||||
localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true);
|
localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true);
|
||||||
|
|
||||||
if (saveRemotely) {
|
if (saveRemotely) {
|
||||||
PendingCommand command = MessagingControllerCommands.createAppend(localFolder.getName(), localMessage.getUid());
|
PendingCommand command = PendingAppend.create(localFolder.getName(), localMessage.getUid());
|
||||||
queuePendingCommand(account, command);
|
queuePendingCommand(account, command);
|
||||||
processPendingCommands(account);
|
processPendingCommands(account);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,9 @@ package com.fsck.k9.controller;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.fsck.k9.Account;
|
||||||
import com.fsck.k9.mail.Flag;
|
import com.fsck.k9.mail.Flag;
|
||||||
|
import com.fsck.k9.mail.MessagingException;
|
||||||
|
|
||||||
|
|
||||||
public class MessagingControllerCommands {
|
public class MessagingControllerCommands {
|
||||||
|
@ -16,41 +18,14 @@ public class MessagingControllerCommands {
|
||||||
static final String COMMAND_EMPTY_TRASH = "empty_trash";
|
static final String COMMAND_EMPTY_TRASH = "empty_trash";
|
||||||
|
|
||||||
|
|
||||||
public static PendingSetFlag createSetFlag(String folder, boolean newState, Flag flag, List<String> uids) {
|
public abstract static class PendingCommand {
|
||||||
return new PendingSetFlag(folder, newState, flag, uids);
|
public long databaseId;
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingExpunge createExpunge(String folderName) {
|
|
||||||
return new PendingExpunge(folderName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingMarkAllAsRead createMarkAllAsRead(String folder) {
|
|
||||||
return new PendingMarkAllAsRead(folder);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingAppend createAppend(String folderName, String uid) {
|
|
||||||
return new PendingAppend(folderName, uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingEmptyTrash createEmptyTrash() {
|
|
||||||
return new PendingEmptyTrash();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingMoveOrCopy createMoveOrCopyBulk(String srcFolder, String destFolder, boolean isCopy, Map<String, String> uidMap) {
|
|
||||||
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, null, uidMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PendingMoveOrCopy createMoveOrCopyBulk(String srcFolder, String destFolder, boolean isCopy, List<String> uids) {
|
|
||||||
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, uids, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static abstract class PendingCommand {
|
PendingCommand() { }
|
||||||
public transient long databaseId;
|
|
||||||
|
|
||||||
public abstract String getCommandName();
|
public abstract String getCommandName();
|
||||||
|
public abstract void execute(MessagingController controller, Account account) throws MessagingException;
|
||||||
private PendingCommand() { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingMoveOrCopy extends PendingCommand {
|
public static class PendingMoveOrCopy extends PendingCommand {
|
||||||
|
@ -60,8 +35,18 @@ public class MessagingControllerCommands {
|
||||||
public final List<String> uids;
|
public final List<String> uids;
|
||||||
public final Map<String, String> newUidMap;
|
public final Map<String, String> newUidMap;
|
||||||
|
|
||||||
public PendingMoveOrCopy(
|
|
||||||
String srcFolder, String destFolder, boolean isCopy, List<String> uids, Map<String, String> newUidMap) {
|
public static PendingMoveOrCopy create(String srcFolder, String destFolder, boolean isCopy,
|
||||||
|
Map<String, String> uidMap) {
|
||||||
|
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, null, uidMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PendingMoveOrCopy create(String srcFolder, String destFolder, boolean isCopy, List<String> uids) {
|
||||||
|
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, uids, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingMoveOrCopy(String srcFolder, String destFolder, boolean isCopy, List<String> uids,
|
||||||
|
Map<String, String> newUidMap) {
|
||||||
this.srcFolder = srcFolder;
|
this.srcFolder = srcFolder;
|
||||||
this.destFolder = destFolder;
|
this.destFolder = destFolder;
|
||||||
this.isCopy = isCopy;
|
this.isCopy = isCopy;
|
||||||
|
@ -69,15 +54,31 @@ public class MessagingControllerCommands {
|
||||||
this.newUidMap = newUidMap;
|
this.newUidMap = newUidMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_MOVE_OR_COPY;
|
return COMMAND_MOVE_OR_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingMoveOrCopy(this, account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingEmptyTrash extends PendingCommand {
|
public static class PendingEmptyTrash extends PendingCommand {
|
||||||
|
public static PendingEmptyTrash create() {
|
||||||
|
return new PendingEmptyTrash();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_EMPTY_TRASH;
|
return COMMAND_EMPTY_TRASH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingEmptyTrash(account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingSetFlag extends PendingCommand {
|
public static class PendingSetFlag extends PendingCommand {
|
||||||
|
@ -86,53 +87,97 @@ public class MessagingControllerCommands {
|
||||||
public final Flag flag;
|
public final Flag flag;
|
||||||
public final List<String> uids;
|
public final List<String> uids;
|
||||||
|
|
||||||
public PendingSetFlag(String folder, boolean newState, Flag flag, List<String> uids) {
|
|
||||||
|
public static PendingSetFlag create(String folder, boolean newState, Flag flag, List<String> uids) {
|
||||||
|
return new PendingSetFlag(folder, newState, flag, uids);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingSetFlag(String folder, boolean newState, Flag flag, List<String> uids) {
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
this.newState = newState;
|
this.newState = newState;
|
||||||
this.flag = flag;
|
this.flag = flag;
|
||||||
this.uids = uids;
|
this.uids = uids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_SET_FLAG;
|
return COMMAND_SET_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingSetFlag(this, account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingAppend extends PendingCommand {
|
public static class PendingAppend extends PendingCommand {
|
||||||
public final String folder;
|
public final String folder;
|
||||||
public final String uid;
|
public final String uid;
|
||||||
|
|
||||||
public PendingAppend(String folder, String uid) {
|
|
||||||
|
public static PendingAppend create(String folderName, String uid) {
|
||||||
|
return new PendingAppend(folderName, uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingAppend(String folder, String uid) {
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
this.uid = uid;
|
this.uid = uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_APPEND;
|
return COMMAND_APPEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingAppend(this, account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingMarkAllAsRead extends PendingCommand {
|
public static class PendingMarkAllAsRead extends PendingCommand {
|
||||||
public final String folder;
|
public final String folder;
|
||||||
|
|
||||||
public PendingMarkAllAsRead(String folder) {
|
|
||||||
|
public static PendingMarkAllAsRead create(String folder) {
|
||||||
|
return new PendingMarkAllAsRead(folder);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingMarkAllAsRead(String folder) {
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_MARK_ALL_AS_READ;
|
return COMMAND_MARK_ALL_AS_READ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingMarkAllAsRead(this, account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PendingExpunge extends PendingCommand {
|
public static class PendingExpunge extends PendingCommand {
|
||||||
public final String folder;
|
public final String folder;
|
||||||
|
|
||||||
public PendingExpunge(String folder) {
|
|
||||||
|
public static PendingExpunge create(String folderName) {
|
||||||
|
return new PendingExpunge(folderName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PendingExpunge(String folder) {
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getCommandName() {
|
public String getCommandName() {
|
||||||
return COMMAND_EXPUNGE;
|
return COMMAND_EXPUNGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MessagingController controller, Account account) throws MessagingException {
|
||||||
|
controller.processPendingExpunge(this, account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,13 @@ import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.fsck.k9.controller.MessagingControllerCommands;
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingAppend;
|
||||||
import com.fsck.k9.controller.MessagingControllerCommands.PendingCommand;
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingCommand;
|
||||||
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingEmptyTrash;
|
||||||
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingExpunge;
|
||||||
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingMarkAllAsRead;
|
||||||
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingMoveOrCopy;
|
||||||
|
import com.fsck.k9.controller.MessagingControllerCommands.PendingSetFlag;
|
||||||
import com.fsck.k9.controller.PendingCommandSerializer;
|
import com.fsck.k9.controller.PendingCommandSerializer;
|
||||||
import com.fsck.k9.helper.Utility;
|
import com.fsck.k9.helper.Utility;
|
||||||
import com.fsck.k9.mail.Flag;
|
import com.fsck.k9.mail.Flag;
|
||||||
|
@ -112,11 +117,11 @@ class MigrationTo60 {
|
||||||
|
|
||||||
private static PendingCommand migrateCommandExpunge(OldPendingCommand command) {
|
private static PendingCommand migrateCommandExpunge(OldPendingCommand command) {
|
||||||
String folder = command.arguments[0];
|
String folder = command.arguments[0];
|
||||||
return MessagingControllerCommands.createExpunge(folder);
|
return PendingExpunge.create(folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandEmptyTrash() {
|
private static PendingCommand migrateCommandEmptyTrash() {
|
||||||
return MessagingControllerCommands.createEmptyTrash();
|
return PendingEmptyTrash.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandMoveOrCopy(OldPendingCommand command) {
|
private static PendingCommand migrateCommandMoveOrCopy(OldPendingCommand command) {
|
||||||
|
@ -125,7 +130,7 @@ class MigrationTo60 {
|
||||||
String destFolder = command.arguments[2];
|
String destFolder = command.arguments[2];
|
||||||
boolean isCopy = Boolean.parseBoolean(command.arguments[3]);
|
boolean isCopy = Boolean.parseBoolean(command.arguments[3]);
|
||||||
|
|
||||||
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, singletonList(uid));
|
return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, singletonList(uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandMoveOrCopyBulkNew(OldPendingCommand command) {
|
private static PendingCommand migrateCommandMoveOrCopyBulkNew(OldPendingCommand command) {
|
||||||
|
@ -141,12 +146,12 @@ class MigrationTo60 {
|
||||||
uidMap.put(command.arguments[i], command.arguments[i + offset]);
|
uidMap.put(command.arguments[i], command.arguments[i + offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uidMap);
|
return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap);
|
||||||
} else {
|
} else {
|
||||||
List<String> uids = new ArrayList<>(command.arguments.length - 4);
|
List<String> uids = new ArrayList<>(command.arguments.length - 4);
|
||||||
uids.addAll(Arrays.asList(command.arguments).subList(4, command.arguments.length));
|
uids.addAll(Arrays.asList(command.arguments).subList(4, command.arguments.length));
|
||||||
|
|
||||||
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uids);
|
return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +171,7 @@ class MigrationTo60 {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandMarkAllAsRead(OldPendingCommand command) {
|
private static PendingCommand migrateCommandMarkAllAsRead(OldPendingCommand command) {
|
||||||
return MessagingControllerCommands.createMarkAllAsRead(command.arguments[0]);
|
return PendingMarkAllAsRead.create(command.arguments[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandSetFlag(OldPendingCommand command) {
|
private static PendingCommand migrateCommandSetFlag(OldPendingCommand command) {
|
||||||
|
@ -175,7 +180,7 @@ class MigrationTo60 {
|
||||||
boolean newState = Boolean.parseBoolean(command.arguments[2]);
|
boolean newState = Boolean.parseBoolean(command.arguments[2]);
|
||||||
Flag flag = Flag.valueOf(command.arguments[3]);
|
Flag flag = Flag.valueOf(command.arguments[3]);
|
||||||
|
|
||||||
return MessagingControllerCommands.createSetFlag(folder, newState, flag, singletonList(uid));
|
return PendingSetFlag.create(folder, newState, flag, singletonList(uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandSetFlagBulk(OldPendingCommand command) {
|
private static PendingCommand migrateCommandSetFlagBulk(OldPendingCommand command) {
|
||||||
|
@ -186,13 +191,13 @@ class MigrationTo60 {
|
||||||
List<String> uids = new ArrayList<>(command.arguments.length - 3);
|
List<String> uids = new ArrayList<>(command.arguments.length - 3);
|
||||||
uids.addAll(Arrays.asList(command.arguments).subList(3, command.arguments.length));
|
uids.addAll(Arrays.asList(command.arguments).subList(3, command.arguments.length));
|
||||||
|
|
||||||
return MessagingControllerCommands.createSetFlag(folder, newState, flag, uids);
|
return PendingSetFlag.create(folder, newState, flag, uids);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingCommand migrateCommandAppend(OldPendingCommand command) {
|
private static PendingCommand migrateCommandAppend(OldPendingCommand command) {
|
||||||
String folder = command.arguments[0];
|
String folder = command.arguments[0];
|
||||||
String uid = command.arguments[1];
|
String uid = command.arguments[1];
|
||||||
return MessagingControllerCommands.createAppend(folder, uid);
|
return PendingAppend.create(folder, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<OldPendingCommand> getPendingCommands(SQLiteDatabase db) {
|
private static List<OldPendingCommand> getPendingCommands(SQLiteDatabase db) {
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class PendingCommandSerializerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserialize__withoutArguments() {
|
public void testSerializeDeserialize__withoutArguments() {
|
||||||
PendingCommand pendingCommand = MessagingControllerCommands.createEmptyTrash();
|
PendingCommand pendingCommand = PendingEmptyTrash.create();
|
||||||
|
|
||||||
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
||||||
PendingEmptyTrash unserializedCommand = (PendingEmptyTrash) pendingCommandSerializer.unserialize(
|
PendingEmptyTrash unserializedCommand = (PendingEmptyTrash) pendingCommandSerializer.unserialize(
|
||||||
|
@ -43,7 +43,7 @@ public class PendingCommandSerializerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserialize__withArguments() {
|
public void testSerializeDeserialize__withArguments() {
|
||||||
PendingCommand pendingCommand = MessagingControllerCommands.createAppend(SOURCE_FOLDER, UID);
|
PendingCommand pendingCommand = PendingAppend.create(SOURCE_FOLDER, UID);
|
||||||
|
|
||||||
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
||||||
PendingAppend unserializedCommand = (PendingAppend) pendingCommandSerializer.unserialize(
|
PendingAppend unserializedCommand = (PendingAppend) pendingCommandSerializer.unserialize(
|
||||||
|
@ -56,7 +56,7 @@ public class PendingCommandSerializerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserialize__withComplexArguments() {
|
public void testSerializeDeserialize__withComplexArguments() {
|
||||||
PendingCommand pendingCommand = MessagingControllerCommands.createMoveOrCopyBulk(
|
PendingCommand pendingCommand = PendingMoveOrCopy.create(
|
||||||
SOURCE_FOLDER, DEST_FOLDER, IS_COPY, UID_MAP);
|
SOURCE_FOLDER, DEST_FOLDER, IS_COPY, UID_MAP);
|
||||||
|
|
||||||
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
||||||
|
@ -71,10 +71,10 @@ public class PendingCommandSerializerTest {
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void testDeserialize__withUnknownCommandName__shouldFail() {
|
public void testDeserialize__withUnknownCommandName__shouldFail() {
|
||||||
PendingCommand pendingCommand = MessagingControllerCommands.createEmptyTrash();
|
PendingCommand pendingCommand = PendingEmptyTrash.create();
|
||||||
|
|
||||||
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
|
||||||
pendingCommandSerializer.unserialize(DATABASE_ID, "BAD_COMMAND_NAME", serializedCommand);
|
pendingCommandSerializer.unserialize(DATABASE_ID, "BAD_COMMAND_NAME", serializedCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue