* @throws GmailException if it fails to move {@link GmailMessage} to the
* destination folder
*/
public void moveTo(ImapGmailLabel destFolder,int messageNumber){
if (messageNumber <= 0) {
throw new GmailException("ImapGmailClient invalid GmailMessage number");
}
Folder fromFolder = null;
Folder toFolder = null;
try {
final Store store = openGmailStore();
fromFolder = getFolder(this.srcFolder, store);
fromFolder.open(Folder.READ_WRITE);
Message message = fromFolder.getMessage(messageNumber);
if (message != null) {
toFolder = getFolder(destFolder.getName(), store);
if (fromFolder.getURLName().equals(toFolder.getURLName())) {
throw new GmailException("ImapGmailClient cannot move "
+ "GmailMessage within same folder "
+ "(from " + fromFolder.getFullName() + " to "
+ toFolder.getFullName() + ")");
}
// copy from source folder to destination folder
fromFolder.copyMessages(new Message[]{message}, toFolder);
// move the copied message to trash folder
moveToTrash(new GmailMessage[]{new JavaMailGmailMessage(message)});
}
} catch (GmailException ge) {
throw ge;
} catch (Exception e) {
throw new GmailException("ImapGmailClient failed moving"
+ " GmailMessage from " + fromFolder.getFullName(), e);
} finally {
closeFolder(fromFolder);
}
}