package gcom.seguranca.transacao;
import gcom.cadastro.atualizacaocadastral.bean.ColunaAtualizacaoCadastral;
import gcom.cadastro.atualizacaocadastral.bean.ConsultarMovimentoAtualizacaoCadastralHelper;
import gcom.gui.cadastro.atualizacaocadastral.FiltrarAlteracaoAtualizacaoCadastralActionForm;
import gcom.gui.cadastro.atualizacaocadastral.FiltrarAlteracaoAtualizacaoCadastralActionHelper;
import java.util.List;
public class ValidadorAtualizacaoCadastral extends ValidadorAtualizacaoCadastralCallBack {
public ValidadorAtualizacaoCadastral(FiltrarAlteracaoAtualizacaoCadastralActionHelper filtro, ConsultarMovimentoAtualizacaoCadastralHelper imovel) {
super(filtro, imovel);
}
boolean executa() {
if (filtro.getExibirCampos().equals(FiltrarAlteracaoAtualizacaoCadastralActionForm.FILTRO_APROVACAO_EM_LOTE.toString())) {
return validaAprovacaoEmLote();
} else {
return validaNormal();
}
}
public boolean validaNormal() {
boolean passou = true;
List<ColunaAtualizacaoCadastral> dados = imovel.getColunasAtualizacao();
passou &= passouAlteracaoHidrometro(dados, filtro);
passou &= passouAlteracaoSituacaoAgua(dados, filtro);
passou &= passouAlteracaoSituacaoEsgoto(dados, filtro);
passou &= passouAlteracaoCategoria(dados, filtro);
return passou;
}
public boolean validaAprovacaoEmLote() {
boolean aprovarEmLote = true;
List<ColunaAtualizacaoCadastral> dados = imovel.getColunasAtualizacao();
boolean passouHidroemtro = passouAlteracaoHidrometro(dados, filtro);
boolean passouSituacaoAgua = passouAlteracaoSituacaoAgua(dados, filtro);
boolean passouSituacaoEsgoto = passouAlteracaoSituacaoEsgoto(dados, filtro);
boolean passouCategoria = passouAlteracaoCategoria(dados, filtro);
if (passouHidroemtro || passouSituacaoAgua || passouSituacaoEsgoto || passouCategoria ) {
aprovarEmLote = false;
}
return aprovarEmLote;
}
private boolean passouAlteracao(List<ColunaAtualizacaoCadastral> dados, Boolean filtro, String nomeColuna) {
boolean passou = true;
if (filtro != null){
passou = false;
boolean existeAlteracao = false;
for (ColunaAtualizacaoCadastral item : dados) {
if (item.getNomeColuna().contains(nomeColuna)){
existeAlteracao = true;
break;
}
}
if ((filtro && existeAlteracao) || (!filtro && !existeAlteracao)){
passou = true;
}
}
return passou;
}
private boolean passouAlteracaoCategoria(List<ColunaAtualizacaoCadastral> dados, FiltrarAlteracaoAtualizacaoCadastralActionHelper filtro) {
return passouAlteracao(dados, filtro.isAlteracaoCategoria(), "isac_qteconomia");
}
private boolean passouAlteracaoSituacaoAgua(List<ColunaAtualizacaoCadastral> dados, FiltrarAlteracaoAtualizacaoCadastralActionHelper filtro) {
return passouAlteracao(dados, filtro.isAlteracaoSituacaoAgua(), "last_id");
}
private boolean passouAlteracaoSituacaoEsgoto(List<ColunaAtualizacaoCadastral> dados, FiltrarAlteracaoAtualizacaoCadastralActionHelper filtro) {
return passouAlteracao(dados, filtro.isAlteracaoSituacaoEsgoto(), "lest_id");
}
private boolean passouAlteracaoHidrometro(List<ColunaAtualizacaoCadastral> dados, FiltrarAlteracaoAtualizacaoCadastralActionHelper filtro) {
return passouAlteracao(dados, filtro.isAlteracaoHidrometro(), "imac_nnhidrometro");
}
}