KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > communication > SaveEMailAction


1 /*
2  * Created on 04.04.2004
3  *
4  * To change the template for this generated file go to
5  * Window>Preferences>Java>Code Generation>Code and Comments
6  */

7 package org.contineo.actions.communication;
8
9 import java.util.Collection JavaDoc;
10 import java.util.Date JavaDoc;
11 import javax.servlet.http.HttpServletRequest JavaDoc;
12 import javax.servlet.http.HttpServletResponse JavaDoc;
13 import javax.servlet.http.HttpSession JavaDoc;
14 import org.apache.log4j.Level;
15 import org.apache.log4j.Logger;
16 import org.apache.struts.action.Action;
17 import org.apache.struts.action.ActionError;
18 import org.apache.struts.action.ActionErrors;
19 import org.apache.struts.action.ActionForm;
20 import org.apache.struts.action.ActionForward;
21 import org.apache.struts.action.ActionMapping;
22 import org.apache.struts.action.ActionMessage;
23 import org.apache.struts.action.ActionMessages;
24 import org.contineo.admin.Menu;
25 import org.contineo.admin.dao.MenuDAO;
26 import org.contineo.communication.Attachment;
27 import org.contineo.communication.EMail;
28 import org.contineo.communication.EMailAccount;
29 import org.contineo.communication.EMailSender;
30 import org.contineo.communication.Recipient;
31 import org.contineo.communication.dao.EMailAccountDAO;
32 import org.contineo.communication.dao.EMailDAO;
33 import org.contineo.core.FileBean;
34 import org.contineo.core.LoggingManager;
35 import org.contineo.core.SessionManagement;
36 import org.contineo.core.config.MimeTypeConfigurator;
37 import org.contineo.core.config.SettingConfigurator;
38 import org.contineo.forms.EMailForm;
39
40 /**
41  * @author Michael Scholz
42  *
43  * To change the template for this generated type comment go to
44  * Window>Preferences>Java>Code Generation>Code and Comments
45  */

