if (!Pagina.getParamStr(campos, "opcaoPrdc").equals("")) {
String opcaoPrdc = Pagina.getParamStr(campos, "opcaoPrdc");
if(PRDC_UNICO.equalsIgnoreCase(opcaoPrdc)){
/* gera uma �nica ocorr�ncia em AgendaOcorrencia igual a Agenda */
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
session.save(agendaOC);
objetos.add(agendaOC);
}
else if(PRDC_SEMANAL.equalsIgnoreCase(opcaoPrdc)){
/* gera ocorr�ncia(s) at� a data limite, somente para dias da semana selecionados */
/* (EX.: se SEG e QUA - s�o gerados em AgendaOcorrencia da data inicial at� a data limite */
/* todas as SEGs e QUAs) */
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
//session.save(agendaOC);
//objetos.add(agendaOC);
String[] diasSemana = campos.getParameterValues("diasSemanaPrdc");
for(int i = 0; i < diasSemana.length; i++){
Calendar data = Data.getGregorianCalendar(agenda.getDataAge());
/* Calcular a diferen�a do dia da semana */
if( data.get(Calendar.DAY_OF_WEEK) != (Long.valueOf(diasSemana[i])).intValue() ){
/* Havendo diferen�a com o dia da semana selecionado verifica a diferen�a e soma encontrando o primeiro a partir do in�cio */
int difDiaSemana = ( 7 - data.get(Calendar.DAY_OF_WEEK) ) + (Long.valueOf(diasSemana[i])).intValue();
if (difDiaSemana > 7)
difDiaSemana = difDiaSemana - 7;
data.add(Calendar.DATE, difDiaSemana);
}else{
/* Se mesmo dia da semana, � somado uma semana, pois j� foi inclu�da a primera semana */
data.add(Calendar.DATE, 7);
}
while(data.before(Data.getGregorianCalendar(agenda.getDataLimiteAge())) ||
data.equals(Data.getGregorianCalendar(agenda.getDataLimiteAge()))){
/* Para cada inclus�o, instanciar um objeto */
AgendaOcorrenciaAgeo agendaOCSemanal = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOCSemanal, agenda);
agendaOCSemanal.setDataEventoAgeo(data.getTime());
session.save(agendaOCSemanal);
objetos.add(agendaOCSemanal);
data.add(Calendar.DATE, 7);
}
}
}
else if(PRDC_QUINZENAL.equalsIgnoreCase(opcaoPrdc)){
/* gera ocorr�ncia(s) at� a data limite, de 14 em 14 dias, */
/* para que sempre seja o mesmo dia da semana */
Calendar data = Data.getGregorianCalendar(agenda.getDataAge());
while(data.before(Data.getGregorianCalendar(agenda.getDataLimiteAge())) ||
data.equals(Data.getGregorianCalendar(agenda.getDataLimiteAge()))){
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
agendaOC.setDataEventoAgeo(data.getTime());
session.save(agendaOC);
objetos.add(agendaOC);
data.add(Calendar.DATE, 14);
}
}
else if(PRDC_MENSAL.equalsIgnoreCase(opcaoPrdc)){
/* gera ocorr�ncia(s) at� a data limite, soma 1 m�s*/
Calendar data = Data.getGregorianCalendar(agenda.getDataAge());
while(data.before(Data.getGregorianCalendar(agenda.getDataLimiteAge())) ||
data.equals(Data.getGregorianCalendar(agenda.getDataLimiteAge()))){
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
agendaOC.setDataEventoAgeo(data.getTime());
session.save(agendaOC);
objetos.add(agendaOC);
data.add(Calendar.MONTH, 1);
}
}
else if(PRDC_ANUAL.equalsIgnoreCase(opcaoPrdc)){
/* gera ocorr�ncia(s) at� a data limite, soma 1 ano */
Calendar data = Data.getGregorianCalendar(agenda.getDataAge());
while(data.before(Data.getGregorianCalendar(agenda.getDataLimiteAge())) ||
data.equals(Data.getGregorianCalendar(agenda.getDataLimiteAge()))){
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
agendaOC.setDataEventoAgeo(data.getTime());
session.save(agendaOC);
objetos.add(agendaOC);
data.add(Calendar.YEAR, 1);
}
}
else if(PRDC_OUTRO.equalsIgnoreCase(opcaoPrdc)){
/* gera ocorr�ncia(s) at� a data limite, soma X dias */
Calendar data = Data.getGregorianCalendar(agenda.getDataAge());
int dias = Pagina.getParamInt(campos, "diasPrdc");
while(data.before(Data.getGregorianCalendar(agenda.getDataLimiteAge())) ||
data.equals(Data.getGregorianCalendar(agenda.getDataLimiteAge()))){
AgendaOcorrenciaAgeo agendaOC = new AgendaOcorrenciaAgeo();
agendaOCDao.setAgendaOcorrencia(agendaOC, agenda);
agendaOC.setDataEventoAgeo(data.getTime());
session.save(agendaOC);
objetos.add(agendaOC);
data.add(Calendar.DATE, dias);