package br.gov.mj.sislegis.app.service.ejbs.crons;
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.inject.Inject;
import br.gov.mj.sislegis.app.model.Proposicao;
import br.gov.mj.sislegis.app.model.pautacomissao.PautaReuniaoComissao;
import br.gov.mj.sislegis.app.service.AutoUpdateProposicaoService;
import br.gov.mj.sislegis.app.service.ProposicaoService;
import br.gov.mj.sislegis.app.service.UsuarioService;
import br.gov.mj.sislegis.app.util.SislegisUtil;
/**
* Executa atualizaca de proposicao em datas definidas
*
* @author rafael.coutinho
*
*/
@Singleton
public class AutoUpdateProposicaoEjb implements AutoUpdateProposicaoService {
@Inject
ProposicaoService proposicaoService;
@Inject
UsuarioService usuarioService;
@Override
@Schedule(dayOfWeek = "*", hour = "3", persistent = false, info = "Atualiza proposicoes da reuniao")
public void atualizaProposicoesDaReuniao() {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Atualiza proposicoes da reuniao de hoje");
Collection<Proposicao> proposicoesReuniao = proposicaoService.buscarProposicoesPorDataReuniao(new Date());
if (proposicoesReuniao.size() == 0) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Nenhuma proposicao para a reuniĆ£o de hoje ");
return;
}
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Ha " + proposicoesReuniao.size() + " a checar");
for (Iterator<Proposicao> iterator = proposicoesReuniao.iterator(); iterator.hasNext();) {
Proposicao proposicao = (Proposicao) iterator.next();
try {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Atualizando " + proposicao);
if (proposicaoService.syncDadosProposicao(proposicao)) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Dados basicos alterados");
} else {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Dados basicos sem alteracao");
}
if (proposicaoService.syncDadosPautaProposicao(proposicao)) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Dados pauta alterados ");
} else {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine("Dados pauta sem alteracao");
}
} catch (IOException e) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).log(Level.SEVERE,
"Falhou ao atualizar proposicao " + proposicao.getSigla(), e);
}
}
}
@Override
@Schedule(dayOfWeek = "*", hour = "4", persistent = false, info = "Atualiza pautas das reunioes passadas e suas proposicoes")
public void atualizaPautaReuniaoEProposicoes() {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine(
"Atualiza pautas das reunioes anteriores e suas proposicoes");
List<PautaReuniaoComissao> prcLocalList = proposicaoService.findPautaReuniaoPendentes();
for (PautaReuniaoComissao prcLocal : prcLocalList) {
try {
if (proposicaoService.syncDadosPautaReuniaoComissao(prcLocal)) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).fine(
"Dados da pauta Reuniao e/ou Proposicao alterados");
} else {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).finest(
"Dados pauta Reuniao e/ou Proposicao sem alteracao");
}
} catch (IOException e) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).log(Level.SEVERE,
"Falhou ao atualizar pauta reuniao e/ou proposicao " + prcLocal.getTitulo(), e);
}
}
}
}