1 16 package com.blandware.atleap.webapp.action.core.mailTemplate; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.common.parsers.html.HTMLPlainTextExtractor; 20 import com.blandware.atleap.common.util.ConvertUtil; 21 import com.blandware.atleap.model.core.MailTemplate; 22 import com.blandware.atleap.service.core.MailTemplateManager; 23 import com.blandware.atleap.webapp.action.core.BaseAction; 24 import com.blandware.atleap.webapp.form.MailTemplateForm; 25 import com.blandware.atleap.webapp.util.core.LocaleUtil; 26 import com.blandware.atleap.webapp.util.core.WebappConstants; 27 import com.blandware.atleap.webapp.util.core.WebappUtil; 28 import org.apache.commons.validator.GenericValidator; 29 import org.apache.struts.action.ActionForm; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 import org.apache.struts.action.ActionMessage; 33 import org.apache.struts.action.ActionMessages; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 import java.io.ByteArrayInputStream ; 38 import java.io.InputStream ; 39 import java.io.StringWriter ; 40 import java.util.Iterator ; 41 import java.util.List ; 42 import java.util.Map ; 43 44 66 public final class CallUpdateMailTemplateBodyAction extends BaseAction { 67 76 public ActionForward execute(ActionMapping mapping, ActionForm form, 77 HttpServletRequest request, HttpServletResponse response) throws Exception { 78 79 if ( isCancelled(request) ) { 80 return mapping.findForward("listMailTemplates"); 81 } 82 83 MailTemplateForm mailTemplateForm = (MailTemplateForm) form; 84 Long mailTemplateId = null; 85 if ( !GenericValidator.isBlankOrNull(mailTemplateForm.getId()) ) { 86 mailTemplateId = Long.valueOf(mailTemplateForm.getId()); 87 } else if ( request.getSession().getAttribute(WebappConstants.MAIL_TEMPLATE_ID_KEY) != null ) { 88 mailTemplateId = (Long ) request.getSession().getAttribute(WebappConstants.MAIL_TEMPLATE_ID_KEY); 89 } else { 90 if ( log.isWarnEnabled() ) { 91 log.warn("Missing mail template ID. Returning to list..."); 92 } 93 return mapping.findForward("listMailTemplates"); 94 } 95 96 MailTemplateManager mailTemplateManager = (MailTemplateManager) getBean(Constants.MAIL_TEMPLATE_MANAGER_BEAN); 97 MailTemplate mailTemplate = mailTemplateManager.retrieveMailTemplate(mailTemplateId); 98 99 if ( mailTemplate == null ) { 100 ActionMessages errors = new ActionMessages(); 102 errors.add("mailTemplateNotFound", new ActionMessage("core.mailTemplate.errors.notFound")); 103 saveErrors(request, errors); 104 return mapping.findForward("listMailTemplates"); 105 } 106 107 for ( Iterator i = mailTemplateForm.getCharsetMap().entrySet().iterator(); i.hasNext(); ) { 109 Map.Entry entry = (Map.Entry ) i.next(); 110 String localeIdentifier = (String ) entry.getKey(); 111 String charset = (String ) entry.getValue(); 112 if ( GenericValidator.isBlankOrNull(charset) ) { 113 mailTemplateForm.setCharset(localeIdentifier, Constants.DEFAULT_ENCODING); 114 } else if ( !WebappUtil.isCharsetSupported(charset) ) { 115 ActionMessages errors = new ActionMessages(); 116 errors.add("notSupportedCharset", new ActionMessage("core.commons.errors.notSupportedCharset", charset)); 117 saveErrors(request, errors); 118 saveToken(request); 119 return mapping.getInputForward(); 120 } 121 } 122 123 if ( !mailTemplate.isPlain() && Constants.MIME_TYPE_PLAIN.equalsIgnoreCase(mailTemplateForm.getMimeType()) ) { 125 HTMLPlainTextExtractor extractor = new HTMLPlainTextExtractor(); 126 for ( Iterator i = mailTemplateForm.getBodyMap().entrySet().iterator(); i.hasNext(); ) { 127 Map.Entry entry = (Map.Entry ) i.next(); 128 String language = (String ) entry.getKey(); 129 String body = (String ) entry.getValue(); 130 InputStream bodyIS = new ByteArrayInputStream (ConvertUtil.convertToByteArray(body)); 131 StringWriter sw = new StringWriter (); 132 extractor.extract(bodyIS, sw, Constants.DEFAULT_ENCODING); 133 mailTemplateForm.setBody(language, sw.toString().trim()); 134 } 135 } 136 138 if ( mailTemplate.getAvailableVariables() != null && !mailTemplate.getAvailableVariables().isEmpty() ) { 139 request.getSession().setAttribute(WebappConstants.MAIL_TEMPLATE_AVAIALABLE_VARIABLES_KEY, ConvertUtil.convertListToString(mailTemplate.getAvailableVariables(), ", ")); 140 } else { 141 request.getSession().removeAttribute(WebappConstants.MAIL_TEMPLATE_AVAIALABLE_VARIABLES_KEY); 142 } 143 144 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 145 146 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 147 148 return mapping.findForward("updateMailTemplateBody"); 149 } 150 151 } | Popular Tags |