package gcom.cadastro.atualizacaocadastral.command;
import gcom.atualizacaocadastral.IControladorAtualizacaoCadastral;
import gcom.atualizacaocadastral.ImovelControleAtualizacaoCadastral;
import gcom.cadastro.SituacaoAtualizacaoCadastral;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTamanhoLinhaClienteCommand;
import gcom.cadastro.cliente.IClienteFone;
import gcom.cadastro.endereco.LogradouroTipo;
import gcom.cadastro.imovel.IRepositorioImovel;
import gcom.util.ControladorUtilLocal;
import gcom.util.ParserUtil;
import gcom.util.exception.MatriculaProprietarioException;
import gcom.util.exception.MatriculaResponsavelException;
import gcom.util.exception.MatriculaUsuarioException;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.jboss.logging.Logger;
public class ParseClienteCommand extends AbstractAtualizacaoCadastralCommand {
private static Logger logger = Logger.getLogger(ParseClienteCommand.class);
private IRepositorioImovel repositorioImovel;
private IControladorAtualizacaoCadastral controladorAtualizacaoCadastral;
public ParseClienteCommand(ParserUtil parser,
ControladorUtilLocal controladorUtil,
IRepositorioImovel repositorioImovel,
IControladorAtualizacaoCadastral controladorAtualizacaoCadastral) {
super(parser);
this.controladorUtil = controladorUtil;
this.repositorioImovel = repositorioImovel;
this.controladorAtualizacaoCadastral = controladorAtualizacaoCadastral;
}
public void execute(AtualizacaoCadastral atualizacao) throws Exception {
Map<String, String> linha = atualizacao.getImovelAtual().getLinhaCliente();
AtualizacaoCadastralImovel imovelAtual = atualizacao.getImovelAtual();
new ValidadorTamanhoLinhaClienteCommand(parser, imovelAtual, linha).execute();;
if(!imovelAtual.isErroLayout()) {
String matriculaImovelCliente = parser.obterDadoParser(9).trim();
linha.put("matriculaImovelCliente", matriculaImovelCliente);
atualizacao.getImovelAtual().setMatricula(Integer.valueOf(matriculaImovelCliente));
logger.info("Carregando Imovel: " + Integer.parseInt(matriculaImovelCliente));
String gerencia = parser.obterDadoParser(25).trim();
linha.put("gerencia", gerencia);
String tipoEnderecoProprientario = parser.obterDadoParser(1).trim();
linha.put("tipoEnderecoProprietario", tipoEnderecoProprientario);
String tipoEnderecoResponsavel = parser.obterDadoParser(1).trim();
linha.put("tipoEnderecoResponsavel", tipoEnderecoResponsavel);
String usuarioProprietario = parser.obterDadoParser(1).trim();
linha.put("usuarioProprietario", usuarioProprietario);
String tipoResponsavel = parser.obterDadoParser(1).trim();
linha.put("tipoResponsavel", tipoResponsavel);
int matriculaUsuario = 0;
try {
matriculaUsuario = Integer.parseInt(parser.obterDadoParser(9));
} catch (Exception e) {
throw new MatriculaUsuarioException(e, String.valueOf(atualizacao.getImovelAtual().getMatricula()));
}
linha.put("matriculaUsuario", ""+matriculaUsuario);
String nomeUsuario = parser.obterDadoParser(50).trim();
linha.put("nomeUsuario", nomeUsuario.toUpperCase());
String tipoPessoaUsuario = parser.obterDadoParser(1).trim();
linha.put("tipoPessoaUsuario", tipoPessoaUsuario);
String cnpjCpfUsuario = parser.obterDadoParser(14).trim();
linha.put("cnpjCpfUsuario", cnpjCpfUsuario);
String rgUsuario = parser.obterDadoParser(9).trim();
linha.put("rgUsuario", rgUsuario);
String ufRgUsuario = parser.obterDadoParser(2).trim();
linha.put("ufRgUsuario", ufRgUsuario);
String sexoUsuario = parser.obterDadoParser(1).trim();
linha.put("sexoUsuario", sexoUsuario);
String telefoneUsuario = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("telefoneUsuario", telefoneUsuario);
String celularUsuario = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("celularUsuario", celularUsuario);
String emailUsuario = parser.obterDadoParser(30).trim();
linha.put("emailUsuario", emailUsuario);
int matriculaProprietario = 0;
try {
matriculaProprietario = Integer.parseInt(parser.obterDadoParser(9));
} catch (Exception e) {
throw new MatriculaProprietarioException(e, String.valueOf(atualizacao.getImovelAtual().getMatricula()));
}
linha.put("matriculaProprietario", ""+matriculaProprietario);
String nomeProprietario = parser.obterDadoParser(50).trim();
linha.put("nomeProprietario", nomeProprietario.toUpperCase());
String tipoPessoaProprietario = parser.obterDadoParser(1).trim();
linha.put("tipoPessoaProprietario", tipoPessoaProprietario);
String cnpjCpfProprietario = parser.obterDadoParser(14).trim();
linha.put("cnpjCpfProprietario", cnpjCpfProprietario);
String rgProprietario = parser.obterDadoParser(9).trim();
linha.put("rgProprietario", rgProprietario);
String ufRgProprietario = parser.obterDadoParser(2).trim();
linha.put("ufRgProprietario", ufRgProprietario);
String sexoProprietario = parser.obterDadoParser(1).trim();
linha.put("sexoProprietario", sexoProprietario);
String telefoneProprietario = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("telefoneProprietario", telefoneProprietario);
String celularProprietario = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("celularProprietario", celularProprietario);
String emailProprietario = parser.obterDadoParser(30).trim();
linha.put("emailProprietario", emailProprietario);
String tipoLogradouroProprietario = parser.obterDadoParser(2).trim();
linha.put("idTipoLogradouroProprietario", tipoLogradouroProprietario);
if (StringUtils.isNotEmpty(tipoLogradouroProprietario) && StringUtils.isNumeric(tipoLogradouroProprietario) && Integer.valueOf(tipoLogradouroProprietario) > 0){
LogradouroTipo tipo = (LogradouroTipo) controladorUtil.obterPorId(LogradouroTipo.class, Integer.valueOf(tipoLogradouroProprietario));
linha.put("dsTipoLogradouroProprietario", tipo.getDescricao());
}
String logradouroProprietario = parser.obterDadoParser(40).trim();
linha.put("logradouroProprietario", logradouroProprietario);
String numeroProprietario = parser.obterDadoParser(5).trim();
linha.put("numeroProprietario", numeroProprietario);
String complementoProprietario = parser.obterDadoParser(25).trim();
linha.put("complementoProprietario", complementoProprietario);
String bairroProprietario = parser.obterDadoParser(20).trim();
linha.put("bairroProprietario", bairroProprietario);
String cepProprietario = parser.obterDadoParser(8).trim();
linha.put("cepProprietario", cepProprietario);
String municipioProprietario = parser.obterDadoParser(15).trim();
linha.put("municipioProprietario", municipioProprietario);
int matriculaResponsavel = 0;
try {
matriculaResponsavel = Integer.parseInt(parser.obterDadoParser(9));
} catch (Exception e) {
throw new MatriculaResponsavelException(e, String.valueOf(atualizacao.getImovelAtual().getMatricula()));
}
linha.put("matriculaResponsavel", ""+matriculaResponsavel);
String nomeResponsavel = parser.obterDadoParser(50).trim();
linha.put("nomeResponsavel", nomeResponsavel.toUpperCase());
String tipoPessoaResponsavel = parser.obterDadoParser(1).trim();
linha.put("tipoPessoaResponsavel", tipoPessoaResponsavel);
String cnpjCpfResponsavel = parser.obterDadoParser(14).trim();
linha.put("cnpjCpfResponsavel", cnpjCpfResponsavel);
String rgResponsavel = parser.obterDadoParser(9).trim();
linha.put("rgResponsavel", rgResponsavel);
String ufRgResponsavel = parser.obterDadoParser(2).trim();
linha.put("ufRgResponsavel", ufRgResponsavel);
String sexoResponsavel = parser.obterDadoParser(1).trim();
linha.put("sexoResponsavel", sexoResponsavel);
String telefoneResponsavel = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("telefoneResponsavel", telefoneResponsavel);
String celularResponsavel = parser.obterDadoParser(IClienteFone.TAMANHO_TELEFONE).trim();
linha.put("celularResponsavel", celularResponsavel);
String emailResponsavel = parser.obterDadoParser(30).trim();
linha.put("emailResponsavel", emailResponsavel);
String tipoLogradouroResponsavel = parser.obterDadoParser(2).trim();
linha.put("idTipoLogradouroResponsavel", tipoLogradouroResponsavel);
if (StringUtils.isNotEmpty(tipoLogradouroResponsavel) && StringUtils.isNumeric(tipoLogradouroResponsavel) && Integer.valueOf(tipoLogradouroResponsavel) > 0){
LogradouroTipo tipo = (LogradouroTipo) controladorUtil.obterPorId(LogradouroTipo.class, Integer.valueOf(tipoLogradouroResponsavel));
linha.put("dsTipoLogradouroResponsavel", tipo.getDescricao());
}
String logradouroResponsavel = parser.obterDadoParser(40).trim();
linha.put("logradouroResponsavel", logradouroResponsavel);
String numeroResponsavel = parser.obterDadoParser(5).trim();
linha.put("numeroResponsavel", numeroResponsavel);
String complementoResponsavel = parser.obterDadoParser(25).trim();
linha.put("complementoResponsavel", complementoResponsavel);
String bairroResponsavel = parser.obterDadoParser(20).trim();
linha.put("bairroResponsavel", bairroResponsavel);
String cepResponsavel = parser.obterDadoParser(8).trim();
linha.put("cepResponsavel", cepResponsavel);
String municipioResponsavel = parser.obterDadoParser(15).trim();
linha.put("municipioResponsavel", municipioResponsavel);
String latitude = parser.obterDadoParser(20).trim();
linha.put("latitude", latitude);
String longitude = parser.obterDadoParser(20).trim();
linha.put("longitude", longitude);
String data = parser.obterDadoParser(26).trim();
linha.put("data", data);
verificarImovel(atualizacao, imovelAtual);
}
}
private void verificarImovel(AtualizacaoCadastral atualizacao, AtualizacaoCadastralImovel imovelAtual) throws Exception {
ImovelControleAtualizacaoCadastral imovelControleAtualizacaoCadastral = repositorioImovel.pesquisarImovelControleAtualizacaoCadastral(
atualizacao.getImovelAtual().getMatricula());
if (imovelControleAtualizacaoCadastral != null
&& (imovelControleAtualizacaoCadastral.getSituacaoAtualizacaoCadastral().getId().intValue() == SituacaoAtualizacaoCadastral.APROVADO.intValue()
|| imovelControleAtualizacaoCadastral.getSituacaoAtualizacaoCadastral().getId().intValue() == SituacaoAtualizacaoCadastral.ATUALIZADO.intValue())){
atualizacao.getImovelAtual().addMensagemErro("Im�vel com situa��o 'APROVADO' ou 'ATUALIZADO'");
atualizacao.getImovelAtual().setImovelAprovado(true);
} else {
if(atualizacao.getImovelAtual().getMatricula() > 0) {
controladorAtualizacaoCadastral.apagarInformacoesRetornoImovelAtualizacaoCadastral(atualizacao.getImovelAtual().getMatricula());
}
}
}
}