public boolean verificaCampeonatoConcluido(Campeonato campeonato) {
   List<CorridaCampeonato> corridaCampeonatos = campeonato.getCorridaCampeonatos();
   for (CorridaCampeonato corridaCampeonato : corridaCampeonatos) {
     if (corridaCampeonato.getTempoFim() == null) {
       return false;
     }
   }
   return true;
 }
 private boolean verificaCampeonatoEmAberto(JogadorDadosSrv jogadorDadosSrv, Session session) {
   List campeonatos = controlePersistencia.pesquisaCampeonatos(jogadorDadosSrv, session);
   for (Iterator iterator = campeonatos.iterator(); iterator.hasNext(); ) {
     Campeonato campeonato = (Campeonato) iterator.next();
     List<CorridaCampeonato> corridaCampeonatos = campeonato.getCorridaCampeonatos();
     for (CorridaCampeonato corridaCampeonato : corridaCampeonatos) {
       if (corridaCampeonato.getTempoFim() == null || corridaCampeonato.getTempoFim() == 0) {
         return true;
       }
     }
   }
   return false;
 }
  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();
      }
    }
  }