package com.idega.block.email.client.presentation; import com.idega.block.email.client.business.*; import com.idega.block.email.business.EmailAccount; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.PresentationObject; import com.idega.presentation.Table; import com.idega.presentation.ui.*; import com.idega.presentation.text.*; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import java.util.Map; import java.util.Iterator; /** * Title: * Description: * Copyright: Copyright (c) 2001 * Company: * @author <br><a href="mailto:aron@idega.is">Aron Birkir</a><br> * @version 1.0 */ public class MailClient extends Block { private final static String prmMsgStartIndex = "em_cl_msg_st_in"; private final static String prmMsgNum = "em_cl_msg_num"; private final static String prmSessionUser = "em_email_user"; private final static String prmSessionUserMsgs = "em_email_user_msgs"; private final static String prmAction = "em_client_action"; private MailUserBean mailuser; private Map messagesMap; private EmailAccount mailaccount; private IWBundle iwb ; private IWResourceBundle iwrb; private String EMAILBUNDLE_IDENTIFIER = "com.idega.block.email"; public MailClient() { } public String getBundleIdentifier(){ return this.EMAILBUNDLE_IDENTIFIER; } public void main(IWContext iwc) throws Exception{ debugParameters(iwc); this.iwb = getBundle(iwc); this.iwrb = getResourceBundle(iwc); // process forms processForm(iwc); // initialize accounts initAccount(iwc); Table T = new Table(); if(this.mailuser!=null){ if(iwc.isParameterSet(prmMsgNum)) { T.add(getMessage(iwc)); } else { T.add(getListMessages(iwc)); } } else{ T.add(getLogin(iwc)); } Form f = new Form(); f.add(T); add(f); } public void initAccount(IWContext iwc) throws Exception{ if(iwc.getSessionAttribute(prmSessionUser)!=null){ this.mailuser = ( MailUserBean ) iwc.getSessionAttribute(prmSessionUser); this.messagesMap = (Map) iwc.getSessionAttribute(prmSessionUserMsgs); } else { if(this.mailaccount!=null){ this.mailuser = new MailUserBean(); this.mailuser.setHostname(this.mailaccount.getHost()); this.mailuser.setPassword(this.mailaccount.getPassword()); this.mailuser.setProtocol(this.mailaccount.getProtocolName()); this.mailuser.setUsername(this.mailaccount.getUser()); } else if("login".equals(iwc.getParameter(prmAction))){ this.mailuser = new MailUserBean(); String user = iwc.getParameter("user"); String pass = iwc.getParameter("pass"); String host = iwc.getParameter("host"); String prot = iwc.getParameter("prot"); this.mailuser.setHostname(host); this.mailuser.setPassword(pass); this.mailuser.setProtocol(prot); this.mailuser.setUsername(user); } if(this.mailuser!=null){ this.mailuser.login(); this.messagesMap = MessageFinder.getMappedMessagesInfo(this.mailuser); iwc.setSessionAttribute(prmSessionUser,this.mailuser); iwc.setSessionAttribute(prmSessionUserMsgs,this.messagesMap); } } } public void processForm(IWContext iwc){ } public PresentationObject getLogin(IWContext iwc){ Table T = new Table(); T.add(this.iwrb.getLocalizedString("client.user","User"),1,1); T.add(new TextInput("user"),2,1); T.add(this.iwrb.getLocalizedString("client.password","Password"),1,2); T.add(new TextInput("pass"),2,2); T.add(this.iwrb.getLocalizedString("client.host","Host"),1,3); T.add(new TextInput("host"),2,3); T.add(this.iwrb.getLocalizedString("client.protocol","Protocol"),1,4); T.add(new TextInput("prot","pop3"),2,4); T.add(new SubmitButton(this.iwrb.getLocalizedImageButton("client.login","Login"),prmAction,"login"),2,5); return T; } public PresentationObject getListMessages(IWContext iwc){ Table T = new Table(); int row = 1; T.add(this.iwrb.getLocalizedString("client.from","From") ,1,row); T.add(this.iwrb.getLocalizedString("client.subject","Subject"),2,row); T.add(this.iwrb.getLocalizedString("client.date","date"),3,row); row++; try { if(this.messagesMap!=null && this.messagesMap.size() >0){ Iterator iter = this.messagesMap.values().iterator(); MessageInfo m; while(iter.hasNext()){ m = (MessageInfo) iter.next(); Link l = new Link(m.getSubject()); l.addParameter(prmMsgNum,m.getNum()); T.add(m.getFrom(),1,row); T.add(l,2,row); T.add(m.getDate(),3,row); T.add(m.getNum(),4,row); row++; } } } catch (Exception ex) { ex.printStackTrace(); } return T; } public PresentationObject getMessage(IWContext iwc) throws Exception{ Table T = new Table(2,5); String num = iwc.getParameter(prmMsgNum); if(num!=null){ MessageInfo m = (MessageInfo) this.messagesMap.get(new Integer(num)); if(m!=null){ T.add(this.iwrb.getLocalizedString("client.from","From"),1,1); T.add(m.getFrom(),2,1); T.add(this.iwrb.getLocalizedString("client.date","Date"),1,2); T.add(m.getDate(),2,2); T.add(this.iwrb.getLocalizedString("client.to","To"),1,3); T.add(m.getTo(),2,3); T.add(this.iwrb.getLocalizedString("client.subject","Subject"),1,4); T.add(m.getSubject(),2,4); T.mergeCells(1,5,2,5); T.add(m.getBody(),1,5); } } return T; } }