package gcom.gui.micromedicao.hidrometro; 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.micromedicao.FiltrarHidrometroHelper; import gcom.micromedicao.hidrometro.FiltroHidrometro; import gcom.micromedicao.hidrometro.FiltroHidrometroSituacao; import gcom.micromedicao.hidrometro.HidrometroSituacao; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ComparacaoTexto; import gcom.util.filtro.ParametroSimples; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; 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; /** * < <Descri��o da Classe>> * * @author Administrador * @created 5 de Setembro de 2005 */ public class FiltrarHidrometroAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) actionForm; ActionForward retorno = null; // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); String tela = (String) sessao.getAttribute("tela"); if (tela != null && !tela.equals("")) { if (tela.equals("movimentarHidrometro")) { retorno = actionMapping.findForward("movimentarHidrometro"); } } else { retorno = actionMapping.findForward("retornarFiltroHidrometro"); } // Recupera os par�metros do form String numeroHidrometro = hidrometroActionForm.getNumeroHidrometro(); String dataAquisicao = hidrometroActionForm.getDataAquisicao(); String anoFabricacao = hidrometroActionForm.getAnoFabricacao(); String indicadorMacromedidor = hidrometroActionForm.getIndicadorMacromedidor(); String idHidrometroClasseMetrologica = hidrometroActionForm.getIdHidrometroClasseMetrologica(); String idHidrometroMarca = hidrometroActionForm.getIdHidrometroMarca(); String idHidrometroDiametro = hidrometroActionForm.getIdHidrometroDiametro(); String idHidrometroCapacidade = hidrometroActionForm.getIdHidrometroCapacidade(); String idHidrometroTipo = hidrometroActionForm.getIdHidrometroTipo(); String idHidrometroSituacao = hidrometroActionForm.getIdHidrometroSituacao(); String idLocalArmazenagem = hidrometroActionForm.getIdLocalArmazenagem(); String fixo = hidrometroActionForm.getFixo(); String faixaInicial = hidrometroActionForm.getFaixaInicial(); String faixaFinal = hidrometroActionForm.getFaixaFinal(); String idHidrometroRelojoaria = hidrometroActionForm.getIdHidrometroRelojoaria(); String idLocalidade = hidrometroActionForm.getIdLocalidade(); String idSetorComercial = hidrometroActionForm.getIdSetorComercial(); String codigoSetorComercial = hidrometroActionForm.getCodigoSetorComercial(); String idQuadra = hidrometroActionForm.getIdQuadra(); String numeroQuadra = hidrometroActionForm.getNumeroQuadra(); String vazaoTransicao = hidrometroActionForm.getVazaoTransicao(); String vazaoNominal = hidrometroActionForm.getVazaoNominal(); String vazaoMinima = hidrometroActionForm.getVazaoMinima(); String notaFiscal = hidrometroActionForm.getNotaFiscal(); String tempoGarantiaAnos = hidrometroActionForm.getTempoGarantiaAnos(); FiltroHidrometro filtroHidrometro = new FiltroHidrometro(FiltroHidrometro.NUMERO_HIDROMETRO); boolean peloMenosUmParametroInformado = false; if (idHidrometroSituacao != null && !idHidrometroSituacao.equals("-1") ) { FiltroHidrometroSituacao filtroHidrometroSituacao = new FiltroHidrometroSituacao(); filtroHidrometroSituacao.adicionarParametro( new ParametroSimples( FiltroHidrometroSituacao.ID, hidrometroActionForm.getIdHidrometroSituacao() ) ); Collection colecaoHidrometroSituacao = this.getFachada().pesquisar(filtroHidrometroSituacao, HidrometroSituacao.class.getName() ); Object hidrometroSituacao = Util.retonarObjetoDeColecao(colecaoHidrometroSituacao); HidrometroSituacao situacao = (HidrometroSituacao) hidrometroSituacao; if (situacao.getDescricao().equals("INSTALADO") && idLocalidade.equals("")) { throw new ActionServletException("atencao.required", null, "Localidade"); } } // Caso o fixo, a faixa inicial e faixa final seja diferente de null // ent�o ignora os outros parametros e faz a pesquisa do filtro por // esses 3 par�metros if (fixo != null && !fixo.equalsIgnoreCase("")) { if (faixaInicial != null && !faixaInicial.equalsIgnoreCase("")) { sessao.setAttribute("faixaInicial", faixaInicial); } if (faixaFinal != null && !faixaFinal.equalsIgnoreCase("")) { sessao.setAttribute("faixaFinal", faixaFinal); } sessao.setAttribute("fixo", fixo); sessao.removeAttribute("instalado"); peloMenosUmParametroInformado = true; } else if( hidrometroActionForm.getIdLocalidade() != null && !hidrometroActionForm.getIdLocalidade().equals("") ){ sessao.setAttribute("instalado", true); FiltrarHidrometroHelper helper = new FiltrarHidrometroHelper(); // Insere os par�metros informados no filtro if (numeroHidrometro != null && !numeroHidrometro.trim().equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; helper.setNumeroHidrometro(numeroHidrometro); } Date dataAquisicaoDate = Util.converteStringParaDate(dataAquisicao); Calendar dataAtual = new GregorianCalendar(); if (dataAquisicao != null && !dataAquisicao.trim().equalsIgnoreCase("")) { // caso a data de aquisi��o seja menor que a data atual if (dataAquisicaoDate.after(new Date())) { throw new ActionServletException("atencao.data.aquisicao.nao.superior.data.corrente"); } peloMenosUmParametroInformado = true; helper.setDataAquisicao(dataAquisicaoDate); } // if (anoFabricacao != null && !anoFabricacao.trim().equalsIgnoreCase("")) { if (anoFabricacao != null && !anoFabricacao.equals("")) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.ANO_FABRICACAO, anoFabricacao)); helper.setAnoFabricacao(anoFabricacao); int anoAtual = dataAtual.get(Calendar.YEAR); Integer anoFabricacaoInteger = new Integer(anoFabricacao); // caso o ano de fabrica��o seja maior que o atual if (anoFabricacaoInteger > anoAtual) { throw new ActionServletException("atencao.ano.fabricacao.nao.superior.data.corrente"); } if(dataAquisicaoDate != null){ Integer anoDataAquisicao = Util.getAno(dataAquisicaoDate); // caso a data de aquisi��o seja menor que o ano fabrica��o if (anoDataAquisicao < anoFabricacaoInteger) { throw new ActionServletException("atencao.ano.fabricacao.menor.ano.aquisicao"); } } } if (indicadorMacromedidor != null && !indicadorMacromedidor.trim().equalsIgnoreCase("") && !indicadorMacromedidor.trim().equalsIgnoreCase("-1")) { helper.setIndicadorMacromedidor(indicadorMacromedidor); } if (idHidrometroClasseMetrologica != null && Integer.parseInt(idHidrometroClasseMetrologica) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroClasseMetrologica(idHidrometroClasseMetrologica); } if (idHidrometroMarca != null && Integer.parseInt(idHidrometroMarca) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroMarca(idHidrometroMarca); } if (idHidrometroDiametro != null && Integer.parseInt(idHidrometroDiametro) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroDiametro(idHidrometroDiametro); } if (idHidrometroCapacidade != null && Integer.parseInt(idHidrometroCapacidade) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroCapacidade(idHidrometroCapacidade); } if (idHidrometroTipo != null && Integer.parseInt(idHidrometroTipo) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroTipo(idHidrometroTipo); } if (idHidrometroRelojoaria != null && Integer.parseInt(idHidrometroRelojoaria) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroRelojoaria(idHidrometroRelojoaria); } if (idHidrometroSituacao != null && Integer.parseInt(idHidrometroSituacao) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; helper.setIdHidrometroSituacao(idHidrometroSituacao); } if (idLocalArmazenagem != null && !idLocalArmazenagem.equals("")) { peloMenosUmParametroInformado = true; helper.setIdLocalArmazenagem(idLocalArmazenagem); } if (idLocalidade != null && !idLocalidade.equals("")) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro( new ParametroSimples( FiltroLocalidade.ID, hidrometroActionForm.getIdLocalidade())); filtroLocalidade.adicionarParametro( new ParametroSimples( FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna localidade Collection colecaoPesquisa = this.getFachada().pesquisar(filtroLocalidade,Localidade.class.getName()); if(colecaoPesquisa != null && !colecaoPesquisa.isEmpty()){ Localidade localidade =(Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); idLocalidade = localidade.getId().toString(); peloMenosUmParametroInformado = true; helper.setIdLocalidade(idLocalidade); helper.setNomeLocalidade(localidade.getDescricao()); }else{ throw new ActionServletException("atencao.localidade.inexistente"); } } if (codigoSetorComercial != null && !codigoSetorComercial.equals("")) { 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, hidrometroActionForm.getIdLocalidade())); // Adiciona o c�digo do setor comercial que esta no formul�rio // para compor a pesquisa. filtroSetorComercial.adicionarParametro( new ParametroSimples( FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, hidrometroActionForm.getCodigoSetorComercial())); filtroSetorComercial.adicionarParametro( new ParametroSimples( FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna setorComercial Collection colecaoPesquisa = this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if(colecaoPesquisa != null && !colecaoPesquisa.isEmpty()){ SetorComercial setorComercial =(SetorComercial) Util.retonarObjetoDeColecao(colecaoPesquisa); idSetorComercial = setorComercial.getId().toString(); peloMenosUmParametroInformado = true; helper.setIdSetorComercial(idSetorComercial); helper.setCodigoSetorComercial(""+setorComercial.getCodigo()); }else{ throw new ActionServletException("atencao.setor_comercial.inexistente"); } } if ( vazaoTransicao != null && !vazaoTransicao.equals("") ) { helper.setVazaoTransicao( vazaoTransicao ); } if ( vazaoNominal != null && !vazaoNominal.equals("") ) { helper.setVazaoNominal( vazaoNominal ); } if ( vazaoMinima != null && !vazaoMinima.equals("") ) { helper.setVazaoMinima( vazaoMinima ); } if ( notaFiscal != null && !notaFiscal.equals("") ) { helper.setNotaFiscal( notaFiscal ); } if ( tempoGarantiaAnos != null && !tempoGarantiaAnos.equals("") ) { helper.setTempoGarantiaAnos( tempoGarantiaAnos ); } if (numeroQuadra != null && !numeroQuadra.equals("")) { FiltroQuadra filtroQuadra = new FiltroQuadra(); // Adiciona o id do setor comercial que est� no formul�rio para // compor a pesquisa. filtroQuadra.adicionarParametro( new ParametroSimples( FiltroQuadra.ID_SETORCOMERCIAL, hidrometroActionForm.getIdSetorComercial())); // Adiciona o n�mero da quadra que esta no formul�rio para // compor a pesquisa. filtroQuadra.adicionarParametro( new ParametroSimples( FiltroQuadra.NUMERO_QUADRA, hidrometroActionForm.getNumeroQuadra())); filtroQuadra.adicionarParametro( new ParametroSimples( FiltroQuadra.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna quadra Collection colecaoPesquisa = this.getFachada().pesquisar(filtroQuadra, Quadra.class.getName()); if(colecaoPesquisa !=null && !colecaoPesquisa.isEmpty()){ Quadra quadra = (Quadra) Util.retonarObjetoDeColecao(colecaoPesquisa); idQuadra = quadra.getId().toString(); peloMenosUmParametroInformado = true; helper.setIdQuadra(idQuadra); helper.setNumeroQuadra(""+quadra.getNumeroQuadra()); }else{ throw new ActionServletException("atencao.quadra.inexistente"); } } // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ActionServletException("atencao.filtro.nenhum_parametro_informado"); } sessao.setAttribute("helper",helper); sessao.setAttribute("voltarFiltrar","1"); sessao.removeAttribute("fixo"); sessao.removeAttribute("faixaFinal"); sessao.removeAttribute("faixaInicial"); sessao.removeAttribute("filtroHidrometro"); }else{ // Insere os par�metros informados no filtro if (numeroHidrometro != null && !numeroHidrometro.trim().equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ComparacaoTexto( FiltroHidrometro.NUMERO_HIDROMETRO, numeroHidrometro)); } Date dataAquisicaoDate = Util.converteStringParaDate(dataAquisicao); Calendar dataAtual = new GregorianCalendar(); if (dataAquisicao != null && !dataAquisicao.trim().equalsIgnoreCase("")) { // caso a data de aquisi��o seja menor que a data atual if (dataAquisicaoDate.after(new Date())) { throw new ActionServletException("atencao.data.aquisicao.nao.superior.data.corrente"); } peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.DATA_AQUISICAO, dataAquisicaoDate)); } if (anoFabricacao != null && !anoFabricacao.trim().equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.ANO_FABRICACAO, anoFabricacao)); int anoAtual = dataAtual.get(Calendar.YEAR); Integer anoFabricacaoInteger = new Integer(anoFabricacao); // caso o ano de fabrica��o seja maior que o atual if (anoFabricacaoInteger > anoAtual) { throw new ActionServletException("atencao.ano.fabricacao.nao.superior.data.corrente"); } if(dataAquisicaoDate != null){ Integer anoDataAquisicao = Util.getAno(dataAquisicaoDate); // caso a data de aquisi��o seja menor que o ano fabrica��o if (anoDataAquisicao < anoFabricacaoInteger) { throw new ActionServletException("atencao.ano.fabricacao.menor.ano.aquisicao"); } } } if (indicadorMacromedidor != null && !indicadorMacromedidor.trim().equalsIgnoreCase("") && !indicadorMacromedidor.trim().equalsIgnoreCase("-1")) { filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.INDICADOR_MACROMEDIDOR, indicadorMacromedidor)); } if (idHidrometroClasseMetrologica != null && Integer.parseInt(idHidrometroClasseMetrologica) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_CLASSE_METROLOGICA_ID, idHidrometroClasseMetrologica)); } if (idHidrometroMarca != null && Integer.parseInt(idHidrometroMarca) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_MARCA_ID, idHidrometroMarca)); } if (idHidrometroDiametro != null && Integer.parseInt(idHidrometroDiametro) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_DIAMETRO_ID, idHidrometroDiametro)); } if (idHidrometroCapacidade != null && Integer.parseInt(idHidrometroCapacidade) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_CAPACIDADE_ID, idHidrometroCapacidade)); } if (idHidrometroTipo != null && Integer.parseInt(idHidrometroTipo) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_TIPO_ID, idHidrometroTipo)); } if (idHidrometroRelojoaria != null && Integer.parseInt(idHidrometroRelojoaria) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_RELOJOARIA_ID, idHidrometroRelojoaria)); } if (idHidrometroSituacao != null && Integer.parseInt(idHidrometroSituacao) > ConstantesSistema.NUMERO_NAO_INFORMADO) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_SITUACAO_ID, idHidrometroSituacao)); } if (idLocalArmazenagem != null && !idLocalArmazenagem.equals("")) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.HIDROMETRO_LOCAL_ARMAZENAGEM_ID, idLocalArmazenagem)); } if ( vazaoTransicao != null && !vazaoTransicao.equals("") ) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.VAZAO_TRANSICAO, vazaoTransicao.replace( "," , "." ) ) ); } if ( vazaoNominal != null && !vazaoNominal.equals("") ) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.VAZAO_NOMINAL, vazaoNominal.replace( "," , "." ) ) ); } if ( vazaoMinima != null && !vazaoMinima.equals("") ) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.VAZAO_MINIMA, vazaoMinima.replace( "," , "." ) ) ) ; } if ( notaFiscal != null && !notaFiscal.equals("") ) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.NOTA_FISCAL, notaFiscal)); } if ( tempoGarantiaAnos != null && !tempoGarantiaAnos.equals("") ) { peloMenosUmParametroInformado = true; filtroHidrometro.adicionarParametro( new ParametroSimples( FiltroHidrometro.TEMPO_GARANTIA_ANOS, tempoGarantiaAnos)); } // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } if (retorno.getName().equalsIgnoreCase("movimentarHidrometro")) { filtroHidrometro.setConsultaSemLimites(true); } // Manda o filtro pela sess�o para o ExibirManterHidrometroAction sessao.setAttribute("filtroHidrometro",filtroHidrometro); sessao.setAttribute("voltarFiltrar","1"); sessao.removeAttribute("fixo"); sessao.removeAttribute("faixaFinal"); sessao.removeAttribute("faixaInicial"); } sessao.setAttribute("filtrar_manter", "filtrar_manter"); return retorno; } }