package gcom.gui.micromedicao; import gcom.cadastro.cliente.FiltroEsferaPoder; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.SetorComercial; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.FiltroLeiturista; import gcom.micromedicao.Leiturista; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; 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; /** * Action que define o pr�-processamento da p�gina de inserir Roteiro Empresa * * @author Francisco Nascimento * @created 24/07/2007 */ public class ExibirInserirRoteiroEmpresaAction extends GcomAction { /** * Este caso de uso permite a inclus�o de um novo roteiro empresa * * [UC0038] Inserir Roteiro Empresa * * * @author Francisco Nascimento * @date 24/07/2007 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("inserirRoteiroEmpresa"); InserirRoteiroEmpresaActionForm inserirRoteiroEmpresaActionForm = (InserirRoteiroEmpresaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); //Pesquisando empresas if (sessao.getAttribute("colecaoEmpresa") == null){ FiltroEmpresa filtroEmpresa = new FiltroEmpresa(FiltroEsferaPoder.DESCRICAO); filtroEmpresa.setConsultaSemLimites(true); filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoEmpresa == null || colecaoEmpresa.isEmpty()){ throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null, "EMPRESA"); } sessao.setAttribute("colecaoEmpresa", colecaoEmpresa); } //Fim de pesquisando empresas //Pesquisando faturamento grupo if (sessao.getAttribute("colecaoFaturamentoGrupo") == null){ FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo( FiltroFaturamentoGrupo.DESCRICAO); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoFaturamentoGrupo = fachada.pesquisar( filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); sessao.setAttribute("colecaoFaturamentoGrupo", colecaoFaturamentoGrupo); } // Fim de pesquisa de Faturamento Grupo String carregarQuadras = httpServletRequest.getParameter("carregarQuadras"); String removerSetor = httpServletRequest.getParameter("removerSetor"); Collection colecaoSetorComercial = (Collection) sessao.getAttribute("colecaoSetorComercial"); String idLocalidade = inserirRoteiroEmpresaActionForm.getIdLocalidade(); // Pesquisando Setor Comercial if (idLocalidade != null && !idLocalidade.trim().equalsIgnoreCase("")) { FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); // Adiciona o id da localidade que est� no formul�rio para // compor a pesquisa. filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID_LOCALIDADE, idLocalidade)); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna cole��o de setor comercial colecaoSetorComercial = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoSetorComercial != null && !colecaoSetorComercial.isEmpty()) { sessao.setAttribute("colecaoSetorComercial", colecaoSetorComercial); sessao.setAttribute("colecaoSetoresSelecionados", new ArrayList()); } } if (colecaoSetorComercial == null || colecaoSetorComercial.isEmpty()) { sessao.setAttribute("colecaoSetorComercial", new ArrayList()); } // Preencher lista de setores selecionados String setoresSelecionados[] = inserirRoteiroEmpresaActionForm.getIdSetorComercialSelecionados(); Collection colecaoSetoresSelecionados = (Collection) sessao.getAttribute("colecaoSetoresSelecionados"); if (colecaoSetoresSelecionados == null){ colecaoSetoresSelecionados = new ArrayList(); sessao.setAttribute("colecaoSetoresSelecionados", colecaoSetoresSelecionados); } ArrayList quadras = (ArrayList) sessao.getAttribute("colecaoQuadras"); if (setoresSelecionados != null && setoresSelecionados.length > 0){ if (removerSetor != null && !removerSetor.equalsIgnoreCase("")){ for (int i = 0; i < setoresSelecionados.length; i++) { Iterator iter = colecaoSetoresSelecionados.iterator(); while (iter.hasNext()) { SetorComercial setor = (SetorComercial) iter.next(); if (setor.getId().intValue() == Integer.parseInt(setoresSelecionados[i])){ colecaoSetorComercial.add(setor); colecaoSetoresSelecionados.remove(setor); break; } } // situa��o onde est� sendo removido algum setor selecionados, // ent�o deve-se provocar o carregar de quadras para atualizar // isso s� ser� preciso se j� tiver sido carregadas as quadras if(quadras != null && quadras.size() > 0){ carregarQuadras = "Sim"; } } } else if (carregarQuadras != null && !carregarQuadras.equals("")){ //colecaoSetoresSelecionados = new ArrayList(); for (int i = 0; i < setoresSelecionados.length; i++) { Iterator iter = colecaoSetorComercial.iterator(); while (iter.hasNext()) { SetorComercial setor = (SetorComercial) iter.next(); if (setor.getId().intValue() == Integer.parseInt(setoresSelecionados[i])){ colecaoSetoresSelecionados.add(setor); colecaoSetorComercial.remove(setor); break; } } } } sessao.setAttribute("colecaoSetorComercial", colecaoSetorComercial); sessao.setAttribute("colecaoSetoresSelecionados", colecaoSetoresSelecionados); } if (carregarQuadras != null && !carregarQuadras.equalsIgnoreCase("")){ // Pesquisando quadras do setores comerciais selecionados String faturGrp = inserirRoteiroEmpresaActionForm.getFaturamentoGrupo(); quadras = new ArrayList(); if (faturGrp != null && !faturGrp.trim().equalsIgnoreCase("") && colecaoSetoresSelecionados.size() > 0 && idLocalidade != null && !idLocalidade.trim().equals("")){ int[] idsSetores = new int[colecaoSetoresSelecionados.size()]; int i = 0; for (Iterator iter = colecaoSetoresSelecionados.iterator(); iter.hasNext();) { SetorComercial setor = (SetorComercial) iter.next(); idsSetores[i++] = setor.getId().intValue(); } Integer intFaturGrupo = new Integer(faturGrp); // Retorna quadras quadras = (ArrayList) fachada.pesquisarQuadrasPorSetorComercialFaturamentoGrupo( Integer.parseInt(idLocalidade), idsSetores, intFaturGrupo); } sessao.setAttribute("colecaoQuadras", quadras); } if (quadras == null || quadras.isEmpty()){ sessao.setAttribute("colecaoQuadras", new ArrayList()); } if (httpServletRequest.getParameter("desfazer") != null && httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")) { //-------------- bt DESFAZER --------------- inserirRoteiroEmpresaActionForm.setIdLocalidade(""); inserirRoteiroEmpresaActionForm.setDescricaoLocalidade(""); inserirRoteiroEmpresaActionForm.setEmpresa(""); inserirRoteiroEmpresaActionForm.setFaturamentoGrupo(""); inserirRoteiroEmpresaActionForm.setIdLeiturista(""); inserirRoteiroEmpresaActionForm.setNomeLeiturista(""); inserirRoteiroEmpresaActionForm.setIdQuadraAdicionar(null); sessao.setAttribute("colecaoSetorComercial", new ArrayList()); sessao.setAttribute("colecaoSetoresSelecionados", new ArrayList()); sessao.setAttribute("colecaoQuadras", new ArrayList()); sessao.setAttribute("quadrasRemovidas", new ArrayList()); } //-------Parte que trata do c�digo quando o usu�rio tecla enter String idDigitadoEnterLocalidade = inserirRoteiroEmpresaActionForm.getIdLocalidade(); if (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterLocalidade)){ //Localidade n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLocalidade"); throw new ActionServletException("atencao.nao.numerico", null,"Localidade "); } else { verificaExistenciaCodLocalidade(idDigitadoEnterLocalidade,inserirRoteiroEmpresaActionForm, httpServletRequest,fachada); } String idDigitadoEnterLeiturista = inserirRoteiroEmpresaActionForm.getIdLeiturista(); if (idDigitadoEnterLeiturista != null && !idDigitadoEnterLeiturista.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterLeiturista)){ //Leiturista n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLeiturista"); throw new ActionServletException("atencao.nao.numerico", null,"Leiturista "); } else { verificaExistenciaCodLeiturista(idDigitadoEnterLeiturista,inserirRoteiroEmpresaActionForm, httpServletRequest,fachada); } //-------Fim de parte que trata do c�digo quando o usu�rio tecla enter sessao.removeAttribute("caminhoRetornoTelaPesquisa"); // DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS sessao.setAttribute("UseCase", "INSERIRROTEIROEMPRESA"); return retorno; } private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade, InserirRoteiroEmpresaActionForm inserirRoteiroEmpresaActionForm, HttpServletRequest httpServletRequest, Fachada fachada) { //Verifica se o c�digo da Localidade foi digitado if (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.trim().equals("") && Integer.parseInt(idDigitadoEnterLocalidade) > 0) { //Recupera a localidade informada pelo usu�rio Localidade localidadeEncontrada = fachada.pesquisarLocalidadeDigitada(new Integer(idDigitadoEnterLocalidade)); //Caso a localidade informada pelo usu�rio esteja cadastrada no sistema //Seta os dados da localidade no form //Caso contr�rio seta as informa��es da localidade para vazio //e indica ao usu�rio que a localidade n�o existe if (localidadeEncontrada != null) { //a localidade foi encontrada inserirRoteiroEmpresaActionForm.setIdLocalidade("" + (localidadeEncontrada.getId())); inserirRoteiroEmpresaActionForm .setDescricaoLocalidade(localidadeEncontrada.getDescricao()); httpServletRequest.setAttribute("idLocalidadeNaoEncontrada", "true"); httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); } else { //a localidade n�o foi encontrada inserirRoteiroEmpresaActionForm.setIdLocalidade(""); httpServletRequest.setAttribute("idLocalidadeNaoEncontrada", "exception"); inserirRoteiroEmpresaActionForm .setDescricaoLocalidade("LOCALIDADE INEXISTENTE"); } } } private void verificaExistenciaCodLeiturista(String idDigitadoEnterLeiturista, InserirRoteiroEmpresaActionForm inserirRoteiroEmpresaActionForm, HttpServletRequest httpServletRequest, Fachada fachada) { //Verifica se o c�digo do Leiturista foi digitado if (idDigitadoEnterLeiturista != null && !idDigitadoEnterLeiturista.trim().equals("") && Integer.parseInt(idDigitadoEnterLeiturista) > 0) { //Recupera o leiturista informado pelo usu�rio FiltroLeiturista filtroLeiturista = new FiltroLeiturista(); filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO); filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE); filtroLeiturista.adicionarParametro(new ParametroSimples( FiltroLeiturista.ID, idDigitadoEnterLeiturista)); filtroLeiturista.adicionarParametro(new ParametroSimples( FiltroLeiturista.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection leituristaEncontrado = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName()); //Caso o leiturista informado pelo usu�rio esteja cadastrado no sistema //Seta os dados do leiturista no form //Caso contr�rio seta as informa��es de leiturista para vazio //e indica ao usu�rio que o leiturista n�o existe if (leituristaEncontrado != null && leituristaEncontrado.size() > 0) { //leiturista foi encontrado Leiturista leiturista = (Leiturista) ((List) leituristaEncontrado).get(0); inserirRoteiroEmpresaActionForm.setIdLeiturista("" + leiturista.getId()); if (leiturista.getFuncionario() != null){ inserirRoteiroEmpresaActionForm.setNomeLeiturista(leiturista.getFuncionario().getNome()); } else if (leiturista.getCliente() != null){ inserirRoteiroEmpresaActionForm.setNomeLeiturista(leiturista.getCliente().getNome()); } httpServletRequest.setAttribute("idLeituristaEncontrado","true"); httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); } else { //o leiturista n�o foi encontrado inserirRoteiroEmpresaActionForm.setIdLeiturista(""); inserirRoteiroEmpresaActionForm.setNomeLeiturista("LEITURISTA INEXISTENTE"); httpServletRequest.setAttribute("nomeCampo","idLeiturista"); } } } }