Package com.cubusmail.gwtui.server.services

Source Code of com.cubusmail.gwtui.server.services.ConvertUtil

/* ConvertUtil.java

   Copyright (c) 2009 Juergen Schlierf, All Rights Reserved
  
   This file is part of Cubusmail (http://code.google.com/p/cubusmail/).
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 3 of the License, or (at your option) any later version.
 
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
   License along with Cubusmail. If not, see <http://www.gnu.org/licenses/>.
  
*/
package com.cubusmail.gwtui.server.services;

import java.io.IOException;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Message.RecipientType;

import org.apache.commons.lang.StringUtils;

import com.cubusmail.core.CubusConstants;
import com.cubusmail.gwtui.client.model.GWTAddress;
import com.cubusmail.gwtui.client.model.GWTMailFolder;
import com.cubusmail.gwtui.client.model.GWTMailbox;
import com.cubusmail.gwtui.client.model.GWTMessage;
import com.cubusmail.gwtui.domain.MessageListFields;
import com.cubusmail.mail.IMailFolder;
import com.cubusmail.mail.IMailbox;
import com.cubusmail.mail.util.MessageUtils;
import com.cubusmail.mail.util.MessageUtils.AddressStringType;

/**
* Utils for GWT services.
*
* @author Juergen Schlierf
*/
public class ConvertUtil {

  public static GWTMailFolder[] convert( List<IMailFolder> mailFolderList ) {

    if ( mailFolderList != null && mailFolderList.size() > 0 ) {
      GWTMailFolder[] folderArray = new GWTMailFolder[mailFolderList.size()];
      int index = 0;
      for (IMailFolder mailFolder : mailFolderList) {
        folderArray[index++] = convert( mailFolder );
      }

      return folderArray;
    }

    return GWTMailFolder.EMPTY_FOLDER_ARRAY;
  }

  /**
   * Convert instances of IMailFolder to GWTMailFolder including subfolders.
   *
   * @param mailFolder
   * @return
   */
  public static GWTMailFolder convert( IMailFolder mailFolder ) {

    GWTMailFolder result = new GWTMailFolder();

    result.setId( mailFolder.getId() );
    result.setName( mailFolder.getName() );
    // result.setUnreadMessagesCount( mailFolder.getUnreadMessageCount() );
    result.setInbox( mailFolder.isInbox() );
    result.setDraft( mailFolder.isDraft() );
    result.setSent( mailFolder.isSent() );
    result.setTrash( mailFolder.isTrash() );
    result.setCreateSubfolderSupported( mailFolder.isCreateSubfolderSupported() );
    result.setMoveSupported( mailFolder.isMoveSupported() );
    result.setRenameSupported( mailFolder.isRenameSupported() );
    result.setDeleteSupported( mailFolder.isDeleteSupported() );
    result.setEmptySupported( mailFolder.isEmptySupported() );

    IMailFolder[] subfolders = mailFolder.getSubfolders();
    if ( subfolders.length > 0 ) {
      GWTMailFolder[] gwtSubfolders = new GWTMailFolder[subfolders.length];
      for (int i = 0; i < subfolders.length; i++) {
        IMailFolder subfolder = mailFolder.getSubfolders()[i];
        gwtSubfolders[i] = convert( subfolder );
        gwtSubfolders[i].setParent( result );
      }
      result.setSubfolders( gwtSubfolders );
    }

    return result;
  }

  /**
   * @param mailbox
   * @return
   */
  public static GWTMailbox convert( IMailbox mailbox ) {

    GWTMailbox result = new GWTMailbox();

    result.setEmailAddress( mailbox.getEmailAddress() );
    result.setFullName( mailbox.getFullName() );
    result.setUserAccount( mailbox.getUserAccount() );
    result.setLoggedIn( true );

    // result.setMailFolders( convert( mailbox.getMailFolderList() ) );

    return result;
  }

  /**
   * @param messages
   * @return
   * @throws MessagingException
   */
  public static GWTMessage[] convert( Message[] messages ) throws MessagingException {

    if ( messages != null ) {
      GWTMessage[] result = new GWTMessage[messages.length];
      for (int i = 0; i < messages.length; i++) {
        result[i] = convert( messages[i] );
      }
      return result;

    }
    else {
      return null;
    }
  }

  /**
   * @param msg
   * @return
   * @throws MessagingException
   */
  public static GWTMessage convert( Message msg ) throws MessagingException {

    GWTMessage result = new GWTMessage();
    result.setId( msg.getMessageNumber() );
    result.setSubject( msg.getSubject() );
    result.setFrom( MessageUtils.getMailAdressString( msg.getFrom(), AddressStringType.COMPLETE ) );
    result.setTo( MessageUtils.getMailAdressString( msg.getRecipients( Message.RecipientType.TO ),
        AddressStringType.COMPLETE ) );
    result.setCc( MessageUtils.getMailAdressString( msg.getRecipients( Message.RecipientType.CC ),
        AddressStringType.COMPLETE ) );
    result.setDate( msg.getSentDate() );
    result.setSize( MessageUtils.calculateAttachmentSize( msg.getSize() ) );

    return result;
  }

  /**
   * @param folder
   * @param msg
   * @param result
   * @throws MessagingException
   */
  public static void convertToStringArray( IMailFolder folder, Message msg, String[] result, DateFormat dateFormat,
      NumberFormat decimalFormat ) throws MessagingException {

    result[MessageListFields.ID.ordinal()] = Long.toString( folder.getUID( msg ) );
    try {
      result[MessageListFields.ATTACHMENT_FLAG.ordinal()] = Boolean.toString( MessageUtils.hasAttachments( msg ) );
    }
    catch (IOException e) {
      // do nothing
    }
    result[MessageListFields.READ_FLAG.ordinal()] = Boolean.toString( msg.isSet( Flags.Flag.SEEN ) );
    result[MessageListFields.DELETED_FLAG.ordinal()] = Boolean.toString( msg.isSet( Flags.Flag.DELETED ) );
    result[MessageListFields.ANSWERED_FLAG.ordinal()] = Boolean.toString( msg.isSet( Flags.Flag.ANSWERED ) );
    result[MessageListFields.DRAFT_FLAG.ordinal()] = Boolean.toString( msg.isSet( Flags.Flag.DRAFT ) );
    result[MessageListFields.PRIORITY.ordinal()] = Integer.toString( MessageUtils.getMessagePriority( msg ) );
    if ( !StringUtils.isEmpty( msg.getSubject() ) ) {
      result[MessageListFields.SUBJECT.ordinal()] = msg.getSubject();
    }
    result[MessageListFields.FROM.ordinal()] = MessageUtils.getMailAdressString( msg.getFrom(),
        AddressStringType.PERSONAL );
    result[MessageListFields.TO.ordinal()] = MessageUtils.getMailAdressString(
        msg.getRecipients( RecipientType.TO ), AddressStringType.PERSONAL );
    if ( msg.getSentDate() != null ) {
      result[MessageListFields.DATE.ordinal()] = dateFormat.format( msg.getSentDate() );
    }
    result[MessageListFields.SIZE.ordinal()] = MessageUtils.formatPartSize( MessageUtils
        .calculateAttachmentSize( msg.getSize() ), decimalFormat );
  }

  /**
   * @param addresses
   * @return
   */
  public static GWTAddress[] convertAddress( Address[] addresses ) throws MessagingException {

    if ( addresses != null ) {
      GWTAddress[] gwtAdresses = new GWTAddress[addresses.length];
      for (int i = 0; i < addresses.length; i++) {
        GWTAddress gwtAddress = new GWTAddress();
        gwtAddress.setInternetAddress( MessageUtils.getMailAdressString( addresses[i],
            AddressStringType.COMPLETE ) );
        gwtAddress.setName( MessageUtils.getMailAdressString( addresses[i], AddressStringType.PERSONAL_ONLY ) );
        gwtAddress.setEmail( MessageUtils.getMailAdressString( addresses[i], AddressStringType.EMAIL ) );
        gwtAdresses[i] = gwtAddress;
      }

      return gwtAdresses;
    }

    return null;
  }

  /**
   * @param locale
   * @return
   */
  public static ResourceBundle getTimezonesBundle( Locale locale ) {

    return ResourceBundle.getBundle( CubusConstants.TIMEZONES_BUNDLE_NAME, locale );
  }
}
TOP

Related Classes of com.cubusmail.gwtui.server.services.ConvertUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.