* @throws MessagingException
* @throws IOException
*/
public GWTMessage getGWTMessage() throws MessagingException, IOException {
GWTMessage gwtMsg = new GWTMessage();
gwtMsg.setFrom( getFrom() );
gwtMsg.setFromArray( ConvertUtil.convertAddress( this.message.getFrom() ) );
gwtMsg.setTo( getTo() );
gwtMsg.setToArray( ConvertUtil.convertAddress( this.message.getRecipients( RecipientType.TO ) ) );
gwtMsg.setCc( getCc() );
gwtMsg.setCcArray( ConvertUtil.convertAddress( this.message.getRecipients( RecipientType.CC ) ) );
gwtMsg.setBcc( getBcc() );
gwtMsg.setReplyTo( getReplyTo() );
gwtMsg.setReplyToArray( getReplyToArray() );
gwtMsg.setSubject( getSubject() );
gwtMsg.setDate( this.message.getSentDate() );
if ( isHtmlMessage() ) {
gwtMsg.setMessageText( getMessageTextHtml() );
}
else {
gwtMsg.setMessageText( getMessageTextPlain() );
}
gwtMsg.setHtmlMessage( isHtmlMessage() );
gwtMsg.setHasImages( isHasImages() );
gwtMsg.setTrustImages( isTrustImages() );
gwtMsg.setAcknowledgement( isAcknowledgement() );
gwtMsg.setReadBefore( this.readBefore );
gwtMsg.setRead( isRead() );
gwtMsg.setDraft( isDraftMessage() );
long id = getId();
gwtMsg.setId( id );
List<MimePart> parts = MessageUtils.attachmentsFromPart( this.message );
if ( parts.size() > 0 ) {
GWTAttachment[] attachments = new GWTAttachment[parts.size()];
for (int i = 0; i < parts.size(); i++) {
attachments[i] = new GWTAttachment();
String fileName = parts.get( i ).getFileName();
if ( StringUtils.isEmpty( fileName ) ) {
fileName = this.applicationContext.getMessage( "message.unknown.attachment", null, SessionManager
.get().getLocale() );
}
attachments[i].setFileName( fileName );
int size = parts.get( i ).getSize();
if ( parts.get( i ).getSize() == -1 ) {
try {
size = parts.get( i ).getInputStream().available();
}
catch (IOException e) {
size = -1;
}
}
NumberFormat sizeFormat = MessageUtils.createSizeFormat( SessionManager.get().getLocale() );
size = MessageUtils.calculateAttachmentSize( size );
attachments[i].setSize( size );
attachments[i].setSizeText( MessageUtils.formatPartSize( attachments[i].getSize(), sizeFormat ) );
attachments[i].setMessageId( id );
attachments[i].setIndex( i );
String extension = StringUtils.substringAfterLast( parts.get( i ).getFileName(), "." );
if ( extension != null ) {
extension = extension.toLowerCase();
if ( ArrayUtils.contains( PREVIEW_EXTENSIONS, extension ) ) {
attachments[i].setPreview( true );
}
}
}
gwtMsg.setAttachments( attachments );
}
Preferences preferences = SessionManager.get().getPreferences();
GWTMessageRecord[] messageArray = ConvertUtil.convertMessagesToStringArray( this.applicationContext, preferences,
(IMAPFolder) this.message.getFolder(), 1, new Message[] { this.message } );
gwtMsg.setMessageRecord( messageArray[0] );
return gwtMsg;
}