/** * Cancels all file transfers for that user. * * @param user The user to cancel for. */ public void cancelFileTransfers(final User user) { final List<FileSender> fsList = tList.getFileSenders(user); final List<FileReceiver> frList = tList.getFileReceivers(user); for (final FileSender fs : fsList) { fs.cancel(); tList.removeFileSender(fs); } for (final FileReceiver fr : frList) { fr.cancel(); tList.removeFileReceiver(fr); } }
/** * Cancels all file transfers for that user. * * @param user The user to cancel for. */ public void cancelFileTransfers(final User user) { final List<FileSender> fsList = tList.getFileSenders(user); final List<FileReceiver> frList = tList.getFileReceivers(user); for (final FileSender fs : fsList) { fs.cancel(); tList.removeFileSender(fs); } for (final FileReceiver fr : frList) { fr.cancel(); tList.removeFileReceiver(fr); } }
@Test public void removeUserShouldCancelFileTransfers() { final User user = new User("User1", 124); userList.add(user); final FileReceiver fileReceiver1 = mock(FileReceiver.class); final FileReceiver fileReceiver2 = mock(FileReceiver.class); when(transferList.getFileReceivers(user)).thenReturn(Arrays.asList(fileReceiver1, fileReceiver2)); final FileSender fileSender1 = mock(FileSender.class); final FileSender fileSender2 = mock(FileSender.class); when(transferList.getFileSenders(user)).thenReturn(Arrays.asList(fileSender1, fileSender2)); controller.removeUser(user, "Bla bla"); verify(fileReceiver1).cancel(); verify(fileReceiver2).cancel(); verify(fileSender1).cancel(); verify(fileSender2).cancel(); verify(transferList).removeFileReceiver(fileReceiver1); verify(transferList).removeFileReceiver(fileReceiver2); verify(transferList).removeFileSender(fileSender1); verify(transferList).removeFileSender(fileSender2); }
@Test public void logOffShouldCancelFileTransfersWhenRemoveUsersIsFalse() { final User user1 = new User("User1", 124); userList.add(user1); final FileReceiver fileReceiver1 = mock(FileReceiver.class); when(transferList.getFileReceivers(user1)).thenReturn(Arrays.asList(fileReceiver1)); final User user2 = new User("User2", 125); userList.add(user2); final FileSender fileSender1 = mock(FileSender.class); when(transferList.getFileSenders(user2)).thenReturn(Arrays.asList(fileSender1)); controller.logOff(false); verify(fileReceiver1).cancel(); verify(fileSender1).cancel(); verify(transferList).removeFileReceiver(fileReceiver1); verify(transferList).removeFileSender(fileSender1); }
@Test public void logOffShouldCancelFileTransfersWhenRemoveUsersIsTrue() { final User user1 = new User("User1", 124); userList.add(user1); final FileReceiver fileReceiver1 = mock(FileReceiver.class); when(transferList.getFileReceivers(user1)).thenReturn(Arrays.asList(fileReceiver1)); final User user2 = new User("User2", 125); userList.add(user2); final FileSender fileSender1 = mock(FileSender.class); when(transferList.getFileSenders(user2)).thenReturn(Arrays.asList(fileSender1)); controller.logOff(true); verify(fileReceiver1).cancel(); verify(fileSender1).cancel(); verify(transferList).removeFileReceiver(fileReceiver1); verify(transferList).removeFileSender(fileSender1); }
@Test public void cancelShouldCancelAndNotifyRecipientIfFileSendIsWaiting() { final User someOne = setupSomeOne(); final FileSender fileSender = setupFileSender(someOne); when(fileSender.isWaiting()).thenReturn(true); final FileToSend file = setupFile(fileSender); when(fileSender.getUser()).thenReturn(someOne); parser.parse("/cancel SomeOne 1"); verify(transferList).getFileTransfer(someOne, 1); verify(transferList).removeFileSender(fileSender); verify(messageController).showSystemMessage("You cancelled sending of doc.pdf to SomeOne"); verify(controller).sendFileAbort(someOne, file.hashCode(), "doc.pdf"); verify(fileSender).cancel(); }
/** * The other user stopped a file transfer from the application user, * or the other way around. * Updates the status in the file sender. * * @param userCode The unique code of the other user. * @param fileName The name of the file. * @param fileHash The hash code of the file. */ @Override public void fileSendAborted(final int userCode, final String fileName, final int fileHash) { final User user = controller.getUser(userCode); final FileSender fileSender = tList.getFileSender(user, fileName, fileHash); if (fileSender != null) { fileSender.cancel(); msgController.showSystemMessage(user.getNick() + " aborted reception of " + fileName); tList.removeFileSender(fileSender); } final FileReceiver fileReceiver = tList.getFileReceiver(user, fileName); if (fileReceiver != null) { fileReceiver.cancel(); msgController.showSystemMessage(user.getNick() + " aborted sending of " + fileName); } }
/** * The other user stopped a file transfer from the application user, * or the other way around. * Updates the status in the file sender. * * @param userCode The unique code of the other user. * @param fileName The name of the file. * @param fileHash The hash code of the file. */ @Override public void fileSendAborted(final int userCode, final String fileName, final int fileHash) { final User user = controller.getUser(userCode); final FileSender fileSender = tList.getFileSender(user, fileName, fileHash); if (fileSender != null) { fileSender.cancel(); msgController.showSystemMessage(user.getNick() + " aborted reception of " + fileName); tList.removeFileSender(fileSender); } final FileReceiver fileReceiver = tList.getFileReceiver(user, fileName); if (fileReceiver != null) { fileReceiver.cancel(); msgController.showSystemMessage(user.getNick() + " aborted sending of " + fileName); } }
/** * The other user has accepted a file transfer. Will try to connect to the * user to send the file. * * @param userCode The unique code of the user who accepted a file transfer. * @param fileName The name of the file. * @param fileHash The hash code of the file. * @param port The port to use for connecting to the other user. */ @Override public void fileSendAccepted(final int userCode, final String fileName, final int fileHash, final int port) { final User user = controller.getUser(userCode); final FileSender fileSend = tList.getFileSender(user, fileName, fileHash); if (fileSend != null) { msgController.showSystemMessage(user.getNick() + " accepted sending of " + fileName); // Give the server some time to set up the connection first sleeper.sleep(200); if (fileSend.transfer(port)) { msgController.showSystemMessage(fileName + " successfully sent to " + user.getNick()); } else { msgController.showSystemMessage("Failed to send " + fileName + " to " + user.getNick()); } tList.removeFileSender(fileSend); } }
/** * Cancels a file transfer, even if the file transfer has not been * answered by the other user yet. * * @param fileTransfer The file transfer to cancel. */ public void cancelFileTransfer(final FileTransfer fileTransfer) { fileTransfer.cancel(); if (fileTransfer instanceof FileSender) { final FileSender fs = (FileSender) fileTransfer; // This means that the other user has not answered yet if (fs.isWaiting()) { final FileToSend file = fs.getFile(); final User user = fs.getUser(); msgController.showSystemMessage(coreMessages.getMessage("core.command.cancel.systemMessage.cancelled", file.getName(), user.getNick())); tList.removeFileSender(fs); controller.sendFileAbort(user, file.hashCode(), file.getName()); } } }
/** * The other user has accepted a file transfer. Will try to connect to the * user to send the file. * * @param userCode The unique code of the user who accepted a file transfer. * @param fileName The name of the file. * @param fileHash The hash code of the file. * @param port The port to use for connecting to the other user. */ @Override public void fileSendAccepted(final int userCode, final String fileName, final int fileHash, final int port) { final User user = controller.getUser(userCode); final FileSender fileSend = tList.getFileSender(user, fileName, fileHash); if (fileSend != null) { msgController.showSystemMessage(user.getNick() + " accepted sending of " + fileName); // Give the server some time to set up the connection first sleeper.sleep(200); if (fileSend.transfer(port)) { msgController.showSystemMessage(fileName + " successfully sent to " + user.getNick()); } else { msgController.showSystemMessage("Failed to send " + fileName + " to " + user.getNick()); } tList.removeFileSender(fileSend); } }
/** * Cancels a file transfer, even if the file transfer has not been * answered by the other user yet. * * @param fileTransfer The file transfer to cancel. */ public void cancelFileTransfer(final FileTransfer fileTransfer) { fileTransfer.cancel(); if (fileTransfer instanceof FileSender) { final FileSender fs = (FileSender) fileTransfer; // This means that the other user has not answered yet if (fs.isWaiting()) { final FileToSend file = fs.getFile(); final User user = fs.getUser(); msgController.showSystemMessage(coreMessages.getMessage("core.command.cancel.systemMessage.cancelled", file.getName(), user.getNick())); tList.removeFileSender(fs); controller.sendFileAbort(user, file.hashCode(), file.getName()); } } }