package gcom.cadastro.controladores;
import javax.ejb.CreateException;
import gcom.cadastro.imovel.Imovel;
import gcom.faturamento.FaturamentoAtividade;
import gcom.faturamento.FaturamentoAtividadeCronograma;
import gcom.interceptor.ObjetoTransacao;
import gcom.micromedicao.Rota;
import gcom.model.IAtualizacaoCadastro;
import gcom.util.ControladorComum;
import gcom.util.ControladorException;
import gcom.util.RepositorioUtilHBM;
import gcom.util.Util;
public class ControladorAtualizacaoCadastro extends ControladorComum {
private static final long serialVersionUID = -6591008548768058900L;
private RepositorioUtilHBM repositorioUtil;
public void ejbCreate() throws CreateException {
repositorioUtil = RepositorioUtilHBM.getInstancia();
}
public void atualizar(Object objeto) throws ControladorException{
try {
if (objeto instanceof Imovel){
Imovel imovel = (Imovel) objeto;
if (imovel.validarSeImovelEmCampo()){
validarImovelEmCampo(imovel.getId());
}
}
if (objeto instanceof IAtualizacaoCadastro){
if (((ObjetoTransacao) objeto).registrarHistorico()){
repositorioUtil.registrarHistorico(objeto);
}
}
repositorioUtil.atualizar(objeto);
} catch (ControladorException e){
throw e;
} catch (Exception e) {
throw new ControladorException("Erro ao atualizar objeto de cadastro", e);
}
}
private void validarImovelEmCampo(Integer idImovel) throws Exception {
if (isImovelEmCampo(idImovel)) {
Rota rota = getControladorMicromedicao().buscarRotaDoImovel(idImovel);
throw new ControladorException("atencao.imovel_em_campo", null, Util.formatarAnoMesParaMesAno(rota.getFaturamentoGrupo().getAnoMesReferencia()).toString());
}
}
private boolean isImovelEmCampo(Integer idImovel) throws Exception {
Rota rota = getControladorMicromedicao().buscarRotaDoImovel(idImovel);
FaturamentoAtividadeCronograma faturamentoAtividadeCronograma = getControladorBatch().pesquisarProcessoIniciadoParaGrupo(rota.getFaturamentoGrupo().getId(),
rota.getFaturamentoGrupo().getAnoMesReferencia(), FaturamentoAtividade.GERAR_ARQUIVO_LEITURA);
return (rota.isRotaImpressaoSimultanea() && faturamentoAtividadeCronograma != null && faturamentoAtividadeCronograma.getDataRealizacao() != null);
}
}