}
}
ItemEstrtIndResulDao itemEstrtIndResulDao = new ItemEstrtIndResulDao(null);
ExercicioDao exercicioDao = new ExercicioDao(null);
AcompReferenciaDao acompReferenciaDao = new AcompReferenciaDao(null);
AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(null);
//Descobrir Meses
ItemEstrtIndResulIettr indicador = (ItemEstrtIndResulIettr) itemEstrtIndResulDao.buscar(ItemEstrtIndResulIettr.class, Long.valueOf(Pagina.getParamStr(request,"codIndicador")));
AcompReferenciaItemAri ari = (AcompReferenciaItemAri) acompReferenciaItemDao.buscar(AcompReferenciaItemAri.class, Long.valueOf(Pagina.getParamStr(request,"codAri")));
boolean comQtde = ("S".equals(Pagina.getParamStr(request, "comQtde")) ? true : false);
boolean soPrevisao = ("S".equals(Pagina.getParamStr(request, "soPrevisao")) ? true : false);
int[] meses = acompReferenciaItemDao.getMesAnoInicioFimMatrizProjecao(indicador, comQtde, soPrevisao);
int mesInicio = meses[0];
int anoInicio = meses[1];
if(soPrevisao){
mesInicio = Integer.valueOf(Pagina.getParamStr(request, "mesIni")).intValue();
anoInicio = Integer.valueOf(Pagina.getParamStr(request, "anoIni")).intValue();
}
else {
mesInicio = meses[0];
anoInicio = meses[1];
}
int mesFimRealizado = Integer.valueOf(ari.getAcompReferenciaAref().getMesAref()).intValue(); ;
int anoFimRealizado = Integer.valueOf(ari.getAcompReferenciaAref().getAnoAref()).intValue(); ;
TimeSeriesCollection data = new TimeSeriesCollection();
TimeSeries serie1 = new TimeSeries("Realizado", Month.class);
TimeSeries serie2 = new TimeSeries("Projetado", Month.class);
TimeSeries serie3 = new TimeSeries("Previsto", Month.class);
int auxMes = mesInicio;
int auxAno = anoInicio;
int i = 1;
double qtdeAnterior = 0;
while(auxAno < anoFimRealizado || (auxAno == anoFimRealizado && auxMes <= mesFimRealizado)){
String strMesInicio = Integer.valueOf(auxMes).toString();
if(strMesInicio.length() == 1)
strMesInicio = "0" + strMesInicio;
String strAnoInicio = Integer.valueOf(auxAno).toString();
Double qtde = new AcompRealFisicoDao(null).getQtdRealizadaMesAno(indicador, Long.valueOf(strMesInicio), Long.valueOf(strAnoInicio));
double qtdeSerie = 0;
//utilizar o valor refer�ncia para o in�cio da proje��o [por Thaise].
if (indicador.getIndiceMaisRecenteIettr()!= null && qtdeAnterior==0) {
qtdeAnterior = indicador.getIndiceMaisRecenteIettr().doubleValue();
}
if(qtde != null){
//qtdeSerie = qtdeAnterior + qtde.doubleValue();
//FIXME: Verificar regra do n�o-acumul�vel: Est� pegando o valor pq n�o tem uma lista de valores para comparar o �ltimo/maior.
if("S".equals(indicador.getIndAcumulavelIettr())){
qtdeSerie = qtdeAnterior + qtde.doubleValue();
}else {
qtdeSerie = qtde.doubleValue();
}
qtdeAnterior = qtdeSerie;
} else
qtdeSerie = qtdeAnterior;
serie1.add(new Month(auxMes, auxAno), qtdeSerie);
valuesProjection.add(qtdeSerie);
sMeses.add(Integer.valueOf(i));
sRealizado.add(new Double(qtdeSerie));
auxMes++;
if(auxMes == 13){
auxMes = 1;
auxAno++;
}
i++;
}
//Avan�a 1 mes
int mesAnt = auxMes;
int anoAnt = auxAno;
if(mesAnt - 1 == 0){
mesAnt = 12;
anoAnt--;
} else {
mesAnt--;
}
int mesFimProjecao = mesFimRealizado;
int anoFimProjecao = anoFimRealizado;
int xProjetado = 0;
int[] fimProjecao = acompReferenciaItemDao.getMesAnoFimProjecao(indicador);
mesFimProjecao = fimProjecao[0];
anoFimProjecao = fimProjecao[1];
//Descobrir o xProjetado (�ndice que mesFimProjecao/anoFimProjecao teria na matriz de realizados)
if(anoFimProjecao == anoFimRealizado){
xProjetado = i + (mesFimProjecao - mesFimRealizado);
} else {
while(anoFimProjecao > anoFimRealizado){ // Corre��o Thaise [antes era um !=]
mesFimRealizado++;
if(mesFimRealizado == 13){
anoFimRealizado++;
mesFimRealizado = 1;
}
xProjetado++;
}
xProjetado += i + mesFimProjecao;
}
//Descobrir at� onde vai o PREVISTO
String strMesInicio = Integer.valueOf(mesInicio).toString();
if(strMesInicio.length() == 1)
strMesInicio = "0" + strMesInicio;
String strMesFim = Integer.valueOf(mesFimProjecao).toString();
if(strMesFim.length() == 1)
strMesFim = "0" + strMesFim;
String strAnoInicio = Integer.valueOf(anoInicio).toString();
String strAnoFim = Integer.valueOf(anoFimProjecao).toString();
ExercicioExe exercicioInicial = acompReferenciaDao.getExercicio(strAnoInicio, strMesInicio);
ExercicioExe exercicioFinal = acompReferenciaDao.getExercicio(strAnoFim, strMesFim);
List exerciciosAnteriores = new ArrayList();
List exerciciosPosteriores = new ArrayList();
if(exercicioFinal!=null)
exerciciosAnteriores = exercicioDao.getExerciciosAnteriores(exercicioFinal);
if(exercicioInicial!=null)
exerciciosPosteriores = exercicioDao.getExerciciosPosteriores(exercicioInicial);
Set exerciciosDoPeriodo = new HashSet();
exerciciosDoPeriodo.addAll(Util.intersecao(exerciciosAnteriores, exerciciosPosteriores));
if(exercicioInicial!=null)
exerciciosDoPeriodo.add(exercicioInicial);