public void processaCorrida( long tempoInicio, long tempoFim, Map mapVoltasJogadoresOnline, List pilotos, DadosCriarJogo dadosCriarJogo, ControleClassificacao controleClassificacao) { String campString = dadosCriarJogo.getNomeCampeonato(); Session session = controlePersistencia.getSession(); try { Campeonato campeonato = controlePersistencia.pesquisaCampeonato(session, campString, false); if (campeonato == null) { Logger.logar("campeonato nulo"); return; } CorridaCampeonato corridaCampeonatoCorrente = null; for (CorridaCampeonato corridaCampeonato : campeonato.getCorridaCampeonatos()) { if (dadosCriarJogo.getCircuitoSelecionado().equals(corridaCampeonato.getNomeCircuito())) { corridaCampeonatoCorrente = corridaCampeonato; break; } } if (corridaCampeonatoCorrente == null) { Logger.logar("corridaCampeonatoCorrente nulo"); return; } corridaCampeonatoCorrente.setTempoInicio(tempoInicio); corridaCampeonatoCorrente.setTempoFim(tempoFim); for (Iterator iter = pilotos.iterator(); iter.hasNext(); ) { Piloto piloto = (Piloto) iter.next(); DadosCorridaCampeonato dadosCorridaCampeonato = new DadosCorridaCampeonato(); dadosCorridaCampeonato.setCorridaCampeonato(corridaCampeonatoCorrente); JogadorDadosSrv jogadorDadosSrv = controlePersistencia.carregaDadosJogador(piloto.getNomeJogador(), session); if (jogadorDadosSrv != null) { dadosCorridaCampeonato.setJogador(jogadorDadosSrv.getNome()); } dadosCorridaCampeonato.setPiloto(piloto.getNome()); dadosCorridaCampeonato.setCarro(piloto.getNomeCarro()); int pts = controleClassificacao.gerarPontos(piloto); dadosCorridaCampeonato.setPontos(pts); dadosCorridaCampeonato.setPosicao(piloto.getPosicao()); dadosCorridaCampeonato.setTpPneu(piloto.getCarro().getTipoPneu()); dadosCorridaCampeonato.setNumVoltas(piloto.getNumeroVolta()); Volta volta = piloto.obterVoltaMaisRapida(); if (volta != null) dadosCorridaCampeonato.setVoltaMaisRapida(volta.obterTempoVoltaFormatado()); dadosCorridaCampeonato.setQtdeParadasBox(piloto.getQtdeParadasBox()); dadosCorridaCampeonato.setDesgastePneus( String.valueOf(piloto.getCarro().porcentagemDesgastePeneus() + "%")); dadosCorridaCampeonato.setCombustivelRestante( String.valueOf(piloto.getCarro().porcentagemCombustivel() + "%")); dadosCorridaCampeonato.setDesgasteMotor( String.valueOf(piloto.getCarro().porcentagemDesgasteMotor() + "%")); corridaCampeonatoCorrente.getDadosCorridaCampeonatos().add(dadosCorridaCampeonato); } try { controlePersistencia.gravarDados(session, campeonato); } catch (Exception e) { Logger.topExecpts(e); } } finally { if (session.isOpen()) { session.close(); } } }