package gcom.gui.micromedicao.hidrometro; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.micromedicao.hidrometro.FiltroHidrometro; import gcom.micromedicao.hidrometro.FiltroHidrometroCapacidade; import gcom.micromedicao.hidrometro.FiltroHidrometroMarca; 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.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.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; 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; /** * Description of the Class * * @author compesa * @created 13 de Setembro de 2005 */ public class AtualizarHidrometroAction 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) { AtualizarHidrometroActionForm atualizarHidrometroActionForm = (AtualizarHidrometroActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_HIDROMETRO_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_HIDROMETRO_ATUALIZAR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); //------------ REGISTRAR TRANSA��O ---------------- ActionForward retorno = actionMapping.findForward("telaSucesso"); Hidrometro hidrometro = (Hidrometro) sessao.getAttribute("hidrometro"); // Obt�m a fachada Fachada fachada = Fachada.getInstancia(); FiltroHidrometro filtroHidrometro = new FiltroHidrometro(); filtroHidrometro.adicionarParametro(new ParametroSimples( FiltroHidrometro.ID, hidrometro.getId())); Collection hidrometros = fachada.pesquisar(filtroHidrometro, Hidrometro.class.getName()); if (hidrometros == null || hidrometros.isEmpty()) { throw new ActionServletException("atencao.atualizacao.timestamp"); } // Cria o objeto classe metrol�gica e seta o id HidrometroClasseMetrologica hidrometroClasseMetrologica = new HidrometroClasseMetrologica(); hidrometroClasseMetrologica.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroClasseMetrologica())); hidrometro.setHidrometroClasseMetrologica(hidrometroClasseMetrologica); // Cria o objeto hidr�metro marca e seta o id HidrometroMarca hidrometroMarca = new HidrometroMarca(); hidrometroMarca.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroMarca())); /* * [FS0004]- Verificar Preenchimento dos campos * Caso 3 */ // Cria o objeto hidr�metro capacidade e seta o id HidrometroCapacidade hidrometroCapacidade = new HidrometroCapacidade(); hidrometroCapacidade.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroCapacidade())); FiltroHidrometroCapacidade filtroHidrometroCapacidade = new FiltroHidrometroCapacidade(); filtroHidrometroCapacidade.adicionarParametro(new ParametroSimples( FiltroHidrometroCapacidade.ID,hidrometroCapacidade.getId().toString())); Collection colecaoHidrometroCapacidadeBase = fachada.pesquisar( filtroHidrometroCapacidade,HidrometroCapacidade.class.getName()); HidrometroCapacidade hidrometroCapacidadeBase = (HidrometroCapacidade) colecaoHidrometroCapacidadeBase.iterator().next(); if(!hidrometroCapacidadeBase.getCodigoHidrometroCapacidade(). equalsIgnoreCase(atualizarHidrometroActionForm.getNumeroHidrometro().substring(0,1))){ throw new ActionServletException("atencao.capacidade_incompativel_numero_fixo"); } hidrometro.setHidrometroCapacidade(hidrometroCapacidade); FiltroHidrometroMarca filtroHidrometroMarca = new FiltroHidrometroMarca(); filtroHidrometroMarca.adicionarParametro(new ParametroSimples( FiltroHidrometroMarca.ID,hidrometroMarca.getId().toString())); Collection colecaoHidrometroMarcaBase = fachada.pesquisar( filtroHidrometroMarca,HidrometroMarca.class.getName()); HidrometroMarca hidrometroMarcaBase = (HidrometroMarca) colecaoHidrometroMarcaBase.iterator().next(); if(!hidrometroMarcaBase.getCodigoHidrometroMarca(). equalsIgnoreCase(atualizarHidrometroActionForm.getNumeroHidrometro().substring(3,4))){ throw new ActionServletException("atencao.marca_incompativel_numero_fixo"); } hidrometro.setHidrometroMarca(hidrometroMarca); // Cria o objeto hidr�metro di�metro e seta o id HidrometroDiametro hidrometroDiametro = new HidrometroDiametro(); hidrometroDiametro.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroDiametro())); hidrometro.setHidrometroDiametro(hidrometroDiametro); // Cria o objeto hidr�metro tipo e seta o id HidrometroTipo hidrometroTipo = new HidrometroTipo(); hidrometroTipo.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroTipo())); hidrometro.setHidrometroTipo(hidrometroTipo); // Cria o objeto hidr�metro relojoaria e seta o id if(atualizarHidrometroActionForm .getIdHidrometroRelojoaria() != null && Integer.parseInt(atualizarHidrometroActionForm .getIdHidrometroRelojoaria()) > ConstantesSistema.NUMERO_NAO_INFORMADO){ HidrometroRelojoaria hidrometroRelojoaria = new HidrometroRelojoaria(); hidrometroRelojoaria.setId(new Integer(atualizarHidrometroActionForm .getIdHidrometroRelojoaria())); hidrometro.setHidrometroRelojoaria(hidrometroRelojoaria); }else{ hidrometro.setHidrometroRelojoaria(null); } SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Date dataAquisicao = null; try { dataAquisicao = formatoData.parse(atualizarHidrometroActionForm .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"); } /** * [FS0008]-Montar ano de fabricacao */ /*String numeroHidrometro = atualizarHidrometroActionForm.getNumeroHidrometro(); String anoFabricacaoForm = atualizarHidrometroActionForm.getAnoFabricacao(); String aux1 = numeroHidrometro.substring(1,3); Integer aux2= new Integer(aux1); if (anoFabricacaoForm.equalsIgnoreCase("") || anoFabricacaoForm == null) { if (aux2 >= 85) { char[] anoFabricacaoChar = anoFabricacaoForm.toCharArray(); anoFabricacaoChar[0] = '1'; anoFabricacaoChar[1] = '9'; anoFabricacaoForm = (new String(anoFabricacaoChar) + aux2); } else if (aux2 >= 00) { char[] anoFabricacaoChar = anoFabricacaoForm.toCharArray(); anoFabricacaoChar[0] = '2'; anoFabricacaoChar[1] = '0'; anoFabricacaoForm = (new String(anoFabricacaoChar) + aux2); } }*/ Integer anoFabricacao = new Integer(atualizarHidrometroActionForm.getAnoFabricacao()); 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"); } 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"); } // 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"); } // 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"); } //Vazao Transicao BigDecimal vazaoTransicao = null; if (atualizarHidrometroActionForm.getVazaoTransicao() != null && !atualizarHidrometroActionForm.getVazaoTransicao().equals("") ) { vazaoTransicao = Util.formatarMoedaRealparaBigDecimal( atualizarHidrometroActionForm.getVazaoTransicao() ) ; } //Vazao Nominal BigDecimal vazaoNominal = null; if (atualizarHidrometroActionForm.getVazaoNominal() != null && !atualizarHidrometroActionForm.getVazaoNominal().equals("") ) { vazaoNominal = Util.formatarMoedaRealparaBigDecimal( atualizarHidrometroActionForm.getVazaoNominal() ) ; } //Vazao Minima BigDecimal vazaoMinima = null; if (atualizarHidrometroActionForm.getVazaoMinima() != null && !atualizarHidrometroActionForm.getVazaoMinima().equals("") ) { vazaoMinima = Util.formatarMoedaRealparaBigDecimal( atualizarHidrometroActionForm.getVazaoMinima().replace("," , "." ) ) ; } //Nota Fiscal Integer notaFiscal = null; if ( atualizarHidrometroActionForm.getNotaFiscal() != null && !atualizarHidrometroActionForm.getNotaFiscal().equals("") ) { notaFiscal = new Integer (atualizarHidrometroActionForm.getNotaFiscal() ) ; } //Tempo de Garantia Short tempoGarantiaAnos = null; if ( atualizarHidrometroActionForm.getTempoGarantiaAnos() != null && !atualizarHidrometroActionForm.getTempoGarantiaAnos().equals("") ) { tempoGarantiaAnos = new Short (atualizarHidrometroActionForm.getTempoGarantiaAnos() ) ; } hidrometro.setNumero(atualizarHidrometroActionForm.getNumeroHidrometro()); hidrometro.setDataAquisicao(dataAquisicao); hidrometro.setAnoFabricacao(new Short(atualizarHidrometroActionForm .getAnoFabricacao())); hidrometro.setIndicadorMacromedidor(new Short(atualizarHidrometroActionForm .getIndicadorMacromedidor())); hidrometro.setNumeroDigitosLeitura(new Short(atualizarHidrometroActionForm .getIdNumeroDigitosLeitura())); hidrometro.setVazaoTransicao(vazaoTransicao); hidrometro.setVazaoNominal(vazaoNominal); hidrometro.setVazaoMinima(vazaoMinima); hidrometro.setNotaFiscal(notaFiscal); hidrometro.setTempoGarantiaAnos(tempoGarantiaAnos); //------------ REGISTRAR TRANSA��O ---------------- hidrometro.setOperacaoEfetuada(operacaoEfetuada); hidrometro.adicionarUsuario(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(hidrometro); //------------ REGISTRAR TRANSA��O ---------------- // Inseri hidr�metro fachada.atualizarHidrometro(hidrometro); // M�todo utilizado para montar a p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Hidr�metro de n�mero " + hidrometro.getNumero() + " atualizado 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("fixo"); sessao.removeAttribute("faixaInicial"); sessao.removeAttribute("faixaFinal"); sessao.removeAttribute("hidrometros"); return retorno; } }