package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.FiltroLocalidadeEspecificacaoUnidade; import gcom.atendimentopublico.registroatendimento.LocalidadeEspecificacaoUnidade; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.Localidade; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; 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; /** * [UC1091] Informar Associa��o de Localidade com Especifica��o e Unidade * * @author Hugo Leonardo * * @date 26/11/2010 */ public class ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeAction"); HttpSession sessao = httpServletRequest.getSession(false); // Form ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm form = (ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm) actionForm; ArrayList<LocalidadeEspecificacaoUnidade> colecaoLocalidadeEspecificacaoUnidade = new ArrayList(); if (httpServletRequest.getParameter("menu") != null && httpServletRequest.getParameter("menu").equals("sim")) { } // Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter String objetoConsulta = httpServletRequest.getParameter("objetoConsulta"); // Pega os codigos que o usuario digitou para a pesquisa direta da lota��o if(form.getIdLocalidade() != null && !form.getIdLocalidade().trim().equals("") && objetoConsulta != null && objetoConsulta.equals("1")){ sessao.removeAttribute("colecaoLocalidadeEspecificacaoUnidade"); this.pesquisarLocalidade(httpServletRequest, form, sessao); this.pesquisarLocalidadeEspecificacaoUnidade(form, sessao); } // Remover Itens do Contrato da Colecao if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("limpar") ) { sessao.removeAttribute("colecaoLocalidadeEspecificacaoUnidade"); } // Desfazer if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("desfazer") ) { sessao.removeAttribute("colecaoLocalidadeEspecificacaoUnidade"); this.pesquisarLocalidade(httpServletRequest, form, sessao); this.pesquisarLocalidadeEspecificacaoUnidade(form, sessao); } // Remover Itens do Contrato da Colecao if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("remover") ) { Integer indice = new Integer(httpServletRequest.getParameter("id")).intValue(); if(sessao.getAttribute("colecaoLocalidadeEspecificacaoUnidade") != null){ colecaoLocalidadeEspecificacaoUnidade = (ArrayList<LocalidadeEspecificacaoUnidade>) sessao.getAttribute("colecaoLocalidadeEspecificacaoUnidade"); if (colecaoLocalidadeEspecificacaoUnidade != null && !colecaoLocalidadeEspecificacaoUnidade.isEmpty() && colecaoLocalidadeEspecificacaoUnidade.size() > 1) { if (colecaoLocalidadeEspecificacaoUnidade.size() >= indice) { colecaoLocalidadeEspecificacaoUnidade.remove(indice-1); } if(colecaoLocalidadeEspecificacaoUnidade.isEmpty()){ sessao.removeAttribute("colecaoLocalidadeEspecificacaoUnidade"); }else{ // o sistema classifica a lista de LocalidadeEspecificacaoUnidade Collections.sort((List) colecaoLocalidadeEspecificacaoUnidade, new Comparator() { public int compare(Object a, Object b) { String codigo1 = ((LocalidadeEspecificacaoUnidade) a) .getComp_id().getSolicitacaoTipoEspecificacao().getDescricao(); String codigo2 = ((LocalidadeEspecificacaoUnidade) b) .getComp_id().getUnidadeOrganizacional().getDescricao(); if (codigo1 == null || codigo1.equals("")) { return -1; } else { return codigo1.compareTo(codigo2); } } }); sessao.setAttribute("colecaoLocalidadeEspecificacaoUnidade", colecaoLocalidadeEspecificacaoUnidade); } } } } form.setIdTipoEspecificacao(""); form.setIdTipoSolicitacao(""); form.setIdUnidadeAtendimento(""); form.setNomeUnidadeAtendimento(""); return retorno; } /** * Pesquisar Localidade * * @author Hugo Leonardo * @date 26/11/2010 */ private void pesquisarLocalidade(HttpServletRequest httpServletRequest, ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm form, HttpSession sessao) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID, form.getIdLocalidade())); Collection<Localidade> localidadePesquisada = Fachada.getInstancia().pesquisar( filtroLocalidade, Localidade.class.getName()); if (localidadePesquisada != null && !localidadePesquisada.isEmpty()) { Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(localidadePesquisada); form.setIdLocalidade("" + localidade.getId()); form.setNomeLocalidade( localidade.getDescricao()); sessao.setAttribute("localidadePesquisada", localidade); } else { form.setIdLocalidade(""); form.setNomeLocalidade("LOTA��O INEXISTENTE"); httpServletRequest.setAttribute("localidadeInexistente",true); httpServletRequest.setAttribute("nomeCampo", "idLocalidade"); } } /** * Pesquisar Collection LocalidadeEspecificacaoUnidade * * @author Hugo Leonardo * @date 30/11/2010 */ private void pesquisarLocalidadeEspecificacaoUnidade( ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm form, HttpSession sessao) { Collection<LocalidadeEspecificacaoUnidade> colecaoLocalidadeEspecificacaoUnidade = new ArrayList(); FiltroLocalidadeEspecificacaoUnidade filtroLocalidadeEspecificacaoUnidade = new FiltroLocalidadeEspecificacaoUnidade(); filtroLocalidadeEspecificacaoUnidade.adicionarParametro(new ParametroSimples( FiltroLocalidadeEspecificacaoUnidade.LOCALIDADE_ID, form.getIdLocalidade())); filtroLocalidadeEspecificacaoUnidade.adicionarCaminhoParaCarregamentoEntidade( FiltroLocalidadeEspecificacaoUnidade.SOLICITACAO_TIPO_ESPECIFICACAO); filtroLocalidadeEspecificacaoUnidade.adicionarCaminhoParaCarregamentoEntidade( FiltroLocalidadeEspecificacaoUnidade.UNIDADE_ORGANIZACIONAL); filtroLocalidadeEspecificacaoUnidade.setCampoOrderBy( FiltroLocalidadeEspecificacaoUnidade.SOLICITACAO_TIPO_ESPECIFICACAO_ID); filtroLocalidadeEspecificacaoUnidade.setCampoOrderBy( FiltroLocalidadeEspecificacaoUnidade.UNIDADE_ORGANIZACIONAL_ID); colecaoLocalidadeEspecificacaoUnidade = this.getFachada().pesquisar(filtroLocalidadeEspecificacaoUnidade, LocalidadeEspecificacaoUnidade.class.getName()); if(!Util.isVazioOrNulo(colecaoLocalidadeEspecificacaoUnidade)){ sessao.setAttribute("colecaoLocalidadeEspecificacaoUnidade", colecaoLocalidadeEspecificacaoUnidade); } } }