View Javadoc

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   * Servlet responsavel por interagir com os eventos de geracao de relatorio PPA
27   * @author gabrielsolana
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 			// path absoluto do relatorio PPA
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 			//printParam( tipoParametro, listaProgramas, orgao, listaCriteriosCom, listaCriteriosSem, data,pagina,titulo);
144 			
145 			ArrayList<RelatorioPPABean> relatorioDS = service.generatePPA( tipoParametro, listaProgramas, orgao, listaCriteriosCom, listaCriteriosSem);
146 			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(relatorioDS);
147 			
148 			// Parametros
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 }