package gcom.gui.micromedicao.hidrometro; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.hidrometro.Hidrometro; import gcom.micromedicao.hidrometro.HidrometroCapacidade; import gcom.micromedicao.hidrometro.HidrometroClasseMetrologica; import gcom.micromedicao.hidrometro.HidrometroDiametro; import gcom.micromedicao.hidrometro.HidrometroMarca; import gcom.micromedicao.hidrometro.HidrometroRelojoaria; import gcom.micromedicao.hidrometro.HidrometroTipo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; 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; /** * Action respons�vel pela atualiza��o do conjunto de hidrometros * * @author S�vio Luiz * @created 14 de Setembro de 2005 */ public class AtualizarConjuntoHidrometroAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) actionForm; ActionForward retorno = actionMapping.findForward("telaSucesso"); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = this.getUsuarioLogado(httpServletRequest); // Hidrometro que ter� todas as modifica��es feitas no // hidrometro_atualizar_conjunto Hidrometro hidrometroAtualizado = new Hidrometro(); String fixo = (String) sessao.getAttribute("fixo"); String faixaInicial = (String) sessao.getAttribute("faixaInicial"); String faixaFinal = (String) sessao.getAttribute("faixaFinal"); // Obt�m a facahda Fachada fachada = Fachada.getInstancia(); //Pesquisa hidrometros //Collection hidrometros = fachada.pesquisarNumeroHidrometroFaixa(fixo,faixaInicial,faixaFinal); // Cria o objeto classe metrol�gica e seta o id HidrometroClasseMetrologica hidrometroClasseMetrologica = new HidrometroClasseMetrologica(); hidrometroClasseMetrologica.setId(new Integer(hidrometroActionForm .getIdHidrometroClasseMetrologica())); hidrometroAtualizado .setHidrometroClasseMetrologica(hidrometroClasseMetrologica); // Cria o objeto hidr�metro marca e seta o id HidrometroMarca hidrometroMarca = new HidrometroMarca(); hidrometroMarca.setId(new Integer(hidrometroActionForm .getIdHidrometroMarca())); hidrometroAtualizado.setHidrometroMarca(hidrometroMarca); // Cria o objeto hidr�metro capacidade e seta o id HidrometroCapacidade hidrometroCapacidade = new HidrometroCapacidade(); hidrometroCapacidade.setId(new Integer(hidrometroActionForm .getIdHidrometroCapacidade())); hidrometroAtualizado.setHidrometroCapacidade(hidrometroCapacidade); // Cria o objeto hidr�metro di�metro e seta o id HidrometroDiametro hidrometroDiametro = new HidrometroDiametro(); hidrometroDiametro.setId(new Integer(hidrometroActionForm .getIdHidrometroDiametro())); hidrometroAtualizado.setHidrometroDiametro(hidrometroDiametro); // Cria o objeto hidr�metro tipo e seta o id HidrometroTipo hidrometroTipo = new HidrometroTipo(); hidrometroTipo.setId(new Integer(hidrometroActionForm .getIdHidrometroTipo())); hidrometroAtualizado.setHidrometroTipo(hidrometroTipo); // Cria o objeto hidr�metro relojoaria e seta o id if(hidrometroActionForm .getIdHidrometroRelojoaria() != null && Integer.parseInt(hidrometroActionForm .getIdHidrometroRelojoaria()) > ConstantesSistema.NUMERO_NAO_INFORMADO){ HidrometroRelojoaria hidrometroRelojoaria = new HidrometroRelojoaria(); hidrometroRelojoaria.setId(new Integer(hidrometroActionForm .getIdHidrometroRelojoaria())); hidrometroAtualizado.setHidrometroRelojoaria(hidrometroRelojoaria); }else{ hidrometroAtualizado.setHidrometroRelojoaria(null); } SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Date dataAquisicao = null; try { dataAquisicao = formatoData.parse(hidrometroActionForm .getDataAquisicao()); } catch (ParseException ex) { // Erro no hibernate reportarErros(httpServletRequest, "erro.sistema", ex); // Atribui o mapeamento de retorno para a tela de erro retorno = actionMapping.findForward("telaErro"); } //SimpleDateFormat formatoDataAnterior = new SimpleDateFormat( // "dd/MM/yyyy"); Date dataAquisicaoAnterior = null; try { dataAquisicaoAnterior = formatoData.parse("01/01/1985"); } catch (ParseException ex) { // Erro no hibernate reportarErros(httpServletRequest, "erro.sistema", ex); // Atribui o mapeamento de retorno para a tela de erro retorno = actionMapping.findForward("telaErro"); } Calendar dataAtual = new GregorianCalendar(); int anoAtual = dataAtual.get(Calendar.YEAR); // caso a data de aquisi��o seja menor que a data atual if (dataAquisicao.after(new Date())) { throw new ActionServletException( "atencao.data.aquisicao.nao.superior.data.corrente"); } // caso a data de aquisi��o seja menor que 01/01/1985 if (dataAquisicao.before(dataAquisicaoAnterior)) { throw new ActionServletException( "atencao.data.aquisicao.nao.inferior.1985"); } Integer anoFabricacao = new Integer(hidrometroActionForm .getAnoFabricacao()); // caso o ano de fabrica��o seja maior que o atual if (anoFabricacao > anoAtual) { throw new ActionServletException( "atencao.ano.fabricacao.nao.superior.data.corrente"); } // caso o ano de fabrica��o seja menor que 1985 if (anoFabricacao < 1985) { throw new ActionServletException( "atencao.ano.fabricacao.nao.inferior.1985"); } Integer anoDataAquisicao = Util.getAno(dataAquisicao); // caso a data de aquisi��o seja menor que o ano fabrica��o if (anoDataAquisicao < anoFabricacao) { throw new ActionServletException( "atencao.ano.aquisicao.menor.ano.fabricacao"); } //Vazao Transicao BigDecimal vazaoTransicao = null; if (hidrometroActionForm.getVazaoTransicao() != null && !hidrometroActionForm.getVazaoTransicao().equals("") ) { vazaoTransicao = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoTransicao() ) ; } //Vazao Nominal BigDecimal vazaoNominal = null; if (hidrometroActionForm.getVazaoNominal() != null && !hidrometroActionForm.getVazaoNominal().equals("") ) { vazaoNominal = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoNominal() ) ; } //Vazao Minima BigDecimal vazaoMinima = null; if (hidrometroActionForm.getVazaoMinima() != null && !hidrometroActionForm.getVazaoMinima().equals("") ) { vazaoMinima = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoMinima().replace("," , "." ) ) ; } //Nota Fiscal Integer notaFiscal = null; if ( hidrometroActionForm.getNotaFiscal() != null && !hidrometroActionForm.getNotaFiscal().equals("") ) { notaFiscal = new Integer (hidrometroActionForm.getNotaFiscal() ) ; } //Tempo de Garantia Short tempoGarantiaAnos = null; if ( hidrometroActionForm.getTempoGarantiaAnos() != null && !hidrometroActionForm.getTempoGarantiaAnos().equals("") ) { tempoGarantiaAnos = new Short (hidrometroActionForm.getTempoGarantiaAnos() ) ; } hidrometroAtualizado.setNumero(hidrometroActionForm .getNumeroHidrometro()); hidrometroAtualizado.setDataAquisicao(dataAquisicao); hidrometroAtualizado.setAnoFabricacao(new Short(hidrometroActionForm .getAnoFabricacao())); hidrometroAtualizado.setIndicadorMacromedidor(new Short( hidrometroActionForm.getIndicadorMacromedidor())); hidrometroAtualizado.setNumeroDigitosLeitura(new Short( hidrometroActionForm.getIdNumeroDigitosLeitura())); hidrometroAtualizado.setVazaoTransicao(vazaoTransicao); hidrometroAtualizado.setVazaoNominal(vazaoNominal); hidrometroAtualizado.setVazaoMinima(vazaoMinima); hidrometroAtualizado.setNotaFiscal(notaFiscal); hidrometroAtualizado.setTempoGarantiaAnos(tempoGarantiaAnos); //Formata��o para chamada do metodo "pesquisarNumeroHidrometroFaixaCount" String numeroFormatadoInicial = ""; String numeroFormatadoFinal = ""; numeroFormatadoInicial = Util.adicionarZerosEsquedaNumero(6,faixaInicial); numeroFormatadoFinal = Util.adicionarZerosEsquedaNumero(6,faixaFinal); String inicialFixo = fixo + numeroFormatadoInicial; String finalFixo = fixo + numeroFormatadoFinal; Integer totalRegistros = fachada.pesquisarNumeroHidrometroFaixaCount(fixo,inicialFixo,finalFixo); //Verifica se o processo ir� para batch if(totalRegistros>500){ fachada.inserirProcessoAtualizarConjuntoHidrometro(fixo,faixaInicial,faixaFinal,hidrometroAtualizado,usuarioLogado,totalRegistros); // M�todo utilizado para montar a p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Atualizar Conjunto de Hidr�metros enviado para Processamento", "Voltar", "/exibirFiltrarHidrometroAction.do?menu=sim"); }else{ fachada.atualizarConjuntoHidrometro(fixo,faixaInicial,faixaFinal,hidrometroAtualizado,usuarioLogado); montarPaginaSucesso(httpServletRequest,totalRegistros+ " Hidr�metro(s) com a numera��o fixa igual a " + fixo + " atualizado(s) com sucesso.", "Realizar outra Manuten��o de Hidr�metro", "exibirManterHidrometroAction.do?menu=sim"); } // Remove objetos da sess�o sessao.removeAttribute("HidrometroActionForm"); sessao.removeAttribute("colecaoIntervalo"); sessao.removeAttribute("colecaoHidrometroClasseMetrologica"); sessao.removeAttribute("colecaoHidrometroMarca"); sessao.removeAttribute("colecaoHidrometroDiametro"); sessao.removeAttribute("colecaoHidrometroCapacidade"); sessao.removeAttribute("colecaoHidrometroTipo"); sessao.removeAttribute("hidrometros"); sessao.removeAttribute("fixo"); sessao.removeAttribute("faixaInicial"); sessao.removeAttribute("faixaFinal"); return retorno; } }