1 package ecar.servlet.relatorio.PPA;
2
3 import java.io.ByteArrayOutputStream;
4 import java.util.ArrayList;
5 import java.util.HashMap;
6 import java.util.Iterator;
7 import java.util.Map;
8
9 import javax.servlet.ServletContext;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 import net.sf.jasperreports.engine.JasperPrint;
14 import net.sf.jasperreports.engine.JasperReport;
15 import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
16
17 import org.apache.log4j.Logger;
18
19 import comum.util.Pagina;
20
21 import ecar.servlet.relatorio.PPA.bean.RelatorioPPABean;
22 import ecar.util.jasper.JasperService;
23 import ecar.util.jasper.servlet.RelatorioServlet;
24
25
26
27
28
29
30 public class RelatorioPPAServlet extends RelatorioServlet {
31
32 private static final long serialVersionUID = -1766348930967499449L;
33 private Logger logger = Logger.getLogger(this.getClass());
34
35
36 public RelatorioPPAServlet(){
37 super();
38 }
39
40 public void doRelatorioGet(HttpServletRequest request, HttpServletResponse response) {
41 doRelatorioPost(request,response);
42 }
43
44 public void doRelatorioPost(HttpServletRequest request, HttpServletResponse response) {
45
46 logger.info("Generating relatorioPPA...");
47
48 final ServletContext context = getServletContext();
49
50 String tipoParametro = Pagina.getParamStr(request, "relatorio");
51 logger.info( "Parametro escolhido:::: " + tipoParametro );
52
53 String[] programas = request.getParameterValues("programa");
54 String orgao = Pagina.getParamStr(request, "listOrgao");
55 final String criteriosIncluidosCom = Pagina.getParamStr(request, "criteriosIncluidosCom");
56 final String criteriosIncluidosSem = Pagina.getParamStr(request, "criteriosIncluidosSem");
57 String data = Pagina.getParamStr(request, "data");
58 String pagina = Pagina.getParamStr(request, "pagina");
59 String titulo = Pagina.getParamStr(request, "titulo");
60
61 Integer paginaInt = null;
62
63 try {
64 if( pagina ==null || pagina.equals("") ){
65 paginaInt = Integer.valueOf(1);
66 }else{
67 paginaInt = Integer.valueOf( pagina );
68 }
69 } catch (Exception e) {
70 paginaInt = Integer.valueOf( 1 );
71 }
72
73 try {
74 if( data ==null || data.equals("") ){
75 data = "";
76 }
77 } catch (Exception e) {
78 data = "";
79 }
80
81 try {
82 if( titulo ==null || "".equals( titulo ) ){
83 titulo = "ESTADO DO PARANÁ - PLANO PLURIANUAL 2008-2011";
84 }
85 } catch (Exception e) {
86 titulo = "ESTADO DO PARANÁ - PLANO PLURIANUAL 2008-2011";
87 }
88
89 try {
90 if( tipoParametro ==null || "".equals( tipoParametro ) ){
91 tipoParametro = "completo";
92 }
93 } catch (Exception e) {
94 tipoParametro = "completo";
95 }
96
97 try {
98 if( orgao ==null || "".equals( orgao ) ){
99 orgao = "0";
100 }
101 } catch (Exception e) {
102 orgao = "0";
103 }
104
105 programas= programas==null?new String[1]:programas;
106
107
108 Map parametros = new HashMap();
109 try {
110
111 String[] criteriosParaFiltrarCom = (!"".equals(criteriosIncluidosCom.trim())) ? criteriosIncluidosCom.split("\\|") : new String[] {};
112 String[] criteriosParaFiltrarSem = (!"".equals(criteriosIncluidosSem.trim())) ? criteriosIncluidosSem.split("\\|") : new String[] {};
113
114 ArrayList<String> listaCriteriosCom = new ArrayList<String>();
115 ArrayList<String> listaCriteriosSem = new ArrayList<String>();
116
117 for(int i = 0; i < criteriosParaFiltrarCom.length; i++){
118 listaCriteriosCom.add(criteriosParaFiltrarCom[i]);
119 }
120
121 for(int i = 0; i < criteriosParaFiltrarSem.length; i++){
122 listaCriteriosSem.add(criteriosParaFiltrarSem[i]);
123 }
124
125 ArrayList<String> listaProgramas = new ArrayList<String>();
126 for(int i = 0; i < programas.length; i++){
127 listaProgramas.add(programas[i]);
128 }
129
130 final RelatorioPPAService service = RelatorioPPAService.getInstance(request);
131
132
133 final String pathRelPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei.jasper" );
134 final String pathRelProgramaPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei_programa.jasper" );
135 final String pathRelIndicadorPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei_tabela_indic.jasper" );
136 final String pathRelAcaoPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei_acao.jasper" );
137 final String pathRelProdutoPPA = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei_tabela_produto.jasper" );
138 final String pathRelPPACapa = context.getRealPath( JasperService.PATH_RELATORIO + "/relatorioPPA_projetoLei_capa.jasper" );
139
140 JasperReport relatorioProjetoLei = JasperService.loadReport( pathRelPPA );
141 JasperReport relatorioCapa = JasperService.loadReport( pathRelPPACapa );
142
143
144
145 ArrayList<RelatorioPPABean> relatorioDS = service.generatePPA( tipoParametro, listaProgramas, orgao, listaCriteriosCom, listaCriteriosSem);
146 JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(relatorioDS);
147
148
149 parametros.put("pagina", paginaInt );
150 parametros.put( "data" , data );
151 parametros.put( "titulo" , titulo );
152 parametros.put( "relatorioPPA_projetoLei_programas_PATH" , pathRelProgramaPPA );
153 parametros.put( "relatorioPPA_projetoLei_indicadores_PATH" , pathRelIndicadorPPA );
154 parametros.put( "relatorioPPA_projetoLei_acoes_PATH" , pathRelAcaoPPA );
155 parametros.put( "relatorioPPA_projetoLei_produtos_PATH" , pathRelProdutoPPA );
156
157 JasperPrint capa = JasperService.fillReport(relatorioCapa,parametros );
158 JasperPrint relProjetoLei = JasperService.fillReport(relatorioProjetoLei,parametros, ds);
159 logger.info( "Numero paginas projetoLei sem Capa:" + JasperService.getNumberOfPages(relProjetoLei) );
160
161
162 ByteArrayOutputStream out = new ByteArrayOutputStream();
163 JasperService.addRelatorio( capa, relProjetoLei, out );
164
165 logger.info("Relatorio gerado com sucesso!");
166 this.responseToPDF(response, out.toByteArray() );
167
168 } catch (Exception e) {
169 logger.error( "Nao foi possivel gerar relatorioPPA",e);
170 }
171
172 }
173
174
175 private void printParam( String tipoParametro, ArrayList listaProgramas, String orgao, ArrayList listaCriteriosCom, ArrayList listaCriteriosSem, String data, String pagina, String titulo ){
176 logger.info( "tipoParametro: " + tipoParametro );
177 logger.info( "orgao: " + orgao );
178 logger.info( "titulo: " + titulo );
179 logger.info( "pagina: " + pagina );
180 logger.info( "data: " + data );
181
182 logger.info( "listaCriteriosSem:::::::::::" );
183 for (Iterator iter = listaCriteriosSem.iterator(); iter.hasNext();) {
184 String element = (String) iter.next();
185 logger.info( element );
186 }
187
188 logger.info( "listaCriteriosCom:::::::::::" );
189 for (Iterator iter = listaCriteriosCom.iterator(); iter.hasNext();) {
190 String element = (String) iter.next();
191 logger.info( element );
192 }
193
194 logger.info( "listaProgramas:::::::::::" );
195 for (Iterator iter = listaProgramas.iterator(); iter.hasNext();) {
196 String element = (String) iter.next();
197 logger.info( element );
198 }
199
200 }
201
202
203
204 }