package gcom.cadastro.cliente; import gcom.cadastro.atualizacaocadastral.command.AtualizacaoCadastralImovel; import gcom.cadastro.geografico.FiltroUnidadeFederacao; import gcom.cadastro.geografico.UnidadeFederacao; import gcom.fachada.Fachada; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import org.apache.commons.lang.StringUtils; public abstract class ClienteBuilder { protected AtualizacaoCadastralImovel atualizacaoCadastralImovel; protected IClienteAtualizacaoCadastral clienteTxt = null; public final static String USUARIO = "Usuario"; public final static String PROPRIETARIO = "Proprietario"; public final static String RESPONSAVEL = "Responsavel"; public ClienteBuilder(AtualizacaoCadastralImovel atualizacaoCadastralImovel) { this.atualizacaoCadastralImovel = atualizacaoCadastralImovel; clienteTxt = new ClienteAtualizacaoCadastral(); } protected void buildCliente(String tipoCliente, Short clienteRelacaoTipo) { clienteTxt.setNome(atualizacaoCadastralImovel.getLinhaCliente("nome" + tipoCliente)); String cnpjCpf = atualizacaoCadastralImovel.getLinhaCliente("cnpjCpf" + tipoCliente); if (cnpjCpf.length() == 11) { clienteTxt.setCpf(cnpjCpf); } else if (cnpjCpf.length() == 14) { clienteTxt.setCnpj(cnpjCpf); } clienteTxt.setRg(atualizacaoCadastralImovel.getLinhaCliente("rg" + tipoCliente)); clienteTxt.setUnidadeFederacao(getUnidadeFederecao(atualizacaoCadastralImovel.getLinhaCliente("ufRg" + tipoCliente))); clienteTxt.setDsUFSiglaOrgaoExpedidorRg(atualizacaoCadastralImovel.getLinhaCliente("ufRg" + tipoCliente)); String campo = atualizacaoCadastralImovel.getLinhaCliente("sexo" + tipoCliente); if (StringUtils.isNotEmpty(campo) && StringUtils.isNumeric(campo)) { int idSexo = Integer.parseInt(campo); if (idSexo == 1 || idSexo == 2) { PessoaSexo sexo = new PessoaSexo(idSexo); clienteTxt.setPessoaSexo(sexo); } } Integer idCliente = new Integer(atualizacaoCadastralImovel.getLinhaCliente("matricula" + tipoCliente)); campo = atualizacaoCadastralImovel.getLinhaCliente("tipoPessoa" + tipoCliente); if (StringUtils.isNotEmpty(campo) && StringUtils.isNumeric(campo)) { clienteTxt.setIdClienteTipo(getIdClienteTipo(new Short(campo), idCliente)); } clienteTxt.setEmail(atualizacaoCadastralImovel.getLinhaCliente("email" + tipoCliente)); clienteTxt.setIdCliente(idCliente); clienteTxt.setIdClienteRelacaoTipo(new Integer(clienteRelacaoTipo)); campo = atualizacaoCadastralImovel.getLinhaCliente("matriculaImovelCliente"); if (StringUtils.isNotEmpty(campo) && StringUtils.isNumeric(campo)) { clienteTxt.setIdImovel(Integer.parseInt(campo)); } } private UnidadeFederacao getUnidadeFederecao(String uf) { UnidadeFederacao retorno = null; FiltroUnidadeFederacao filtroUF = new FiltroUnidadeFederacao(); filtroUF.adicionarParametro(new ParametroSimples(FiltroUnidadeFederacao.SIGLA, uf)); Collection pesquisa = Fachada.getInstancia().pesquisar(filtroUF, UnidadeFederacao.class.getName()); if (pesquisa != null && !pesquisa.isEmpty()) { retorno = (UnidadeFederacao) Util.retonarObjetoDeColecao(pesquisa); } return retorno; } private Integer getIdClienteTipo(Short tipoPessoa, Integer idCliente) { Integer retorno = null; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, idCliente)); filtroCliente.adicionarCaminhoParaCarregamentoEntidade(FiltroCliente.CLIENTE_TIPO); Collection pesquisaCliente = Fachada.getInstancia().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = null; if (pesquisaCliente != null && !pesquisaCliente.isEmpty()) { cliente = (Cliente) Util.retonarObjetoDeColecao(pesquisaCliente); } if (cliente != null) { Short indicadorFisicoJuridico = cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica(); if (indicadorFisicoJuridico.equals(tipoPessoa)) { retorno = cliente.getClienteTipo().getId(); } else { retorno = pesquisarClienteTipo(tipoPessoa); } } else { retorno = pesquisarClienteTipo(tipoPessoa); } return retorno; } private Integer pesquisarClienteTipo(Short tipoPessoa) { FiltroClienteTipo filtroClienteTipo = new FiltroClienteTipo(); if (tipoPessoa.shortValue() == ClienteTipo.INDICADOR_PESSOA_JURIDICA.shortValue()) { filtroClienteTipo.adicionarParametro(new ParametroSimples(FiltroClienteTipo.INDICADOR_PESSOA_FISICA_JURIDICA, ClienteTipo.INDICADOR_PESSOA_JURIDICA)); filtroClienteTipo.adicionarParametro(new ParametroSimples(FiltroClienteTipo.DESCRICAO, "NAO INFORMADO")); } else { filtroClienteTipo.adicionarParametro(new ParametroSimples(FiltroClienteTipo.INDICADOR_PESSOA_FISICA_JURIDICA, ClienteTipo.INDICADOR_PESSOA_FISICA)); filtroClienteTipo.adicionarParametro(new ParametroSimples(FiltroClienteTipo.DESCRICAO, "PARTICULARES")); } ClienteTipo clienteTipo = null; Collection pesquisaClienteTipo = Fachada.getInstancia().pesquisar(filtroClienteTipo, ClienteTipo.class.getName()); if (pesquisaClienteTipo != null && !pesquisaClienteTipo.isEmpty()) { clienteTipo = (ClienteTipo) Util.retonarObjetoDeColecao(pesquisaClienteTipo); } return clienteTipo.getId(); } public abstract IClienteAtualizacaoCadastral buildCliente(Short clienteRelacaoTipo); }