/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.fitbank.servlet; import com.fitbank.common.crypto.Decrypt; import com.fitbank.common.properties.PropertiesHandler; import com.fitbank.dto.management.Detail; import com.fitbank.homebanking.BussinessDelegate; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet que envia un detail de consulta de una imagen para que esta sea cargada * en un directorio especifico del servidor por el core y sea leida por este servlet y enviada hacia el e-banking * @author jemm */ public class ImageServlet extends HttpServlet { /** * Metodo que se sobreescribe de la clase padre HttpServlet la misma que devuelve la imagen en bytes hacia el e-banking * @param HttpServletRequest peticion web * @param HttpServletResponse respuesta web * @throws Exception */ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try{ String num=req.getParameter("img"); String sec=req.getParameter("sec"); Detail detail=this.prepareDetail(num,sec); detail=this.processDetail(detail); PropertiesHandler ph=new PropertiesHandler("images"); OutputStream os = resp.getOutputStream(); resp.setContentType("image/jpeg"); resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); FileInputStream fin=new FileInputStream(ph.getStringValue("webapp.images.path")+"IMG"+num+"_"+sec); if(fin!=null){ byte b[]=new byte[999]; int car=0; do{ car=fin.read(b); if(car>0){ os.write(b); } }while(car>0); os.close(); fin.close(); } }catch(Exception e){ e.printStackTrace(); } } /** * Metodo que setea el detail con los campos de control que indican el codigo de imagen y la secuencia * de esta para ser consultada * @param String codigo de imagen * @param String secuencia de imagen * @return Detail de peticion * @throws Exception */ private Detail prepareDetail(String cimage,String sec)throws Exception{ Detail detail=new Detail(); this.setDetailHeader(detail); detail.findFieldByNameCreate("NUM").setValue(cimage); detail.findFieldByNameCreate("SEC").setValue(sec); return detail; } /** * Metodo que setea la cabecera del detail * de esta para ser consultada * @param Detail de peticion * @throws Exception */ private void setDetailHeader(Detail pDetail)throws Exception{ PropertiesHandler jsonProp = new PropertiesHandler("json"); pDetail.setUser(jsonProp.getStringValue("json.user")); Decrypt de = new Decrypt(); pDetail.setPassword(de.encrypt(jsonProp.getStringValue("json.password"))); pDetail.setIpaddress("0.0.0.0"); pDetail.setType("IMG"); pDetail.setSessionid(jsonProp.getStringValue("json.sessionId")); pDetail.setLanguage(jsonProp.getStringValue("json.language")); pDetail.setTerminal(jsonProp.getStringValue("json.terminal")); pDetail.setChannel(jsonProp.getStringValue("json.channel")); pDetail.setRole(jsonProp.getIntValue("json.rol")); pDetail.setCompany(jsonProp.getIntValue("json.company")); pDetail.setOriginbranch(jsonProp.getIntValue("json.originbranch")); pDetail.setOriginoffice(jsonProp.getIntValue("json.originoffice")); pDetail.setSecuritylevel(jsonProp.getIntValue("json.securitylevel")); pDetail.setSubsystem(jsonProp.getStringValue("json.subsystem")); pDetail.setTransaction(jsonProp.getStringValue("json.transaction")); pDetail.setVersion(jsonProp.getStringValue("json.version")); pDetail.setAccountingdate(new java.sql.Date(System.currentTimeMillis())); pDetail.findFieldByNameCreate("_AUTOLOTE").setValue("1"); } /** * Metodo que envia el detail a UCI * @param Detail de peticion * @return Detail recibido * @throws Exception */ private Detail processDetail(Detail detail)throws Exception{ BussinessDelegate bd = new BussinessDelegate(); return bd.process(detail); } }