private static PendingCommand migrateCommandMoveOrCopy(OldPendingCommand command) { String srcFolder = command.arguments[0]; String uid = command.arguments[1]; String destFolder = command.arguments[2]; boolean isCopy = Boolean.parseBoolean(command.arguments[3]); return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, singletonList(uid)); }
private static PendingCommand migrateCommandMoveOrCopyBulkNew(OldPendingCommand command) { String srcFolder = command.arguments[0]; String destFolder = command.arguments[1]; boolean isCopy = Boolean.parseBoolean(command.arguments[2]); boolean hasNewUids = Boolean.parseBoolean(command.arguments[3]); if (hasNewUids) { Map<String, String> uidMap = new HashMap<>(); int offset = (command.arguments.length - 4) / 2; for (int i = 4; i < 4 + offset; i++) { uidMap.put(command.arguments[i], command.arguments[i + offset]); } return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap); } else { List<String> uids = new ArrayList<>(command.arguments.length - 4); uids.addAll(Arrays.asList(command.arguments).subList(4, command.arguments.length)); return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids); } }
private void queueMoveOrCopy(Account account, String srcFolder, String destFolder, boolean isCopy, List<String> uids, Map<String, String> uidMap) { if (uidMap == null || uidMap.isEmpty()) { queueMoveOrCopy(account, srcFolder, destFolder, isCopy, uids); } else { PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap); queuePendingCommand(account, command); } }
@Test public void testSerializeDeserialize__withComplexArguments() { PendingCommand pendingCommand = PendingMoveOrCopy.create( SOURCE_FOLDER, DEST_FOLDER, IS_COPY, UID_MAP); String serializedCommand = pendingCommandSerializer.serialize(pendingCommand); PendingMoveOrCopy unserializedCommand = (PendingMoveOrCopy) pendingCommandSerializer.unserialize( DATABASE_ID, pendingCommand.getCommandName(), serializedCommand); assertEquals(DATABASE_ID, unserializedCommand.databaseId); assertEquals(SOURCE_FOLDER, unserializedCommand.srcFolder); assertEquals(DEST_FOLDER, unserializedCommand.destFolder); assertEquals(UID_MAP, unserializedCommand.newUidMap); }
private void queueMoveOrCopy(Account account, String srcFolder, String destFolder, boolean isCopy, List<String> uids) { PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids); queuePendingCommand(account, command); }