View Javadoc

1   package ecar.servlet.relatorio.PPA;
2   
3   import java.math.BigDecimal;
4   import java.util.ArrayList;
5   import java.util.Iterator;
6   import java.util.List;
7   import java.util.Set;
8   
9   import javax.servlet.http.HttpServletRequest;
10  
11  import org.apache.log4j.Logger;
12  
13  import ecar.dao.ExercicioDao;
14  import ecar.dao.FonteRecursoDao;
15  import ecar.dao.ItemEstrtIndResultLocalIettirlDao;
16  import ecar.dao.ItemEstruturaPrevisaoDao;
17  import ecar.dao.LocalItemDao;
18  import ecar.dao.RecursoDao;
19  import ecar.exception.ECARException;
20  import ecar.pojo.ExercicioExe;
21  import ecar.pojo.FonteRecursoFonr;
22  import ecar.pojo.ItemEstruturaIettPPA;
23  import ecar.pojo.LocalItemLit;
24  import ecar.pojo.RecursoRec;
25  
26  public class CalcularPrevisaoService {
27  
28  
29  	/**
30  	 * Log da classe
31  	 */
32  	private Logger logger = Logger.getLogger(this.getClass());
33  	
34  	
35  	/**
36  	 * Requisicao
37  	 */
38  	private HttpServletRequest request;	
39  	
40  	/**
41  	 * Constante que representa periodicidade 2008 - 2011
42  	 */
43  	private final Long CONSTANTE_PERIODO_EXERCICIO = Long.valueOf(2);		
44  	
45  	/**
46  	 * Listagem de exercicios do periodo
47  	 */
48  	private List<ExercicioExe> listaExercicios = new ArrayList<ExercicioExe>();
49  	
50  	private List<RecursoRec> listaRecursos = new ArrayList<RecursoRec>();
51  	
52  	private List<FonteRecursoFonr> listaFontes = new ArrayList<FonteRecursoFonr>();
53  	
54  	public CalcularPrevisaoService( HttpServletRequest request ) {
55  		this.request = request;
56  		loadExerciciosValidos();
57  		loadFontes();
58  		loadRecurso();
59  	}
60  
61  	public CalcularPrevisaoService() {}
62  	
63  	public void setRequest( HttpServletRequest paramRequest  ){
64  		this.request = paramRequest;
65  	}
66  	
67  	private void loadRecurso(){
68  		
69  		try {
70  			
71  			final RecursoDao recursoDao = new RecursoDao(request);
72  			
73  			// carrega todos os recursos ativos
74  			listaRecursos = recursoDao.getAtivos();
75  		} catch (ECARException e) {
76  			logger.error("Nao foi possivel carregar Recursos ", e);
77  		} catch (Exception e) {
78  			logger.error("Nao foi possivel carregar Recursos", e);			
79  		}			
80  		
81  	}
82  	
83  	private void loadFontes(){
84  		
85  		
86  		try {
87  			final FonteRecursoDao fonteDao = new FonteRecursoDao(request);
88  			// carrega todas as fontes de recursos ativos
89  			listaFontes = fonteDao.getAtivos();	
90  		} catch (ECARException e) {
91  			logger.error("Nao foi possivel carregar fontes de recurso", e);
92  		} catch (Exception e) {
93  			logger.error("Nao foi possivel carregar fontes de recurso", e);			
94  		}		
95  		
96  	}
97  	
98  	
99  	/**
100 	 * Gera os totais valores da tabela para o item  na tabela do relatorio de PPA 
101 	 * @param Item estrutura
102 	 * @return array de valores da tabela PPA
103 	 * @throws ECARException
104 	 */
105 	public BigDecimal[] calcularPrevisaoSemIntegralizacao(final ItemEstruturaIettPPA itemEstrut ) throws ECARException{
106 		
107 		final ItemEstruturaPrevisaoDao prevDao = new ItemEstruturaPrevisaoDao(request);
108 		final int NIVEL_PROGRAMA = 2;
109 		
110 		// #####################
111 		//  Para cada Fonte de Recurso
112 		//  	Para cada Exercicio da Fonte de Recurso
113 		//			Pra cada Recurso Ativo
114 		//				Recupera valor Aprovado
115 		// #####################		
116 		ArrayList<BigDecimal> previsao = new ArrayList<BigDecimal>();
117 
118 		
119 		
120 		
121 		// ateh 2
122 		for (Iterator iterFonte = listaFontes.iterator(); iterFonte.hasNext();) {
123 			FonteRecursoFonr elementoFonte = (FonteRecursoFonr) iterFonte.next();
124 			// ateh 4
125 			for (Iterator iterExer = listaExercicios.iterator(); iterExer.hasNext();) {
126 				ExercicioExe elementoExerc = (ExercicioExe) iterExer.next();
127 				// ateh 3
128 				for (Iterator iter = listaRecursos.iterator(); iter.hasNext();) {
129 					RecursoRec elementoRec = (RecursoRec) iter.next();
130 					
131 					BigDecimal previsaoItem = null;
132 
133 					if ( itemEstrut.getNivelIett().equals(( Integer.valueOf( Integer.valueOf(NIVEL_PROGRAMA) ) ) ) )  { 
134 						previsaoItem =  prevDao.previsaoSomaItensFilhosSemIntegralizacao(itemEstrut.getCodIett(), elementoFonte.getCodFonr(), elementoExerc.getCodExe(), elementoRec.getCodRec()) ;	
135 					}
136 					else{
137 						previsaoItem =  prevDao.previsaoItemSemIntegralizacao( itemEstrut.getCodIett(), elementoFonte.getCodFonr(), elementoExerc.getCodExe(), elementoRec.getCodRec()) ;						
138 					}
139 
140 					previsao.add(previsaoItem);
141 
142 				}
143 				
144 				
145 			}
146 		}
147 		return previsao.toArray(new BigDecimal[previsao.size()]);
148 
149 
150 	}
151 	
152 	
153 	/**
154 	 * Gera os totais valores da tabela para o item  na tabela do relatorio de PPA 
155 	 * @param Item estrutura
156 	 * @return array de valores da tabela PPA
157 	 * @throws ECARException
158 	 */
159 	public BigDecimal[] calcularPrevisao(final ItemEstruturaIettPPA itemEstrut ) throws ECARException{
160 		
161 		final ItemEstruturaPrevisaoDao prevDao = new ItemEstruturaPrevisaoDao(request);
162 		final int NIVEL_PROGRAMA = 2;
163 		
164 		// #####################
165 		//  Para cada Fonte de Recurso
166 		//  	Para cada Exercicio da Fonte de Recurso
167 		//			Pra cada Recurso Ativo
168 		//				Recupera valor Aprovado
169 		// #####################		
170 		ArrayList<BigDecimal> previsao = new ArrayList<BigDecimal>();
171 
172 		
173 		
174 		
175 		// ateh 2
176 		for (Iterator iterFonte = listaFontes.iterator(); iterFonte.hasNext();) {
177 			FonteRecursoFonr elementoFonte = (FonteRecursoFonr) iterFonte.next();
178 			// ateh 4
179 			for (Iterator iterExer = listaExercicios.iterator(); iterExer.hasNext();) {
180 				ExercicioExe elementoExerc = (ExercicioExe) iterExer.next();
181 				// ateh 3
182 				for (Iterator iter = listaRecursos.iterator(); iter.hasNext();) {
183 					RecursoRec elementoRec = (RecursoRec) iter.next();
184 					
185 					BigDecimal previsaoItem = null;
186 
187 					if ( itemEstrut.getNivelIett().equals(( Integer.valueOf( Integer.valueOf(NIVEL_PROGRAMA) ) ) ) )  { 
188 						previsaoItem =  prevDao.previsaoSomaItensFilhos(itemEstrut.getCodIett(), elementoFonte.getCodFonr(), elementoExerc.getCodExe(), elementoRec.getCodRec()) ;	
189 					}
190 					else{
191 						previsaoItem =  prevDao.previsaoItem( itemEstrut.getCodIett(), elementoFonte.getCodFonr(), elementoExerc.getCodExe(), elementoRec.getCodRec()) ;						
192 					}
193 
194 					previsao.add(previsaoItem);
195 
196 				}
197 				
198 				
199 			}
200 		}
201 		return previsao.toArray(new BigDecimal[previsao.size()]);
202 
203 
204 	}
205 
206 
207 	
208 	/**
209 	 * Retorna previsto por local - Somatorio de todos os exercicios
210 	 * @param codIettir Item Estrutura Indicador Resultado
211 	 * @param codLitl Local Item
212 	 * @return qtde prevista
213 	 */
214 	public Double calcularPrevisaoByLocal(  Long codIettir, Long codLitl ) {
215 		
216 		final ItemEstrtIndResultLocalIettirlDao dao = new ItemEstrtIndResultLocalIettirlDao(request);
217 		final LocalItemDao localDao = new LocalItemDao(request);
218 		final Long LOCAL_ITEM_ESTADO = 407L;
219 
220 		ArrayList<Long> listaExercicioPK = new ArrayList<Long>();		
221 		Double qtde = new Double(0D);	
222 		try {
223 			LocalItemLit localChave = (LocalItemLit)localDao.buscar( LocalItemLit.class ,  codLitl );
224 			
225 			for (Iterator iter = listaExercicios.iterator(); iter.hasNext();) {
226 				ExercicioExe exe = (ExercicioExe) iter.next();
227 				listaExercicioPK.add( exe.getCodExe() );
228 			}
229 			
230 			if ( codLitl.longValue() != LOCAL_ITEM_ESTADO ){
231 				Set locais = localChave.getLocalItemHierarquiaLithsByCodLitPai();
232 				
233 				double qtdeTmp = 0D;			
234 				
235 	
236 				for (Iterator iter = locais.iterator(); iter.hasNext();) {
237 					LocalItemLit loc = (LocalItemLit) iter.next();
238 	
239 	
240 					Double result = dao.getSomaQtdePrevistaByLocal( codIettir, listaExercicioPK, loc.getCodLit() );
241 					qtdeTmp = qtdeTmp + result.doubleValue();
242 				
243 				}
244 				qtde = Double.valueOf(qtdeTmp);
245 			}
246 			
247 			qtde = qtde + dao.getSomaQtdePrevistaByLocal( codIettir, listaExercicioPK, codLitl );
248 
249 			
250 		} catch (Exception e) {
251 			e.printStackTrace(System.out);
252 			logger.error(e);
253 			return null;
254 		}
255 
256 		return qtde;
257 		
258 	}
259 	
260 	
261 	/**
262 	 * Carrega exercicios do periodo de 2008 - 2011
263 	 *
264 	 */
265 	public void loadExerciciosValidos(){
266 		
267 		try {
268 			
269 			final ExercicioDao exercicioDao = new ExercicioDao(request);
270 			
271 			// carrega todos os exercicios do periodo de 2008 / 2011
272 			listaExercicios = exercicioDao.getExercicioByPeriodicidade( CONSTANTE_PERIODO_EXERCICIO );
273 			
274 		} catch (ECARException e) {
275 			logger.error("Nao foi possivel carregar Exercicio", e);
276 		} catch (Exception e) {
277 			logger.error("Nao foi possivel carregar Exercicio", e);			
278 		}				
279 		
280 	}		
281 	
282 	
283 	
284 }