46 public class SaveEMailAction extends Action {
47
48     /**
49      * @uml.property name="logger"
50      * @uml.associationEnd
51      */

52     private Logger logger;
53
54     /**
55      *
56      * @uml.property name="conf"
57      * @uml.associationEnd
58      * @uml.property name="conf" multiplicity="(1 1)"
59      */

60     private SettingConfigurator conf;
61
62     /**
63      *
64      * @uml.property name="email"
65      * @uml.associationEnd
66      * @uml.property name="email" multiplicity="(0 1)"
67      */

68     private EMail email;
69
70     private String JavaDoc username;
71
72     /**
73      *
74      */

75     public SaveEMailAction() {
76             logger = LoggingManager.getLogger(this.getClass());
77             conf = new SettingConfigurator();
78             username = "";
79     }
80
81     public ActionForward execute(ActionMapping mapping,
82                     ActionForm form, HttpServletRequest JavaDoc request,
83                     HttpServletResponse JavaDoc response) {
84         ActionForward actionForward = new ActionForward();
85         HttpSession JavaDoc session = request.getSession();
86                 ActionErrors errors = new ActionErrors();
87                 ActionMessages messages = new ActionMessages();
88         if (SessionManagement.isValid(session)) {
89             try {
90                 username = (String JavaDoc)session.getAttribute("authuser");
91                 EMailForm emailForm = (EMailForm)form;
92                 email = new EMail();
93                 EMailDAO emailDao = new EMailDAO();
94                 EMailAccountDAO accountDao = new EMailAccountDAO();
95                 EMailAccount account = accountDao.findByPrimaryKey(Integer.parseInt(emailForm.getAuthor()));
96                 email.setAuthor(account.getUserName());
97                 email.setAuthorAddress(account.getMailAddress());
98                 Recipient recipient = new Recipient();
99                 recipient.setAddress(emailForm.getRecipient());
100                 email.addRecipient(recipient);
101                 email.setFolder("outbox");
102                 email.setMessageText(emailForm.getText());
103                 email.setRead(1);
104                 email.setSentDate(String.valueOf(new Date JavaDoc().getTime()));
105                 email.setSubject(emailForm.getSubject());
106                 email.setUserName(username);
107                 emailDao.store(email);
108                                 String JavaDoc udir = conf.getValue("userdir");
109                                 String JavaDoc maildir = udir + "/" + username + "/mails/" + String.valueOf(email.getMessageId()) + "/";
110                                 FileBean.createDir(maildir);
111                                 FileBean.writeFile(email.getMessageText(), maildir + "email.mail");
112                                 Attachment attachment = new Attachment();
113                                 attachment.setFilename("email.mail");
114                                 attachment.setPartId(1);
115                                 attachment.setMimeType("text/plain");
116                                 attachment.setIcon("pages/images/textdoc.gif");
117                 if (emailForm.getAtt0() != null && !emailForm.getAtt0().equals("")) {
118                     createAttachment(Integer.parseInt(emailForm.getAtt0()), 2);
119                     if (emailForm.getAtt1() != null && !emailForm.getAtt1().equals("")) {
120                         createAttachment(Integer.parseInt(emailForm.getAtt1()), 3);
121                         if (emailForm.getAtt2() != null && !emailForm.getAtt2().equals("")) {
122                             createAttachment(Integer.parseInt(emailForm.getAtt2()), 4);
123                             if (emailForm.getAtt3() != null && !emailForm.getAtt3().equals("")) {
124                                 createAttachment(Integer.parseInt(emailForm.getAtt3()), 5);
125                                 if (emailForm.getAtt4() != null && !emailForm.getAtt4().equals("")) {
126                                     createAttachment(Integer.parseInt(emailForm.getAtt4()), 6);
127                                 }
128                             }
129                         }
130                     }
131                 }
132                 emailDao.store(email);
133                 try {
134                                     EMailSender sender = new EMailSender();
135                                     sender.send(account, email);
136                                     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.action.saveemail"));
137                 } catch (Exception JavaDoc ex) {
138                     if (logger.isEnabledFor(Level.ERROR))
139                         logger.error(ex.getMessage());
140                                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.saveemail"));
141                 }
142                 Collection JavaDoc accounts = accountDao.findByUserName(username);
143                 request.setAttribute("emailform", emailForm);
144                 request.setAttribute("accounts", accounts);
145             } catch (Exception JavaDoc e) {
146                 if (logger.isEnabledFor(Level.ERROR))
147                     logger.error(e.getMessage());
148                                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.saveemail"));
149             }
150             actionForward = mapping.findForward("addemail");
151                         saveErrors(request, errors);
152                         saveMessages(request, messages);
153         } else
154             actionForward = mapping.findForward("invalid");
155         return actionForward;
156     }
157     
158     private void createAttachment(int menuid, int partid) {
159         Attachment att = new Attachment();
160         MenuDAO menuDao = new MenuDAO();
161         Menu menu = menuDao.findByPrimaryKey(menuid);
162         if (menuDao.isReadEnable(menu.getMenuId(), username)) {
163             att.setPartId(partid);
164             att.setIcon(menu.getMenuIcon());
165             att.setFilename(menu.getMenuRef());
166             String JavaDoc extension = menu.getMenuRef().substring(menu.getMenuRef().lastIndexOf(".") + 1);
167             MimeTypeConfigurator mtc = new MimeTypeConfigurator();
168             String JavaDoc mimetype = mtc.getMimeApp(extension);
169             if (mimetype == null || mimetype.equals(""))
170                 mimetype = "application/octet-stream";
171             att.setMimeType(mimetype);
172             String JavaDoc docdir = conf.getValue("docdir");
173             String JavaDoc doc = docdir + "/" + menu.getMenuPath() + "/" + menu.getMenuId() + "/" + menu.getMenuRef();
174             String JavaDoc userdir = conf.getValue("userdir");
175             String JavaDoc mail = userdir + "/" + username + "/mails/" + String.valueOf(email.getMessageId()) + "/" ;
176             FileBean.copyFile(doc, mail + menu.getMenuRef());
177                         if (att != null)
178                             email.addAttachment(att);
179                 }
180     }
181 }
182
Popular Tags