package com.fitbank.servlet; import java.io.IOException; import java.io.PrintWriter; 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.logger.FitbankLogger; import com.fitbank.dto.GeneralResponse; import com.fitbank.dto.management.Detail; import com.fitbank.web.ActionTypes; import com.fitbank.web.DataManage; import com.fitbank.web.FacesUtil; import com.fitbank.web.Report; import com.fitbank.web.Trn; public class ActionsServlet extends HttpServlet { private static final long serialVersionUID = 1L; private boolean evalAction(DataManage dm, String pAction, HttpServletRequest req) { ActionTypes action = ActionTypes.valueOf(pAction); switch (action) { case QUERY: dm.query(req); return true; case SAVE: dm.save(req); return true; case NEXT: dm.next(req); return true; case PREV: dm.prev(req); return true; default: return false; } } public DataManage getDataManage(HttpServletRequest req) { DataManage dm = (DataManage) req.getSession().getAttribute("dm"); return dm; } private String getResponse(String pCode, String pMessage) { String data = "{ identifier: 'id', items: [ { id:'1' ,code: '" + pCode + "', message: '" + pMessage + "' }]}"; return data; } @Override public void init(ServletConfig config) throws ServletException { super.init(config); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); try { DataManage dm = this.getDataManage(req); new FacesUtil(dm, req); String action = req.getParameter("_action"); FitbankLogger.getLogger().debug("Action:|" + action + "|"); String data = ""; if (action != null) { if (action.trim().toLowerCase().compareTo("trn") == 0) { Trn trn = new Trn(req); data = trn.getData(); } else if (action.trim().toLowerCase().compareTo("rep") == 0) { Report trn = new Report(req); data = trn.getData(); } else { if (this.evalAction(dm, action.toUpperCase(), req)) { Detail det = (Detail) dm.get("det"); if (det != null) { GeneralResponse gr = det.getResponse(); if (gr != null) { data = this.getResponse(gr.getCode(), gr.getUserMessage()); } else { data = this.getResponse("2", "MENSAJE SIN RESPUESTA"); } } else { data = this.getResponse("2", "MENSAJE NO ENCONTRADO"); } } else { if (action.compareToIgnoreCase("copy") == 0) { String from = req.getParameter("from"); String to = req.getParameter("to"); if ((from == null) || (to == null)) { data = this.getResponse("1", "FROM/TO NO VALIDO"); } else { Object obj = dm.get(from); if (obj != null) { dm.put(to, obj); data = this.getResponse("0", "OK"); } else { data = this.getResponse("1", "OBJETO NO ENCONTRADO"); } } } else { data = this.getResponse("1", "TIPO NO DEFINIDO"); } } } } pw.print(data); } catch (Exception e) { e.printStackTrace(); pw.print(e.getMessage()); } finally { pw.close(); } } }