package gcom.gui.faturamento; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.SetorComercial; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.FiltroRota; import gcom.micromedicao.Rota; import gcom.util.ConstantesSistema; import gcom.util.filtro.ParametroSimples; import java.util.Collection; 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; public class PesquisarSelecionarRotaAction extends GcomAction { Collection colecaoPesquisa; public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o retorno ActionForward retorno = actionMapping .findForward("exibirSelecionarRota"); //Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); //Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); //Formul�rio de pesquisa DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm; //Criando o filtro e o objeto de retorno da pesquisa de rota FiltroRota filtroRota = new FiltroRota(); filtroRota.setCampoOrderBy(FiltroRota.FATURAMENTO_GRUPO_ID, FiltroRota.GERENCIA_REGIONAL_ID, FiltroRota.LOCALIDADE_ID, FiltroRota.SETOR_COMERCIAL_CODIGO, FiltroRota.ID_ROTA); //filtroRota.adicionarCaminhoParaCarregamentoEntidade(FiltroRota.UNIDADE_NEGOCIO_NOME_ABREVIADO); filtroRota.adicionarCaminhoParaCarregamentoEntidade(FiltroRota.UNIDADE_NEGOCIO); //Objetos que ser�o retornados pelo hibernate. filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade.gerenciaRegional"); Collection colecaoRota = null; //Validando os campos do formulario boolean peloMenosUmParametroInformado = false; // Grupo de Faturamento if (pesquisarActionForm.get("idGrupoFaturamento") != null) { String grupoFaturamentoJSP = (String) pesquisarActionForm .get("idGrupoFaturamento"); if (!grupoFaturamentoJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.FATURAMENTO_GRUPO_ID, grupoFaturamentoJSP)); } } //Ger�ncia Regional if (pesquisarActionForm.get("idGerenciaRegional") != null) { String gerenciaRegionalJSP = (String) pesquisarActionForm .get("idGerenciaRegional"); if (!gerenciaRegionalJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.GERENCIA_REGIONAL_ID, gerenciaRegionalJSP)); } } // Localidade String localidadeJSP = null; if (pesquisarActionForm.get("idLocalidade") != null) { localidadeJSP = (String) pesquisarActionForm.get("idLocalidade"); if (!localidadeJSP.equalsIgnoreCase(String.valueOf(""))) { pesquisarLocalidade(localidadeJSP, fachada); peloMenosUmParametroInformado = true; filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.LOCALIDADE_ID, localidadeJSP)); } } // Setor comercial da localidade escolhida String setorComercialJSP = null; if (pesquisarActionForm.get("numeroSetorComercial") != null) { setorComercialJSP = (String) pesquisarActionForm .get("numeroSetorComercial"); if (!setorComercialJSP.equalsIgnoreCase(String.valueOf(""))) { if (localidadeJSP == null || localidadeJSP.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.localidade_nao_informada"); } pesquisarSetorComercial(localidadeJSP, setorComercialJSP, fachada); peloMenosUmParametroInformado = true; filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.SETOR_COMERCIAL_CODIGO, setorComercialJSP)); } } //Rota String rotaJSP = null; if (pesquisarActionForm.get("idRota") != null) { rotaJSP = (String) pesquisarActionForm.get("idRota"); if (!rotaJSP.equalsIgnoreCase(String.valueOf(""))) { if (setorComercialJSP == null || setorComercialJSP.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.setor_comercial_nao_informado"); } peloMenosUmParametroInformado = true; filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.CODIGO_ROTA, rotaJSP)); } } //Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } //Retorna a(s) rota(s) colecaoRota = fachada.pesquisar(filtroRota, Rota.class.getName()); if (colecaoRota == null || colecaoRota.isEmpty()) { //Nenhuma rota cadastrada de acordo com os par�metros passados throw new ActionServletException( "atencao.pesquisa.nenhumresultado", null, "rota"); } else if (colecaoRota.size() > ConstantesSistema.NUMERO_MAXIMO_REGISTROS_PESQUISA) { //O limite de registros foi ultrapassado throw new ActionServletException("atencao.pesquisa.muitosregistros"); } else { //Limpa o formul�rio pesquisarActionForm.set("idGrupoFaturamento", String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO)); pesquisarActionForm.set("idGerenciaRegional", String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO)); pesquisarActionForm.set("idLocalidade", ""); pesquisarActionForm.set("descricaoLocalidade", ""); pesquisarActionForm.set("numeroSetorComercial", ""); pesquisarActionForm.set("descricaoSetorComercial", ""); pesquisarActionForm.set("idRota", ""); pesquisarActionForm.set("descricaoRota", ""); sessao.setAttribute("colecaoRotasSelecionadas", colecaoRota); } httpServletRequest.setAttribute("nomeCampo", "botaoSelecionar"); //devolve o mapeamento de retorno return retorno; } /** * Pesquisa de localidade * * @param localidadeID * @param fachada */ private void pesquisarLocalidade(String localidadeID, Fachada fachada) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID, localidadeID)); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = fachada.pesquisar(filtroLocalidade, Localidade.class .getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.localidade_inexistente"); } } /** * Pesquisa de setor comercial * * @param localidadeID * @param setorComercialCD * @param fachada */ private void pesquisarSetorComercial(String localidadeID, String setorComercialCD, Fachada fachada) { FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID_LOCALIDADE, localidadeID)); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, setorComercialCD)); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ActionServletException( "atencao.processo.setorComercialNaoCadastrada"); } } }