@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(); } }
public void generarPronostico(Partido partido, int codPronostico) { try { int diferencia = partido.getRankingLocal() - partido.getRankingVisitante(); String resultado = ""; int stake = 0; float cuota = 0; if (diferencia > -120) { resultado = VICTORIA_LOCAL; cuota = partido.getCuota1(); } else if (diferencia <= -120 && diferencia >= -240) { resultado = EMPATE; cuota = partido.getCuotaX(); } else { resultado = VICTORIA_VISITANTE; cuota = partido.getCuota2(); } if (EMPATE.equals(resultado)) { stake = 3; } else { /* if(cuota<1.5) { stake = 10; } else if(cuota>=1.5 && cuota<1.7) { stake = 9; } else if(cuota>=1.7 && cuota<1.9) { stake = 8; } else if(cuota>=1.9 && cuota<2.1) { stake = 7; } else if (cuota>=2.1 && cuota<2.3) { stake = 6; } else if(cuota>=2.3 && cuota<2.5) { stake = 5; } else if(cuota>=2.5 && cuota<2.7) { stake = 4; } else if (cuota>=2.7 && cuota<2.9) { stake = 3; } else if(cuota>=2.9 && cuota<3.1) { stake = 2; } else if(cuota>=3.1) { stake = 1; } */ stake = 4; } PronosticoDao pronosticoDao = new PronosticoDaoImpl(); pronosticoDao.insertarPronostico(partido, 2, codPronostico, resultado, stake); } catch (Exception e) { e.printStackTrace(); } }