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
31
32 private Logger logger = Logger.getLogger(this.getClass());
33
34
35
36
37
38 private HttpServletRequest request;
39
40
41
42
43 private final Long CONSTANTE_PERIODO_EXERCICIO = Long.valueOf(2);
44
45
46
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
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
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
101
102
103
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
112
113
114
115
116 ArrayList<BigDecimal> previsao = new ArrayList<BigDecimal>();
117
118
119
120
121
122 for (Iterator iterFonte = listaFontes.iterator(); iterFonte.hasNext();) {
123 FonteRecursoFonr elementoFonte = (FonteRecursoFonr) iterFonte.next();
124
125 for (Iterator iterExer = listaExercicios.iterator(); iterExer.hasNext();) {
126 ExercicioExe elementoExerc = (ExercicioExe) iterExer.next();
127
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
155
156
157
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
166
167
168
169
170 ArrayList<BigDecimal> previsao = new ArrayList<BigDecimal>();
171
172
173
174
175
176 for (Iterator iterFonte = listaFontes.iterator(); iterFonte.hasNext();) {
177 FonteRecursoFonr elementoFonte = (FonteRecursoFonr) iterFonte.next();
178
179 for (Iterator iterExer = listaExercicios.iterator(); iterExer.hasNext();) {
180 ExercicioExe elementoExerc = (ExercicioExe) iterExer.next();
181
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
210
211
212
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
263
264
265 public void loadExerciciosValidos(){
266
267 try {
268
269 final ExercicioDao exercicioDao = new ExercicioDao(request);
270
271
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 }