package com.fitbank.servlet;

import java.io.IOException;
import java.io.OutputStream;

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.dto.management.Detail;
import com.fitbank.web.DataManage;
import com.fitbank.report.Report;
import com.fitbank.report.ReportTypes;


public class JSFServlet 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");
        OutputStream out=resp.getOutputStream();
      	try{  				
      		String type=req.getParameter("type");
      		if(type==null){
      			type="PDF";
      		}
      		ReportTypes rType=ReportTypes.valueOf(type.toUpperCase());
      		resp.setContentType(rType.getContentType());
      		
      		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);
  				rep.executeReport(out);
  			}catch(Exception e){
  				e.printStackTrace();
  				throw new ServletException(e);
  			}
      	finally{
  				out.close();
  			}
       
    }
    public String getDetailKey(HttpServletRequest req){
        String key= null;
        if(key == null){
            
         key=   DataManage.DETAIL_KEY;
        String paramKey=req.getParameter("_detail_");
        
        if(paramKey!=null&&paramKey.compareTo("")!=0){
          key=paramKey;
        }else{
            paramKey=(String)req.getSession().getAttribute("_detail_");
            //this.getSession().setAttribute("_detail_","");
            if(paramKey!=null&&paramKey.compareTo("")!=0){
              key=paramKey;
            }
        }
        
    }
        return key;
    }   
}
