package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.FiltroLocalidadeEspecificacaoUnidade; import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.LocalidadeEspecificacaoUnidade; import gcom.atendimentopublico.registroatendimento.LocalidadeEspecificacaoUnidadePK; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.gui.ActionServletException; 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.Date; import java.util.Iterator; 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 29/11/2010 */ public class AssociarLocalidadeComEspecificacaoUnidadePopUpAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("associarLocalidadeComEspecificacaoUnidadePopUp"); HttpSession sessao = httpServletRequest.getSession(false); ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm form = (ExibirInserirAssociacaoLocalidadeComEspecificacaoUnidadeActionForm) actionForm; // Seta Objeto Solicitacao Acesso LocalidadeEspecificacaoUnidade localidadeEspecificacaoUnidade = null; LocalidadeEspecificacaoUnidadePK localidadeEspecificacaoUnidadePK = null; Localidade localidade = null; SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = null; UnidadeOrganizacional unidadeOrganizacional = null; ArrayList<LocalidadeEspecificacaoUnidade> colecaoLocalidadeEspecificacaoUnidade = new ArrayList(); if(!Util.verificarNaoVazio(form.getIdLocalidade())){ throw new ActionServletException("atencao.localidade_nao_informada"); } if(!Util.verificarNaoVazio(form.getIdTipoEspecificacao())){ throw new ActionServletException("atencao.solicitacao_tipo_especificacao_nao_informada"); } if(!Util.verificarNaoVazio(form.getIdUnidadeAtendimento())){ throw new ActionServletException("atencao.unidade_atendimento_nao_informada"); } // [FS0005] - Verificar exist�ncia da associa��o na tabela FiltroLocalidadeEspecificacaoUnidade filtroLocalidadeEspecificacaoUnidadePesquisada = new FiltroLocalidadeEspecificacaoUnidade(); // Localidade filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarParametro(new ParametroSimples( FiltroLocalidadeEspecificacaoUnidade.LOCALIDADE_ID, form.getIdLocalidade())); // Espeficica��o filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarParametro(new ParametroSimples( FiltroLocalidadeEspecificacaoUnidade.SOLICITACAO_TIPO_ESPECIFICACAO_ID, form.getIdTipoEspecificacao())); filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarCaminhoParaCarregamentoEntidade( FiltroLocalidadeEspecificacaoUnidade.LOCALIDADE); filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarCaminhoParaCarregamentoEntidade( FiltroLocalidadeEspecificacaoUnidade.SOLICITACAO_TIPO_ESPECIFICACAO); filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarCaminhoParaCarregamentoEntidade( FiltroLocalidadeEspecificacaoUnidade.UNIDADE_ORGANIZACIONAL); // Unidade Organizacional //filtroLocalidadeEspecificacaoUnidadePesquisada.adicionarParametro(new ParametroSimples( // FiltroLocalidadeEspecificacaoUnidade.UNIDADE_ORGANIZACIONAL_ID, form.getIdUnidadeAtendimento())); Collection colecaoLocalidadeEspecificacaoUnidadePesquisada = this.getFachada().pesquisar(filtroLocalidadeEspecificacaoUnidadePesquisada, LocalidadeEspecificacaoUnidade.class.getName()); if(!Util.isVazioOrNulo(colecaoLocalidadeEspecificacaoUnidadePesquisada)){ Iterator iterator = colecaoLocalidadeEspecificacaoUnidadePesquisada.iterator(); while (iterator.hasNext()) { localidadeEspecificacaoUnidade = (LocalidadeEspecificacaoUnidade) iterator.next(); if(localidadeEspecificacaoUnidade.getComp_id().getLocalidade().getId().toString().equals(form.getIdLocalidade()) && localidadeEspecificacaoUnidade.getComp_id().getSolicitacaoTipoEspecificacao().getId().toString().equals(form.getIdTipoEspecificacao())){ String[] srt = new String[3]; srt[0] = localidadeEspecificacaoUnidade.getComp_id().getLocalidade().getDescricao(); srt[1] = localidadeEspecificacaoUnidade.getComp_id().getSolicitacaoTipoEspecificacao().getDescricao(); srt[2] = localidadeEspecificacaoUnidade.getComp_id().getUnidadeOrganizacional().getDescricao(); form.setIdTipoEspecificacao(""); form.setIdTipoSolicitacao(""); form.setIdUnidadeAtendimento(""); form.setNomeUnidadeAtendimento(""); throw new ActionServletException("atencao.localidade_especificacao_unidade_ja_informado", srt); } } } if(sessao.getAttribute("colecaoLocalidadeEspecificacaoUnidade") == null){ FiltroLocalidadeEspecificacaoUnidade filtroLocalidadeEspecificacaoUnidade = new FiltroLocalidadeEspecificacaoUnidade(); filtroLocalidadeEspecificacaoUnidade.adicionarParametro(new ParametroSimples( FiltroLocalidadeEspecificacaoUnidade.LOCALIDADE_ID, form.getIdLocalidade())); filtroLocalidadeEspecificacaoUnidade.adicionarParametro(new ParametroSimples( FiltroLocalidadeEspecificacaoUnidade.SOLICITACAO_TIPO_ESPECIFICACAO_ID, form.getIdTipoEspecificacao())); 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 = (ArrayList<LocalidadeEspecificacaoUnidade>) this.getFachada().pesquisar(filtroLocalidadeEspecificacaoUnidade, LocalidadeEspecificacaoUnidade.class.getName()); }else{ colecaoLocalidadeEspecificacaoUnidade = (ArrayList<LocalidadeEspecificacaoUnidade>) sessao.getAttribute("colecaoLocalidadeEspecificacaoUnidade"); } // Localidade if(sessao.getAttribute("localidadePesquisada") != null){ localidade = (Localidade) sessao.getAttribute("localidadePesquisada"); }else{ FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID, form.getIdLocalidade())); Collection colecaoLocalidade = this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName()); localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade); } // Solicitacao Tipo Especificacao FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao(); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples( FiltroSolicitacaoTipoEspecificacao.ID, form.getIdTipoEspecificacao())); Collection colecaoSolicitacaoTipoEspecificacao = this.getFachada().pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName()); solicitacaoTipoEspecificacao = (SolicitacaoTipoEspecificacao) Util.retonarObjetoDeColecao(colecaoSolicitacaoTipoEspecificacao); // Unidade Organizacional FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, form.getIdUnidadeAtendimento())); Collection colecaoUnidadeOrganizacional = this.getFachada().pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeOrganizacional); localidadeEspecificacaoUnidadePK = new LocalidadeEspecificacaoUnidadePK( localidade, solicitacaoTipoEspecificacao, unidadeOrganizacional); localidadeEspecificacaoUnidade = new LocalidadeEspecificacaoUnidade( localidadeEspecificacaoUnidadePK, new Date()); // [FS0006] - Verificar exist�ncia da associa��o no grid. if(colecaoLocalidadeEspecificacaoUnidade.contains(localidadeEspecificacaoUnidade)){ String[] srt = new String[3]; srt[0] = localidadeEspecificacaoUnidade.getComp_id().getLocalidade().getDescricao(); srt[1] = localidadeEspecificacaoUnidade.getComp_id().getSolicitacaoTipoEspecificacao().getDescricao(); srt[2] = localidadeEspecificacaoUnidade.getComp_id().getUnidadeOrganizacional().getDescricao(); form.setIdTipoEspecificacao(""); form.setIdTipoSolicitacao(""); form.setIdUnidadeAtendimento(""); form.setNomeUnidadeAtendimento(""); throw new ActionServletException("atencao.localidade_especificacao_unidade_ja_informado", srt); } colecaoLocalidadeEspecificacaoUnidade.add(localidadeEspecificacaoUnidade); // 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); httpServletRequest.setAttribute("fecharPopup", "OK"); sessao.setAttribute("fecharPopup", "OK"); form.setIdTipoEspecificacao(""); form.setIdTipoSolicitacao(""); form.setIdUnidadeAtendimento(""); form.setNomeUnidadeAtendimento(""); return retorno; } }