/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package net.bionicmessage.funambol.citadel.sync; import com.funambol.email.pdi.converter.MailToXML; import com.funambol.email.pdi.mail.Email; import com.funambol.email.pdi.mail.EmailItem; import com.funambol.framework.engine.SyncItem; import com.funambol.framework.engine.SyncItemImpl; import com.funambol.framework.engine.SyncItemKey; import com.funambol.framework.engine.SyncItemState; import com.funambol.framework.engine.source.SyncSource; import java.util.Date; import net.bionicmessage.funambol.citadel.store.CitadelMailObject; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import net.bionicmessage.funambol.citadel.store.CitadelPart; /** * * @author matt */ public class OutboundEmailItem { /* For <created> tag */ static private SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd'T'HHmmss"); protected CitadelMailObject mailObject = null; protected SyncItem si = null; protected int cropAtBytes = -1; protected boolean addAttachments = false; public OutboundEmailItem() { } public void setMailObject(CitadelMailObject cmo) { mailObject = cmo; } public CitadelMailObject getMailObject() { return mailObject; } public SyncItem getSyncItem(SyncSource originator, SyncItemKey key, SyncItemKey parent) throws Exception { si = new SyncItemImpl(originator, key, parent.getKeyAsString(), SyncItemState.NEW); Email eml = new Email(); eml.getParentId().setPropertyValue(parent.getKeyValue()); if (mailObject != null && mailObject.hasData()) { String rfc822 = CitadelToRFC822.convertToRFC822(mailObject, cropAtBytes, addAttachments); eml.getEmailItem().setPropertyValue(rfc822); } boolean read = mailObject.isSeen(); eml.getRead().setPropertyValue(Boolean.toString(read)); // for now eml.getForwarded().setPropertyValue("false"); eml.getDeleted().setPropertyValue("false"); eml.getReplied().setPropertyValue("false"); eml.getFlagged().setPropertyValue("false"); Date created = mailObject.getTime(); String dtCreated = fmt.format(created); eml.getCreated().setPropertyValue(dtCreated); MailToXML mtx = new MailToXML(null, "UTF-8"); String content = mtx.convert(eml); si.setContent(content.getBytes("UTF-8")); si.setFormat("UTF-8"); si.setType("application/vnd.omads-email+xml"); return si; } public void setCropAtBytes(int cropAtBytes) { this.cropAtBytes = cropAtBytes; } public boolean doAttachmentsFitInsideCrop() { if (cropAtBytes > -1) { int totalSize = mailObject.getData().length(); List<CitadelPart> partList = mailObject.getAttachedParts(); Iterator<CitadelPart> partIterator = partList.iterator(); while (partIterator.hasNext()) { CitadelPart part = partIterator.next(); totalSize = totalSize + part.getPartSize(); } return (totalSize < cropAtBytes); } return true; } public void setAddAttachments(boolean addAttachments) { this.addAttachments = addAttachments; } }