package gcom.gui.cadastro.localidade; import gcom.cadastro.geografico.FiltroMunicipio; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.FiltroQuadra; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.Quadra; import gcom.cadastro.localidade.SetorComercial; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.micromedicao.FiltroRota; import gcom.micromedicao.Rota; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoEfetuada; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.ConstantesSistema; import gcom.util.ErroRepositorioException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.rmi.RemoteException; 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; public class AtualizarSetorComercialAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); //Obt�m a sess�o HttpSession sessao = this.getSessao(httpServletRequest); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); PesquisarAtualizarSetorComercialActionForm form = (PesquisarAtualizarSetorComercialActionForm) actionForm; // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_SETOR_COMERCIAL_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_SETOR_COMERCIAL_ATUALIZAR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); //------------ REGISTRAR TRANSA��O ---------------- String setorComercialID = form.getSetorComercialID(); String localidadeID = form.getLocalidadeID(); String setorComercialCD = form.getSetorComercialCD(); String setorComercialNome = form.getSetorComercialNome(); String municipioID = form.getMunicipioID(); String indicadorUso = form.getIndicadorUso(); String indicadorSetorAlternativo = form.getIndicadorSetorAlternativo(); if (setorComercialID == null || setorComercialID.equalsIgnoreCase("")) { throw new ActionServletException("atencao.setor_comercial_nao_informado"); } else if (localidadeID == null || localidadeID.equalsIgnoreCase("")) { throw new ActionServletException("atencao.localidade_nao_informada"); } else if (setorComercialCD == null || setorComercialCD.equalsIgnoreCase("")) { throw new ActionServletException("atencao.codigo_setor_comercial_nao_informado"); } else if (municipioID == null || municipioID.equalsIgnoreCase("")) { throw new ActionServletException("atencao.municipio_nao_informado"); } else if (setorComercialNome == null || setorComercialNome.equalsIgnoreCase("")) { throw new ActionServletException("atencao.nome_setor_comercial_nao_informado"); } else if (indicadorUso == null || indicadorUso.equalsIgnoreCase("")) { throw new ActionServletException("atencao.indicador_uso_nao_informado"); } else if (indicadorSetorAlternativo == null || indicadorSetorAlternativo.equalsIgnoreCase("")) { throw new ActionServletException("atencao.setor_alternativo_nao_informado"); } else { //Verificar existencia de Quadra associada FiltroQuadra filtroQuadra = new FiltroQuadra(); filtroQuadra.adicionarParametro( new ParametroSimples( FiltroQuadra.ID_SETORCOMERCIAL, setorComercialID)); Collection setorComercialAssociadoQuadra = this.getFachada() .pesquisar( filtroQuadra, Quadra.class.getName() ); if ( setorComercialAssociadoQuadra != null && !setorComercialAssociadoQuadra.isEmpty() && new Short(indicadorSetorAlternativo).equals(ConstantesSistema.INDICADOR_USO_ATIVO ) ) { throw new ActionServletException("atencao.setor_associado_quadra_nao_alternativo"); } //Verificar a existencia de Rota associada FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro( new ParametroSimples ( FiltroRota.SETOR_COMERCIAL_ID, setorComercialID)); Collection setorComercialAssociadoRota = this.getFachada().pesquisar( filtroRota, Rota.class.getName() ); Iterator iteratorComercialAssociadoRota = setorComercialAssociadoRota.iterator(); Rota rota = null; while ( iteratorComercialAssociadoRota.hasNext() ) { rota = (Rota) iteratorComercialAssociadoRota.next(); if ( new Short(indicadorSetorAlternativo).equals( ConstantesSistema.INDICADOR_USO_DESATIVO )&& rota.getIndicadorRotaAlternativa().equals( ConstantesSistema.INDICADOR_USO_ATIVO ) ) { throw new ActionServletException("atencao.setor_associado_rota_alternativa"); } } //Validando os dados informados pelo usu�rio. Municipio municipioNovo = (Municipio) pesquisarObjeto(municipioID,3); if (municipioNovo == null) { throw new ActionServletException( "atencao.pesquisa.municipio_inexistente"); } Short indicadorUsoNovo = new Short(indicadorUso); SetorComercial setorComercialAtual = (SetorComercial) sessao.getAttribute("setorComercialManter"); if (setorComercialAtual == null) { //Setor comercial nao encontrado throw new ActionServletException("atencao.processo.setorComercialNaoCadastrada"); } setorComercialAtual.setDescricao(setorComercialNome); setorComercialAtual.setMunicipio(municipioNovo); setorComercialAtual.setIndicadorUso(indicadorUsoNovo); setorComercialAtual.setIndicadorBloqueio(new Short(form.getIndicadorBloqueio())); setorComercialAtual.setIndicadorSetorAlternativo(new Short(indicadorSetorAlternativo)); // ------------ REGISTRAR TRANSA��O ---------------- setorComercialAtual.setOperacaoEfetuada(operacaoEfetuada); setorComercialAtual.adicionarUsuario(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(setorComercialAtual); //------------ REGISTRAR TRANSA��O ---------------- Collection colecaoFontes = (Collection) this.getSessao(httpServletRequest).getAttribute("colecaoFonteCaptacao"); this.getFachada().atualizarSetorComercial(setorComercialAtual,colecaoFontes); FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, localidadeID)); Collection colecaoLocalidade = this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName()); Localidade localidade = (Localidade) colecaoLocalidade.iterator().next(); montarPaginaSucesso(httpServletRequest, "Setor Comercial de c�digo " + setorComercialAtual.getCodigo() + " da localidade "+ localidade.getId() + " - " + localidade.getDescricao().toUpperCase() +" atualizado com sucesso.", " Realizar outra Manuten��o de Setor Comercial", "exibirFiltrarSetorComercialAction.do?menu=sim"); } //devolve o mapeamento de retorno return retorno; } /** * * @param objetoPesquisa * @param objetoPai * @param tipoObjeto * @return * @throws RemoteException * @throws ErroRepositorioException */ private Object pesquisarObjeto(String objetoPesquisa, int tipoObjeto) { Object retorno = null; Collection colecaoPesquisa = null; switch (tipoObjeto) { //Setor Comercial case 2: FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID, objetoPesquisa)); colecaoPesquisa = this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { retorno = Util.retonarObjetoDeColecao(colecaoPesquisa); } break; case 3: FiltroMunicipio filtroMunicipio = new FiltroMunicipio(); filtroMunicipio.adicionarParametro(new ParametroSimples( FiltroMunicipio.ID, objetoPesquisa)); filtroMunicipio.adicionarParametro(new ParametroSimples( FiltroMunicipio.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getFachada().pesquisar(filtroMunicipio, Municipio.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { retorno = Util.retonarObjetoDeColecao(colecaoPesquisa); } break; default: break; } return retorno; } }