private List<TournamentPlayer> getTournamentPlayersWithBye(List<TournamentPlayer> roundPlayers) { List<TournamentPlayer> playersWithBye = new ArrayList<>(); if (rounds.size() > 1) { for (int i = rounds.size() - 2; i >= 0; i--) { Round oldRound = rounds.get(i); if (oldRound != null && !oldRound.getPlayerByes().isEmpty()) { TournamentPlayer tournamentPlayerWithBye = oldRound.getPlayerByes().iterator().next(); if (roundPlayers.contains(tournamentPlayerWithBye)) { playersWithBye.add(tournamentPlayerWithBye); } } } } return playersWithBye; }
protected Round createRoundRandom() { Round round = new Round(rounds.size() + 1, this); rounds.add(round); List<TournamentPlayer> roundPlayers = getActivePlayers(); // search the player with a bye last round List<TournamentPlayer> playerWithByes = getTournamentPlayersWithBye(roundPlayers); while (roundPlayers.size() > 1) { TournamentPlayer player1 = getNextAvailablePlayer(roundPlayers, playerWithByes); TournamentPlayer player2 = getNextAvailablePlayer(roundPlayers, playerWithByes); round.addPairing(new TournamentPairing(player1, player2)); } if (!roundPlayers.isEmpty()) { // player free round - add to bye players of this round TournamentPlayer player1 = roundPlayers.get(0); round.getPlayerByes().add(player1); player1.setState(TournamentPlayerState.WAITING); player1.setStateInfo("Round Bye"); updateResults(); } return round; }
for (TournamentPlayer playerBye : round.getPlayerByes()) { Integer id = map.get(playerBye); if (id != null) {
round.getPlayerByes().add(playerBye); if (isLastRound) { playerBye.setState(TournamentPlayerState.FINISHED);
for (TournamentPlayer tp : round.getPlayerByes()) { tp.setResults(new StringBuilder(tp.getResults()).append('R').append(round.getRoundNumber()).append(' ').append("Bye ").toString()); tp.setPoints(tp.getPoints() + 3);
for (TournamentPlayer tp : round.getPlayerByes()) { roundBuilder.addByes(tp.getPlayer().getName());