1 package ecar.servlet.relatorio.PPA_Programa;
2
3 import java.math.BigDecimal;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.Iterator;
7 import java.util.List;
8 import java.util.Set;
9 import java.util.TreeSet;
10
11 import javax.servlet.http.HttpServletRequest;
12
13 import org.apache.log4j.Logger;
14
15 import ecar.dao.ExercicioDao;
16 import ecar.dao.ItemEstruturaDao;
17 import ecar.dao.ItemEstruturaPrevisaoDao;
18 import ecar.exception.ECARException;
19 import ecar.pojo.ExercicioExe;
20 import ecar.pojo.ItemEstruturaIett;
21 import ecar.servlet.relatorio.PPA_Util.CalcularTotalVisitor;
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 public class RelatorioPPAProgramaService {
42
43
44
45
46 private Logger logger = Logger.getLogger(this.getClass());
47
48
49
50
51 private HttpServletRequest request;
52
53
54 private static final Long codEstruturaPrograma = Long.valueOf(22);
55
56
57
58
59 private ArrayList<PPA_ProgramaBean> dados;
60
61
62
63
64 private final CalcularTotalVisitor calcularTotal = new CalcularTotalVisitor();
65
66 final private String PARAM_DATA_INICIO = "2008";
67 final private String PARAM_DATA_TERMINO = "2011";
68
69
70 private final Long CONSTANTE_PERIODO_EXERCICIO = Long.valueOf(2);
71
72
73 private final Character CONSTANTE_IND_ATIVO = new Character('S');
74
75
76
77
78 private List<ExercicioExe> listaExercicios = new ArrayList<ExercicioExe>();
79
80
81
82
83
84 private RelatorioPPAProgramaService(){
85 dados = new ArrayList<PPA_ProgramaBean>();
86 }
87
88
89
90
91
92
93 public static RelatorioPPAProgramaService getInstance( HttpServletRequest paramRequest ){
94 RelatorioPPAProgramaService objeto = new RelatorioPPAProgramaService();
95 objeto.request = paramRequest;
96 return objeto;
97 }
98
99
100
101
102
103 public ArrayList<PPA_ProgramaBean> generatePPA(){
104 getDados();
105 gerarContador();
106 return dados;
107 }
108
109 private void gerarContador(){
110
111 int cont = 0;
112 for (Iterator iter = dados.iterator(); iter.hasNext();) {
113 PPA_ProgramaBean elemento = (PPA_ProgramaBean) iter.next();
114 elemento.setIndice(cont);
115 cont++;
116 }
117
118 }
119
120
121
122
123
124 private void loadExerciciosValidos(){
125
126 try {
127
128 final ExercicioDao exercicioDao = new ExercicioDao(request);
129
130
131 listaExercicios = exercicioDao.getExercicioByPeriodicidade( CONSTANTE_PERIODO_EXERCICIO );
132
133 } catch (ECARException e) {
134 logger.error("Nao foi possivel carregar Exercicio", e);
135 } catch (Exception e) {
136 logger.error("Nao foi possivel carregar Exercicio", e);
137 }
138
139 }
140
141
142
143
144
145
146 private Set reordenarPrograma(Collection list){
147 TreeSet<ItemEstruturaIett> novalista = new TreeSet<ItemEstruturaIett>( new ProgramaComparatorNome() );
148 for (Iterator iter = list.iterator(); iter.hasNext();) {
149 ItemEstruturaIett item = (ItemEstruturaIett) iter.next();
150
151 if ( CONSTANTE_IND_ATIVO.toString().equalsIgnoreCase( item.getIndAtivoIett() ) ){
152 novalista.add(item);
153 }
154
155 }
156 return novalista;
157 }
158
159
160
161
162
163
164
165
166 private void getDados(){
167
168 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
169 ArrayList<ItemEstruturaIett> itens = new ArrayList<ItemEstruturaIett>();
170 boolean vazio = true;
171 try {
172
173
174 loadExerciciosValidos();
175
176
177 itens = new ArrayList<ItemEstruturaIett>(itemEstruturaDao.getItensByEstrutura(codEstruturaPrograma));
178
179 if(itens != null){
180 for (Iterator<ItemEstruturaIett> iter = reordenarPrograma(itens).iterator(); iter.hasNext();) {
181 ItemEstruturaIett iett = iter.next();
182 vazio = false;
183 generateBean(iett);
184
185 }
186 }
187
188 if (vazio){
189 logger.info("Nao existe item de nivelprograma na estrutura no periodo estipulado!!!");
190 }
191
192
193 } catch (Exception e) {
194 logger.error("Nao foi possivel carregar dados", e);
195 }
196 }
197
198
199
200
201
202
203 private void generateBean( ItemEstruturaIett itemPrograma ) throws Exception{
204 PPA_ProgramaBean programaTmp = geraPrograma(itemPrograma);
205 geraPrevisao(programaTmp, itemPrograma );
206 calcularTotal.visit(programaTmp);
207 dados.add(programaTmp);
208 }
209
210
211
212
213
214
215
216 private void geraPrevisao( PPA_ProgramaBean programa, ItemEstruturaIett itemPrograma ) throws ECARException{
217
218 BigDecimal[] previsoes = getPrevisao(itemPrograma);
219 if ( previsoes != null && previsoes.length == 4 ){
220 programa.setValor1( previsoes[0] );
221 programa.setValor2( previsoes[1] );
222 programa.setValor3( previsoes[2] );
223 programa.setValor4( previsoes[3] );
224 }
225
226
227 }
228
229
230
231
232
233
234 private PPA_ProgramaBean geraPrograma(ItemEstruturaIett itemPrograma ) throws ECARException{
235
236 PPA_ProgramaBean programa = new PPA_ProgramaBean();
237 programa.setNome( itemPrograma.getNomeIett() );
238 return programa;
239
240 }
241
242
243
244
245
246
247
248 private BigDecimal[] getPrevisao(final ItemEstruturaIett itemEstrut ) throws ECARException{
249
250 final ItemEstruturaPrevisaoDao prevDao = new ItemEstruturaPrevisaoDao(request);
251
252 ArrayList<BigDecimal> previsao = new ArrayList<BigDecimal>();
253 BigDecimal previsaoItem = null;
254 for (Iterator iterExer = listaExercicios.iterator(); iterExer.hasNext();) {
255 ExercicioExe elementoExerc = (ExercicioExe) iterExer.next();
256 previsaoItem = prevDao.previsaoItem( itemEstrut.getCodIett(), elementoExerc.getCodExe() ) ;
257 previsao.add(previsaoItem);
258 }
259 return previsao.toArray(new BigDecimal[previsao.size()]);
260
261 }
262
263 }