@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(); } }