package com.mossle.javamail.web; import java.util.List; import javax.annotation.Resource; import com.mossle.core.auth.CurrentUserHolder; import com.mossle.core.mapper.BeanMapper; import com.mossle.javamail.persistence.domain.JavamailConfig; import com.mossle.javamail.persistence.domain.JavamailMessage; import com.mossle.javamail.persistence.manager.JavamailConfigManager; import com.mossle.javamail.persistence.manager.JavamailMessageManager; import com.mossle.javamail.service.JavamailQueue; import com.mossle.javamail.service.JavamailService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @RequestMapping("javamail") @Controller public class JavamailController { private JavamailConfigManager javamailConfigManager; private JavamailMessageManager javamailMessageManager; private CurrentUserHolder currentUserHolder; private BeanMapper beanMapper = new BeanMapper(); private JavamailService javamailService; private JavamailQueue javamailQueue; @RequestMapping("index") public String index(@RequestParam(value = "id", required = false) Long id, @RequestParam(value = "folder", required = false) String folder, Model model) throws Exception { String userId = currentUserHolder.getUserId(); JavamailConfig javamailConfig = javamailConfigManager.findUniqueBy( "userId", userId); if (javamailConfig != null) { // javamailService.receive(javamailConfig); javamailQueue.receive(userId); if (folder == null) { folder = "INBOX"; } String hql = "from JavamailMessage where javamailConfig.id=? and folder=? order by sendTime desc"; List<JavamailMessage> javamailMessages = javamailMessageManager .find(hql, javamailConfig.getId(), folder); model.addAttribute("javamailMessages", javamailMessages); } if (id != null) { model.addAttribute("javamailMessage", javamailMessageManager.get(id)); } return "javamail/index"; } @RequestMapping("create") public String create() { return "javamail/create"; } @RequestMapping("send") public String send(@RequestParam("receiver") String receiver, @RequestParam(value = "cc", required = false) String cc, @RequestParam(value = "bcc", required = false) String bcc, @RequestParam("subject") String subject, @RequestParam("content") String content) throws Exception { String userId = currentUserHolder.getUserId(); JavamailConfig javamailConfig = javamailConfigManager.findUniqueBy( "userId", userId); // this.javamailService.send(receiver, subject, content, javamailConfig); javamailQueue.send(userId, receiver, cc, bcc, subject, content); return "redirect:/javamail/index.do"; } @RequestMapping("config") public String config(Model model) throws Exception { JavamailConfig javamailConfig = javamailConfigManager.findUniqueBy( "userId", currentUserHolder.getUserId()); if (javamailConfig != null) { model.addAttribute("javamailConfig", javamailConfig); } return "javamail/config"; } @RequestMapping("configSave") public String configSave(@ModelAttribute JavamailConfig javamailConfig, Model model) throws Exception { JavamailConfig dest = javamailConfigManager.findUniqueBy("userId", currentUserHolder.getUserId()); if (dest == null) { javamailConfig.setUserId(currentUserHolder.getUserId()); javamailConfig.setPriority(0); javamailConfigManager.save(javamailConfig); } else { beanMapper.copy(javamailConfig, dest); javamailConfigManager.save(dest); } return "redirect:/javamail/config.do"; } @Resource public void setJavamailConfigManager( JavamailConfigManager javamailConfigManager) { this.javamailConfigManager = javamailConfigManager; } @Resource public void setJavamailMessageManager( JavamailMessageManager javamailMessageManager) { this.javamailMessageManager = javamailMessageManager; } @Resource public void setCurrentUserHolder(CurrentUserHolder currentUserHolder) { this.currentUserHolder = currentUserHolder; } @Resource public void setJavamailService(JavamailService javamailService) { this.javamailService = javamailService; } @Resource public void setJavamailQueue(JavamailQueue javamailQueue) { this.javamailQueue = javamailQueue; } }