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.FiltroHidrometroCapacidade; import gcom.micromedicao.hidrometro.FiltroHidrometroLocalArmazenagem; 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.HidrometroLocalArmazenagem; import gcom.micromedicao.hidrometro.HidrometroMarca; import gcom.micromedicao.hidrometro.HidrometroRelojoaria; import gcom.micromedicao.hidrometro.HidrometroSituacao; 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; /** * < <Descri��o da Classe>> * * @author Administrador */ public class InserirHidrometroAction extends GcomAction { /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Obt�m o action form HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) actionForm; // Obtendo uma instancia da sessao HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_HIDROMETRO_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_HIDROMETRO_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); //------------ REGISTRAR TRANSA��O ---------------- Fachada fachada = Fachada.getInstancia(); // Define a a��o de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); // Filtro para obter o local de armazenagem ativo de id informado FiltroHidrometroLocalArmazenagem filtroHidrometroLocalArmazenagem = new FiltroHidrometroLocalArmazenagem(); filtroHidrometroLocalArmazenagem .adicionarParametro(new ParametroSimples( FiltroHidrometroLocalArmazenagem.ID, new Integer( hidrometroActionForm.getIdLocalArmazenagem()), ParametroSimples.CONECTOR_AND)); filtroHidrometroLocalArmazenagem .adicionarParametro(new ParametroSimples( FiltroHidrometroLocalArmazenagem.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Pesquisa de acordo com os par�metros informados no filtro Collection colecaoHidrometroLocalArmazenagem = fachada.pesquisar( filtroHidrometroLocalArmazenagem, HidrometroLocalArmazenagem.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoHidrometroLocalArmazenagem == null || colecaoHidrometroLocalArmazenagem.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.hidrometro_local_armazenagem.inexistente"); } // Cria o objeto classe metrol�gica e seta o id HidrometroClasseMetrologica hidrometroClasseMetrologica = new HidrometroClasseMetrologica(); hidrometroClasseMetrologica.setId(new Integer(hidrometroActionForm .getIdHidrometroClasseMetrologica())); // Cria o objeto hidr�metro marca e seta o id HidrometroMarca hidrometroMarca = new HidrometroMarca(); hidrometroMarca.setId(new Integer(hidrometroActionForm .getIdHidrometroMarca())); /** * [FS0004]- Verificar Preenchimento dos campos * Caso 3 */ 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(hidrometroActionForm.getFixo().substring(3))){ throw new ActionServletException("atencao.marca_incompativel_numero_fixo"); } String fixo = hidrometroActionForm.getFixo(); /* /** * [FS0008]-Montar ano de fabricacao String anoFabricacaoForm = hidrometroActionForm.getAnoFabricacao(); String aux1 = fixo.substring(2,3); Integer aux2= new Integer(aux1); if (anoFabricacaoForm.equalsIgnoreCase("") || anoFabricacaoForm == null) { throw new ActionServletException(""); } else { 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); } }*/ /** * [FS0004]- Verificar Preenchimento dos campos * Caso 2 */ //Cria o objeto hidr�metro capacidade e seta o id HidrometroCapacidade hidrometroCapacidade = new HidrometroCapacidade(); hidrometroCapacidade.setId(new Integer(hidrometroActionForm .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(hidrometroActionForm.getFixo().substring(0,1))){ throw new ActionServletException("atencao.capacidade_incompativel_numero_fixo"); } // Cria o objeto hidr�metro di�metro e seta o id HidrometroDiametro hidrometroDiametro = new HidrometroDiametro(); hidrometroDiametro.setId(new Integer(hidrometroActionForm .getIdHidrometroDiametro())); // Cria o objeto hidr�metro tipo e seta o id HidrometroTipo hidrometroTipo = new HidrometroTipo(); hidrometroTipo.setId(new Integer(hidrometroActionForm .getIdHidrometroTipo())); // Cria o objeto hidr�metro tipo e seta o id HidrometroRelojoaria hidrometroRelojoaria = null; if(hidrometroActionForm .getIdHidrometroRelojoaria() != null && Integer.parseInt(hidrometroActionForm .getIdHidrometroRelojoaria()) > ConstantesSistema.NUMERO_NAO_INFORMADO){ hidrometroRelojoaria = new HidrometroRelojoaria(); hidrometroRelojoaria.setId(new Integer(hidrometroActionForm .getIdHidrometroRelojoaria())); } // Cria o objeto hidr�metro local armazenagem e seta o id HidrometroLocalArmazenagem hidrometroLocalArmazenagem = new HidrometroLocalArmazenagem(); hidrometroLocalArmazenagem.setId(new Integer(hidrometroActionForm .getIdLocalArmazenagem())); // Cria o objeto hidr�metro situacao e seta o id HidrometroSituacao hidrometroSituacao = new HidrometroSituacao(); hidrometroSituacao.setId(HidrometroSituacao.DISPONIVEL); 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"); } 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"); } BigDecimal vazaoTransicao = null; //Vazao Transacao if (hidrometroActionForm.getVazaoTransicao() != null && !"".equals(hidrometroActionForm.getVazaoTransicao() ) ) { vazaoTransicao = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoTransicao() ) ; } BigDecimal vazaoNominal = null; //Vazao Nominal if (hidrometroActionForm.getVazaoNominal() != null && !"".equals(hidrometroActionForm.getVazaoNominal() ) ) { vazaoNominal = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoNominal() ); } BigDecimal vazaoMinima = null; //Vazao Minima if (hidrometroActionForm.getVazaoMinima() != null && !"".equals(hidrometroActionForm.getVazaoMinima() ) ) { vazaoMinima = Util.formatarMoedaRealparaBigDecimal( hidrometroActionForm.getVazaoMinima() ); } Integer notaFiscal = null; if ( hidrometroActionForm.getNotaFiscal() != null && !"".equals(hidrometroActionForm.getNotaFiscal() ) ) { notaFiscal = new Integer( hidrometroActionForm.getNotaFiscal() ) ; } Short tempoGarantiaAnos = null; if ( hidrometroActionForm.getTempoGarantiaAnos() != null && !"".equals(hidrometroActionForm.getTempoGarantiaAnos() ) ) { tempoGarantiaAnos = new Short( hidrometroActionForm.getTempoGarantiaAnos()); } // Cria o objeto hidrom�tro Hidrometro hidrometro = null; try { hidrometro = new Hidrometro( null, // numero formatoData.parse(hidrometroActionForm.getDataAquisicao()), // dataAquisicao new Short(hidrometroActionForm.getAnoFabricacao()), // anoFabricacao new Short(hidrometroActionForm.getIndicadorMacromedidor()), // indicadorMacromedidor null, // dataUltimaRevisao null, // dataBaixa new Integer("0"), // numeroLeituraAcumulada new Short(hidrometroActionForm.getIdNumeroDigitosLeitura()), // numeroDigitosLeitura new Date(), // ultimaAlteracao hidrometroTipo, // hidr�metroTipo hidrometroSituacao, // hidrometroSituacao hidrometroMarca, // hidrometroMarca hidrometroCapacidade, // hidrometroCapacidade null, // hidrometroMotivoBaixa hidrometroLocalArmazenagem, // hidrometroLocalArmazenagem hidrometroClasseMetrologica, // hidrometroClasseMetrologica hidrometroDiametro, //hidrometro Relojoaria hidrometroRelojoaria, //vazao transicao vazaoTransicao, //vazao nominal vazaoNominal, //vazao minima vazaoMinima, //nota fiscal notaFiscal, //tempo garantia em anos tempoGarantiaAnos); // hidrometroDiametro } 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"); } // Obt�m a faixa inicial Integer faixaInicial = new Integer(hidrometroActionForm .getFaixaInicial()); // Obt�m a faixa final Integer faixaFinal = new Integer(hidrometroActionForm.getFaixaFinal()); Integer intervalo = new Integer((faixaFinal.intValue() - faixaInicial .intValue()) + 1); //------------ REGISTRAR TRANSA��O ---------------- hidrometro.setOperacaoEfetuada(operacaoEfetuada); hidrometro.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(hidrometro); //------------ REGISTRAR TRANSA��O ---------------- // Inseri hidr�metro fachada.inserirHidrometro(hidrometro, fixo, faixaInicial, faixaFinal); // M�todo utilizado para montar a p�gina de sucesso montarPaginaSucesso(httpServletRequest, intervalo.toString() + " Hidr�metro(s) inserido(s) com sucesso.", "Inserir outro Hidr�metro", "exibirInserirHidrometroAction.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"); return retorno; } }