Package ar.com.AmberSoft.iEvenTask.reports

Source Code of ar.com.AmberSoft.iEvenTask.reports.ReportDispatcher

package ar.com.AmberSoft.iEvenTask.reports;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.log4j.Logger;

import ar.com.AmberSoft.iEvenTask.backend.entities.Tarea;
import ar.com.AmberSoft.iEvenTask.services.ListService;
import ar.com.AmberSoft.iEvenTask.services.Service;
import ar.com.AmberSoft.iEvenTask.shared.exceptions.ServiceClassNotFoundException;
import ar.com.AmberSoft.iEvenTask.utils.Tools;
import ar.com.AmberSoft.util.ParamsConst;

import com.lowagie.text.Element;

public class ReportDispatcher extends HttpServlet {

  public static final String SERVICIO = "Servicio2";
  public static String FILTERS = "filters";
 
  private static Logger logger = Logger.getLogger(ReportDispatcher.class);
 
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    try {
      elaborarReporte(req, resp);
    } catch (Exception e) {
      logger.error(Tools.getStackTrace(e));
    }

  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    try {
      elaborarReporte(req, resp);
    } catch (Exception e) {
      logger.error(Tools.getStackTrace(e));
    }
  }
 
  public Object getValue(Object objeto, String key){
    try {
      return PropertyUtils.getProperty(objeto, key);
    } catch (Exception e) {
      logger.error(Tools.getStackTrace(e));
    }
    return null;
  }

  private static Class getType(Map params) {
    String serviceName = (String) params.get(SERVICIO);
    Class type;
    try {
      type = Class.forName(serviceName);
    } catch (ClassNotFoundException e) {
      logger.error(Tools.getStackTrace(e));
      throw new ServiceClassNotFoundException();
    }
    return type;
  }
 
  protected void elaborarReporte(HttpServletRequest req, HttpServletResponse response)
      throws ServletException, IOException, InstantiationException, IllegalAccessException {
   
    Map params = (Map) req.getSession().getAttribute(ParamsConst.PARAMS);
   
    Service service = (Service) getType(params).newInstance();
   
    Collection columnsModels = (Collection) params.get(ParamsConst.COLUMN_MODEL);
    Report report = new Report((String)params.get(ParamsConst.TITLE), response, Report.CONTENT_TYPE);
   
    TablaPDF tabla = new TablaPDF(report.getDocument());
    List<Float> tamanios = new ArrayList();
    Integer columnas = 0;
    if (columnsModels!=null){
      Iterator itDefiniciones = columnsModels.iterator();
      while (itDefiniciones.hasNext()) {
        Object define = (Object) itDefiniciones.next();
        Boolean hidden = (Boolean) getValue(define, "hidden");
        if (!hidden){
          CeldaPDF celda = new CeldaPDF();
          celda.addTexto((String) getValue(define, "name"));
          celda.applyHeaderColor();
          celda.setAlineacionHorizontal(Element.ALIGN_CENTER);
          celda.setAlineacionVertical(Element.ALIGN_MIDDLE);
          tabla.addCelda(celda);
          tamanios.add(new Float((Integer)getValue(define, "size") * 30) );
          columnas++;
        }
      }
    }
   
    tabla.setTamanioColumnas(tamanios);
    tabla.setColumnas(columnas);
   
   
    try {
      params.put(ParamsConst.REQUEST, req);
      params.put(ListService.LIMIT, null);
      params.put(ListService.OFFSET, null);
      Map result = service.execute(params);
      Collection datas = (Collection) result.get(ParamsConst.DATA);
     
      if (datas!=null){
        Iterator itDatas = datas.iterator();
        int i=0;
        while (itDatas.hasNext()) {
          i++;
          if (i>=25){
            tabla.flush();
            tabla = new TablaPDF(report.getDocument());
            tabla.setTamanioColumnas(tamanios);
            tabla.setColumnas(columnas);
           
            report.getDocument().newPage();
            i=0;
            if (columnsModels!=null){
              Iterator itDefiniciones = columnsModels.iterator();
              while (itDefiniciones.hasNext()) {
                Object define = (Object) itDefiniciones.next();
                Boolean hidden = (Boolean) getValue(define, "hidden");
                if (!hidden){
                  CeldaPDF celda = new CeldaPDF();
                  celda.addTexto((String) getValue(define, "name"));
                  celda.applyHeaderColor();
                  celda.setAlineacionHorizontal(Element.ALIGN_CENTER);
                  celda.setAlineacionVertical(Element.ALIGN_MIDDLE);
                  tabla.addCelda(celda);
                }
              }
            }
          }
          Object element = itDatas.next();
          if (columnsModels!=null){
            Iterator itDefiniciones = columnsModels.iterator();
            while (itDefiniciones.hasNext()) {
              Object define = (Object) itDefiniciones.next();
              Boolean hidden = (Boolean) getValue(define, "hidden");
              if (!hidden){
                Object value = PropertyUtils.getProperty(element, (String)getValue(define, "id"));
               
                CeldaPDF celda = new CeldaPDF();
                if (value!=null){
                  celda.addTexto(value.toString());
                }
                Integer alignment = (Integer)getValue(define, "horizontalAlignment");
                if (alignment!=null){
                  celda.setAlineacionHorizontal(alignment);
                } else {
                  celda.setAlineacionHorizontal(Element.ALIGN_LEFT);
                }
                celda.setAlineacionVertical(Element.ALIGN_MIDDLE);
 
                tabla.addCelda(celda);
              }
            }
          }
         
         
        }
      }
     
      tabla.flush();
     
    } catch (Exception e1) {
      logger.error(Tools.getStackTrace(e1));
    }
   
    report.flush();
  }
 
 
 
}
TOP

Related Classes of ar.com.AmberSoft.iEvenTask.reports.ReportDispatcher

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.