Ejemplo n.º 1
0
  @Override
  public void procesarPartidos(List<Partido> partidosSource) {

    try {
      int liga = partidosSource.get(0).getLiga();
      String temporada = partidosSource.get(0).getTemporada();
      List<Partido> partidosTemporada = new ArrayList<Partido>();
      Integer totalPartidos = 0, codPronostico = 1;

      for (Partido partido : partidosSource) {

        partido.setRankingLocal(1000);
        partido.setRankingVisitante(1000);

        if (partido.getLiga() != liga || !partido.getTemporada().equals(temporada)) {
          liga = partido.getLiga();
          temporada = partido.getTemporada();
          partidosTemporada = new ArrayList<Partido>();
        }

        boolean localFound = false, visitFound = false;

        for (int count = partidosTemporada.size(); count > 0; count--) {

          Partido partidoPrevio = partidosTemporada.get(count - 1);
          if (!localFound && partidoPrevio.getEqL().equals(partido.getEqL())) {
            localFound = true;
            int rankingLocal = 0;

            if (VICTORIA_LOCAL.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingLocal() + (partidoPrevio.getRankingVisitante() * 5) / 100;
            } else if (VICTORIA_VISITANTE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingLocal() - (partidoPrevio.getRankingLocal() * 7) / 100;
            } else if (EMPATE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingLocal()
                      + (((partidoPrevio.getRankingLocal() * 7) / 100
                                  + (partidoPrevio.getRankingVisitante() * 5) / 100)
                              / 2
                          - (partidoPrevio.getRankingLocal() * 7) / 100);
            }
            partido.setRankingLocal(rankingLocal);

          } else if (!localFound && partidoPrevio.getEqV().equals(partido.getEqL())) {
            localFound = true;
            int rankingLocal = 0;

            if (VICTORIA_LOCAL.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingVisitante()
                      - (partidoPrevio.getRankingVisitante() * 5) / 100;
            } else if (VICTORIA_VISITANTE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingVisitante() + (partidoPrevio.getRankingLocal() * 7) / 100;
            } else if (EMPATE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingLocal =
                  partidoPrevio.getRankingVisitante()
                      + (((partidoPrevio.getRankingLocal() * 7) / 100
                                  + (partidoPrevio.getRankingVisitante() * 5) / 100)
                              / 2
                          - (partidoPrevio.getRankingVisitante() * 5) / 100);
            }
            partido.setRankingLocal(rankingLocal);
          }

          if (!visitFound && partidoPrevio.getEqL().equals(partido.getEqV())) {
            visitFound = true;
            int rankingVisitante = 0;

            if (VICTORIA_LOCAL.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingLocal() + (partidoPrevio.getRankingVisitante() * 5) / 100;
            } else if (VICTORIA_VISITANTE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingLocal() - (partidoPrevio.getRankingLocal() * 7) / 100;
            } else if (EMPATE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingLocal()
                      + (((partidoPrevio.getRankingLocal() * 7) / 100
                                  + (partidoPrevio.getRankingVisitante() * 5) / 100)
                              / 2
                          - (partidoPrevio.getRankingLocal() * 7) / 100);
            }
            partido.setRankingVisitante(rankingVisitante);
          } else if (!visitFound && partidoPrevio.getEqV().equals(partido.getEqV())) {
            visitFound = true;

            int rankingVisitante = 0;

            if (VICTORIA_LOCAL.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingVisitante()
                      - (partidoPrevio.getRankingVisitante() * 5) / 100;
            } else if (VICTORIA_VISITANTE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingVisitante() + (partidoPrevio.getRankingLocal() * 7) / 100;
            } else if (EMPATE.equalsIgnoreCase(partidoPrevio.getResultado().trim())) {
              rankingVisitante =
                  partidoPrevio.getRankingVisitante()
                      + (((partidoPrevio.getRankingLocal() * 7) / 100
                                  + (partidoPrevio.getRankingVisitante() * 5) / 100)
                              / 2
                          - (partidoPrevio.getRankingVisitante() * 5) / 100);
            }
            partido.setRankingVisitante(rankingVisitante);
          }

          if (localFound && visitFound) {
            this.generarPronostico(partido, codPronostico);
            codPronostico++;
            break;
          }
        }

        partidosTemporada.add(partido);
        System.out.println(partido);
      }

      System.out.println(totalPartidos);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }