com.cubusmail.gwtui.server.services.ConvertUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.cubusmail.gwtui.server.services.ConvertUtil.java

Source

/* 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);
    }
}