View Javadoc

1   package ecar.servlet.relatorio.PPA_LinhaAcao;
2   
3   import java.io.ByteArrayOutputStream;
4   import java.util.ArrayList;
5   import java.util.HashMap;
6   import java.util.Map;
7   
8   import javax.servlet.ServletContext;
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  
12  import net.sf.jasperreports.engine.JasperPrint;
13  import net.sf.jasperreports.engine.JasperReport;
14  import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
15  
16  import org.apache.log4j.Logger;
17  
18  import ecar.util.jasper.JasperService;
19  import ecar.util.jasper.servlet.RelatorioServlet;
20  
21  /**
22   * Servlet responsavel por interagir com os eventos de geracao de relatorio PPA
23   * @author gabrielsolana
24   *
25   */
26  public class RelatorioPPALinhaAcaoServlet extends RelatorioServlet {
27  	
28  	private static final long serialVersionUID = 3213904736460171482L;
29  	private Logger logger = Logger.getLogger(this.getClass());
30  
31  	public RelatorioPPALinhaAcaoServlet(){
32  		super();
33  	}
34  	
35  	public void doRelatorioGet(HttpServletRequest request, HttpServletResponse response) {
36  		doRelatorioPost(request,response);
37  	}
38  
39  	public void doRelatorioPost(HttpServletRequest request, HttpServletResponse response) {
40  
41  		logger.info("Generating relatorio PPA Por Linha de Ação...");
42  		
43  		final ServletContext context = getServletContext();
44  		
45  //		byte[] bytes = null;
46  		Map parametros = new HashMap();
47  		try {
48  			
49  			String possuiGerente = request.getParameter("possuiGerente");
50  			String titulo = request.getParameter("titulo");
51  			String pagina = request.getParameter("pagina");
52  			String data = request.getParameter("data");			
53  			Integer paginaInt = null;
54  			
55  			logger.info("Imprimir gerente no relatorio? " + possuiGerente );
56  			
57  			try {
58  				if( pagina ==null || pagina.equals("") ){
59  					paginaInt = Integer.valueOf(1);
60  				}else{
61  					paginaInt = Integer.valueOf( pagina );
62  				}
63  			} catch (Exception e) {
64  				paginaInt = Integer.valueOf( 1 );
65  			}
66  			
67  			try {
68  				if( data ==null || data.equals("") ){
69  					data = "";
70  				}
71  			} catch (Exception e) {
72  				data = "";
73  			}			
74  			
75  			try {
76  				if( titulo ==null || "".equals( titulo ) ){
77  					titulo = "ESTADO DO PARANÁ - PLANO PLURIANUAL 2008/2011 - Demonstrativo por Programa";	
78  				}
79  			} catch (Exception e) {
80  				titulo = "ESTADO DO PARANÁ - PLANO PLURIANUAL 2008/2011 - Demonstrativo por Programa";
81  			}						
82  			
83  			
84  			final RelatorioPPALinhaAcaoService service = RelatorioPPALinhaAcaoService.getInstance(request);
85  						
86  			// path absoluto do relatorio PPA
87  			final String pathRelPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPALinhaAcao.jasper" );
88  			final String pathRelPPACapa = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_Demonstrativos_capa.jasper" );			
89  
90  			JasperReport relatorioJasper = JasperService.loadReport( pathRelPPA );
91  			JasperReport relatorioCapaJasper = JasperService.loadReport( pathRelPPACapa );			
92  			this.redirectDefaultErrorIfNull(request, response, relatorioJasper);
93  			
94  			ArrayList<PPA_LinhaAcaoBean> relatorioDS = service.generatePPA( Boolean.valueOf( possuiGerente ).booleanValue() );
95  			this.redirectDefaultErrorIfNull(request, response, relatorioDS);
96  			
97  			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(relatorioDS);
98  			
99  			if (possuiGerente!=null && "true".equalsIgnoreCase(possuiGerente) ){
100 				parametros.put("coluna1", "Linha de Ação / Programa / Gerente" );
101 			}else{
102 				parametros.put("coluna1", "Linha de Ação / Programa" );
103 			}
104 			
105 			parametros.put("pagina", paginaInt );
106 			parametros.put( "data" , data );
107 			parametros.put( "titulo" , titulo );	
108 			parametros.put("totalExer1", service.getTotalGeral1() );
109 			parametros.put("totalExer2", service.getTotalGeral2() );
110 			parametros.put("totalExer3", service.getTotalGeral3() );
111 			parametros.put("totalExer4", service.getTotalGeral4() );
112 			parametros.put("totalGeral", service.getTotalGeral() );
113 
114 			
115 			JasperPrint capa = JasperService.fillReport(relatorioCapaJasper,parametros );
116 			JasperPrint rel = JasperService.fillReport(relatorioJasper,parametros, ds);
117 			
118 			ByteArrayOutputStream out = new ByteArrayOutputStream();
119 			JasperService.addRelatorio( capa, rel, out );			
120 			this.responseToPDF(response, out.toByteArray());
121 			
122 		} catch (Exception e) {
123 			logger.error( "Nao foi possivel gerar relatorio PPA por Linha de Ação",e);
124 		}
125 		
126 	}
127 	
128 
129 
130 	
131 }