KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > webapp > action > contact > PerformContactAction


1 /*
2  * Copyright 2004 Blandware (http://www.blandware.com)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package com.blandware.atleap.webapp.action.contact;
17
18 import com.blandware.atleap.common.Constants;
19 import com.blandware.atleap.common.util.StringUtil;
20 import com.blandware.atleap.service.util.MailEngine;
21 import com.blandware.atleap.webapp.action.core.BaseAction;
22 import com.blandware.atleap.webapp.form.contact.ContactForm;
23 import com.blandware.atleap.webapp.util.core.GlobalProperties;
24 import org.apache.commons.validator.GenericValidator;
25 import org.apache.struts.action.ActionForm;
26 import org.apache.struts.action.ActionForward;
27 import org.apache.struts.action.ActionMapping;
28 import org.apache.struts.action.ActionMessage;
29 import org.apache.struts.action.ActionMessages;
30 import org.apache.struts.util.RequestUtils;
31 import org.springframework.mail.MailPreparationException;
32 import org.springframework.mail.MailSendException;
33
34 import javax.servlet.http.HttpServletRequest JavaDoc;
35 import javax.servlet.http.HttpServletResponse JavaDoc;
36 import java.io.PrintWriter JavaDoc;
37 import java.io.StringWriter JavaDoc;
38 import java.util.HashMap JavaDoc;
39 import java.util.Map JavaDoc;
40
41 /**
42  * <p>Sends message or forwards to action to preview message to be sent
43  * </p>
44  * <p><a HREF="PerformContactAction.java.htm"><i>View Source</i></a></p>
45  * <p/>
46  *
47  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
48  * @version $Revision: 1.13 $ $Date: 2006/03/10 17:10:14 $
49  * @struts.action name="contactForm"
50  * path="/contact/perform"
51  * scope="request"
52  * input="inputForward"
53  * validate="true"
54  * @struts.action-forward name="inputForward"
55  * path=".contact.contactPage"
56  * @struts.action-forward name="contactSuccessful"
57  * path="/contact/success.do"
58  * redirect="true"
59  * @struts.action-forward name="previewMessage"
60  * path="/core/mailTemplate/previewMessage.do"
61  * @struts.action-forward name="callContactPage"
62  * path="/contact/callContactPage.do"
63  * @struts.action-forward name="unsatisfiableNoReset"
64  * path="/contact/callContactPage.do"
65  */

66 public final class PerformContactAction extends BaseAction {
67
68     /**
69      * @param mapping The ActionMapping used to select this instance
70      * @param form The optional ActionForm bean for this request (if any)
71      * @param request The HTTP request we are proceeding
72      * @param response The HTTP response we are creating
73      * @return an ActionForward instance describing where and how
74      * control should be forwarded, or null if response
75      * has already been completed
76      */

77     public ActionForward execute(ActionMapping mapping, ActionForm form,
78                                  HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
79
80         if ( isCancelled(request) ) {
81             return mapping.findForward("index");
82         }
83
84         ContactForm contactForm = (ContactForm) form;
85         Map JavaDoc model = new HashMap JavaDoc();
86         model.put("userName", contactForm.getUserName());
87         model.put("email", contactForm.getEmail());
88         model.put("message", StringUtil.elToBr(contactForm.getMessage()));
89
90         String JavaDoc localeIdentifier = GlobalProperties.getInstance(request.getSession().getServletContext()).getString(Constants.CONTACT_LANGUAGE_PROPERTY);
91         if ( GenericValidator.isBlankOrNull(localeIdentifier) ) {
92             localeIdentifier = (RequestUtils.getUserLocale(request, null)).getLanguage();
93         }
94
95         if ( contactForm.getPreview() == null || !request.isUserInRole("core-mailTemplate-previewMessage") ) {
96
97             resetToken(request);
98
99             // send message
100
MailEngine mailEngine = (MailEngine) getBean(Constants.MAIL_ENGINE_BEAN);
101             String JavaDoc contactAddress = GlobalProperties.getInstance(request.getSession().getServletContext()).getString(Constants.CONTACT_ADDRESS_PROPERTY);
102             try {
103                 mailEngine.sendMessage(contactAddress, "contactUs", localeIdentifier, model);
104             } catch ( MailPreparationException e ) {
105                 if ( log.isErrorEnabled() ) {
106                     StringWriter JavaDoc sw = new StringWriter JavaDoc();
107                     e.printStackTrace(new PrintWriter JavaDoc(sw));
108                     log.error(sw.toString());
109                 }
110                 ActionMessages errors = new ActionMessages();
111                 errors.add("preparationFailed", new ActionMessage("contact.errors.preparationFailed"));
112                 saveErrors(request, errors);
113                 saveToken(request);
114                 return mapping.getInputForward();
115             } catch ( MailSendException e ) {
116                 if ( log.isErrorEnabled() ) {
117                     StringWriter JavaDoc sw = new StringWriter JavaDoc();
118                     e.printStackTrace(new PrintWriter JavaDoc(sw));
119                     log.error(sw.toString());
120                 }
121                 ActionMessages errors = new ActionMessages();
122                 errors.add("sendFailed", new ActionMessage("contact.errors.sendFailed"));
123                 saveErrors(request, errors);
124                 saveToken(request);
125                 return mapping.getInputForward();
126             } catch ( Exception JavaDoc e ) {
127                 if ( log.isErrorEnabled() ) {
128                     StringWriter JavaDoc sw = new StringWriter JavaDoc();
129                     e.printStackTrace(new PrintWriter JavaDoc(sw));
130                     log.error(sw.toString());
131                 }
132                 ActionMessages errors = new ActionMessages();
133                 errors.add("unknownError", new ActionMessage("contact.errors.unknownError"));
134                 saveErrors(request, errors);
135                 saveToken(request);
136                 return mapping.getInputForward();
137             }
138             return mapping.findForward("contactSuccessful");
139         } else {
140             // forward to preview action
141
request.setAttribute("identifier", "contactUs");
142             request.setAttribute("model", model);
143             request.setAttribute("locale", localeIdentifier);
144             return mapping.findForward("previewMessage");
145         }
146     }
147
148 }
Popular Tags