package gcom.gui.cadastro.cliente; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteEndereco; import gcom.cadastro.cliente.FiltroClienteEndereco; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.FiltroUsuarioPemissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioPermissaoEspecial; import gcom.util.ConstantesSistema; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.DynaValidatorForm; /** * Description of the Class * * @author Rodrigo */ public class AtualizarClienteEnderecoAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // localiza o action no objeto actionmapping ActionForward retorno = actionMapping .findForward("gerenciadorProcesso"); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); Fachada fachada = Fachada.getInstancia(); Collection colecaoEnderecos = (Collection) sessao .getAttribute("colecaoEnderecos"); if (colecaoEnderecos != null && !colecaoEnderecos.isEmpty()) { DynaValidatorForm clienteActionForm = (DynaValidatorForm) actionForm; // Radio que indica qual o endereco de correspondencia Long enderecoCorrespondenciaSelecionado = (Long) clienteActionForm .get("enderecoCorrespondenciaSelecao"); String nome = clienteActionForm.get("nome").toString(); // Se o end. de correspondencia for escolhido ent�o o objeto deve // ser alterado if (enderecoCorrespondenciaSelecionado != null) { Iterator iterator = colecaoEnderecos.iterator(); // Varre a colec�o para descobrir o objeto que tem o endere�o de // correspondencia while (iterator.hasNext()) { ClienteEndereco clienteEndereco = (ClienteEndereco) iterator .next(); if (obterTimestampIdObjeto(clienteEndereco) == enderecoCorrespondenciaSelecionado .longValue()) { // Indica que o objeto possui o endere�o de // correspondencia clienteEndereco .setIndicadorEnderecoCorrespondencia(ConstantesSistema.INDICADOR_ENDERECO_CORRESPONDENCIA); } else { // Indica que o objeto n�o possui o endere�o de // correspondencia clienteEndereco .setIndicadorEnderecoCorrespondencia(ConstantesSistema.INDICADOR_NAO_ENDERECO_CORRESPONDENCIA); } } } else { // Nenhum endere�o foi indicado como endere�o de correspondencia throw new ActionServletException( "atencao.endereco_correspondencia.nao_selecionado"); } /** * Autor: Mariana Victor * Data: 28/12/2010 * RM_3320 - [FS0010] Verificar Duplicidade de cliente */ if (this.getSistemaParametro().getIndicadorDuplicidadeCliente().toString() .equals(ConstantesSistema.SIM.toString())) { FiltroUsuarioPemissaoEspecial filtroUsuarioPemissaoEspecial = new FiltroUsuarioPemissaoEspecial(); filtroUsuarioPemissaoEspecial.adicionarParametro(new ParametroSimples(FiltroUsuarioPemissaoEspecial.USUARIO_ID, usuario.getId())); filtroUsuarioPemissaoEspecial.adicionarParametro(new ParametroSimples(FiltroUsuarioPemissaoEspecial.PERMISSAO_ESPECIAL_ID, PermissaoEspecial.INSERIR_CLIENTE_COM_MESMO_NOME_E_ENDERECO)); Collection colecaoUsuarioPermisao = fachada.pesquisar(filtroUsuarioPemissaoEspecial, UsuarioPermissaoEspecial.class.getName()); if (colecaoUsuarioPermisao == null || colecaoUsuarioPermisao.isEmpty()) { FiltroClienteEndereco filtroClienteEndereco = new FiltroClienteEndereco(); filtroClienteEndereco.adicionarParametro(new ParametroSimples(FiltroClienteEndereco.NOME, nome.toUpperCase())); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("cliente"); Collection<ClienteEndereco> colecaoClienteEndereco = fachada.pesquisar(filtroClienteEndereco, ClienteEndereco.class.getName()); if (colecaoClienteEndereco != null && !colecaoClienteEndereco.isEmpty()){ Iterator iterator = colecaoClienteEndereco.iterator(); // Pega o cliente que foi selecionado para atualiza��o Cliente clienteAtualizacao = (Cliente) sessao .getAttribute("clienteAtualizacao"); while (iterator.hasNext()) { ClienteEndereco clienteEnderecoIterator = (ClienteEndereco) iterator.next(); Iterator iteratorEnderecos = colecaoEnderecos.iterator(); while (iteratorEnderecos.hasNext()) { ClienteEndereco clienteEndereco = (ClienteEndereco) iteratorEnderecos .next(); if (clienteEndereco.getEnderecoFormatado().equals( clienteEnderecoIterator.getEnderecoFormatado()) && !clienteAtualizacao.getId().equals( clienteEnderecoIterator.getCliente().getId())) { throw new ActionServletException("atencao.duplicidade.cliente", null, "Cliente"); } } } } } } } else { // O usu�rio deve preencher pelo menos um endere�o e marc�-lo como // endere�o de correspond�ncia // Mostra o erro throw new ActionServletException( "atencao.endereco_correspondencia.nao_selecionado"); } return retorno; } }