package com.fitbank.servlet; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.text.MessageFormat; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fitbank.common.MailMessage; import com.fitbank.dto.management.Detail; import com.fitbank.web.DataManage; import com.fitbank.web.HBParam; import com.fitbank.report.Report; import com.fitbank.report.ReportTypes; public class MailServlet extends HttpServlet{ private static final long serialVersionUID = 1L; private String path; @Override public void init(ServletConfig config) throws ServletException { path=config.getServletContext().getRealPath("/")+"/rep"; super.init(config); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control","no-cache"); resp.setCharacterEncoding("iso88591"); resp.setContentType("text/html; charset=windows-1252"); PrintWriter out=resp.getWriter(); try{ String contact = req.getParameter("contact"); if(contact!=null && contact.compareTo("true")==0){ String subject=this.getParameterName(req, "subject", HBParam.getInstance().getStringValue("mail.subject")); String content=HBParam.getInstance().getStringValue("mail.content"); String message=this.getParameterName(req, "message", HBParam.getInstance().getStringValue("mail.message")); content=MessageFormat.format(content, message); String to=req.getParameter("to"); MailMessage mm = new MailMessage(subject,content,to); mm.setTo(to); mm.send(); out.println(MessageFormat.format(HBParam.getInstance().getStringValue("mail.content"), "Su mail ha sido enviado")); }else{ MailData data=this.prepareReport(req); String subject=this.getParameterName(req, "subject", HBParam.getInstance().getStringValue("mail.subject")); String content=HBParam.getInstance().getStringValue("mail.content"); String message=this.getParameterName(req, "message", HBParam.getInstance().getStringValue("mail.message")); content=MessageFormat.format(content, message); String to=req.getParameter("to"); MailMessage mm = new MailMessage(subject,content,to); mm.setTo(to); mm.addAttachment(data.getName(),data.getPath()); mm.send(); out.println("
Mail enviado
"); out.println(""); } }catch(Exception e){ out.println("
"+e.getMessage()+"
"); e.printStackTrace(); }finally{ out.close(); } } private String getParameterName(HttpServletRequest req,String pName,String pDefault){ String val=req.getParameter(pName); if(val==null||val.compareTo("")==0){ val=pDefault; } return val; } private MailData prepareReport(HttpServletRequest req) throws Exception{ ReportTypes rType=ReportTypes.PDF; DataManage dm=(DataManage)req.getSession().getAttribute(DataManage.KEY); String key=getDetailKey(req); Detail detail = (Detail)dm.get(key); Report rep=new Report(detail,path,rType); String pdfPath=this.path+"/"+detail.getUser()+".pdf"; OutputStream out=new FileOutputStream(pdfPath); try{ rep.executeReport(out); }finally{ out.close(); } return new MailData(pdfPath,detail.getUser()+".pdf"); } public String getDetailKey(HttpServletRequest req){ String key= null; if(key == null){ key= DataManage.DETAIL_KEY; String paramKey=req.getParameter("_detail_"); if(paramKey!=null&¶mKey.compareTo("")!=0){ key=paramKey; }else{ paramKey=(String)req.getSession().getAttribute("_detail_"); //this.getSession().setAttribute("_detail_",""); if(paramKey!=null&¶mKey.compareTo("")!=0){ key=paramKey; } } } return key; } } class MailData{ private String path; private String name; public MailData(String pPath,String pName){ this.path=pPath; this.name=pName; } public String getPath() { return path; } public String getName() { return name; } }