1 121 package com.ivata.groupware.business.mail.struts; 122 123 import java.util.Vector ; 124 125 import javax.servlet.http.HttpServletRequest ; 126 import javax.servlet.http.HttpServletResponse ; 127 import javax.servlet.http.HttpSession ; 128 129 import org.apache.struts.action.ActionErrors; 130 import org.apache.struts.action.ActionForm; 131 import org.apache.struts.action.ActionMapping; 132 import org.picocontainer.PicoContainer; 133 134 import com.ivata.groupware.admin.security.server.SecuritySession; 135 import com.ivata.groupware.admin.security.user.UserDO; 136 import com.ivata.groupware.admin.setting.Settings; 137 import com.ivata.groupware.business.mail.Mail; 138 import com.ivata.groupware.business.mail.message.MessageDO; 139 import com.ivata.groupware.business.mail.server.NoMailServerException; 140 import com.ivata.groupware.business.mail.session.MailSession; 141 import com.ivata.groupware.container.PicoContainerFactory; 142 import com.ivata.mask.MaskFactory; 143 import com.ivata.mask.util.SystemException; 144 import com.ivata.mask.web.struts.MaskAction; 145 import com.ivata.mask.web.struts.MaskAuthenticator; 146 147 148 158 public class DisplayAction extends MaskAction { 159 Mail mail; 160 Settings settings; 161 170 public DisplayAction(Mail mail, Settings settings, 171 MaskFactory maskFactory, MaskAuthenticator authenticator) { 172 super(maskFactory, authenticator); 173 this.mail = mail; 174 this.settings = settings; 175 } 176 177 199 public String execute(final ActionMapping mapping, 200 final ActionErrors errors, 201 final ActionForm form, 202 final HttpServletRequest request, 203 final HttpServletResponse response, 204 final HttpSession session) throws SystemException { 205 if (isCancelled(request)) { 208 return "mailIndex"; 209 } 210 211 DisplayForm displayForm = (DisplayForm) form; 212 MessageDO message = displayForm.getMessage(); 213 214 if (request.getParameter("folderName") != null) { 216 displayForm.setFolderName(request.getParameter("folderName")); 217 } 218 219 if (request.getParameter("id") != null) { 220 displayForm.setId(request.getParameter("id")); 221 } 222 223 Vector idVector = new Vector (); 225 idVector.add(message.getMessageID()); 226 227 MailSession mailSession; 229 try { 230 mailSession = (MailSession) session.getAttribute("securitySession"); 231 } catch (ClassCastException e) { 232 session.setAttribute("mailServerException", 233 new NoMailServerException(e)); 234 return "serverError"; 235 } 236 UserDO user = mailSession.getUser(); 237 238 if (displayForm.getThread() != null) { 239 SecuritySession securitySession = (SecuritySession) 240 session.getAttribute("securitySession"); 241 PicoContainer picoContainer = securitySession.getContainer(); 242 ComposeForm composeForm = (ComposeForm) 243 PicoContainerFactory.getInstance() 244 .instantiateOrOverride(picoContainer, 245 ComposeForm.class); 246 247 MessageDO newMessage = mail.createThreadMessage(mailSession, 248 displayForm.getFolderName(), idVector, 249 displayForm.getThread()); 250 composeForm.setMessage(newMessage); 251 session.setAttribute("mailComposeForm", composeForm); 252 253 return "mailCompose"; 254 } 255 256 if (displayForm.getDelete()) { 258 String trashFolderName = settings.getStringSetting(mailSession, 259 "emailFolderTrash", 260 user); 261 mail.moveMessages(mailSession, displayForm.getFolderName(), 262 idVector, trashFolderName); 263 request.setAttribute("refreshOpener", "1"); 264 265 return "success"; 266 } 267 268 if (displayForm.getDeleteTrash()) { 270 mail.deleteMessagesFromTrash(mailSession, idVector); 271 } 272 273 message = mail.findMessageByFolderMessageId(mailSession, 275 displayForm.getFolderName(), displayForm.getId()); 276 277 if (message == null) { 279 return "noMessage"; 280 } 281 282 displayForm.setMessage(message); 283 284 return "mailDisplay"; 286 } 287 } 288 | Popular Tags |