Tournament should be finishing once only.

This commit is contained in:
marcins78@gmail.com
2012-07-04 13:51:53 +00:00
parent 5c38ef7f35
commit 2628e6d061

View File

@@ -117,8 +117,10 @@ public abstract class AbstractTournament implements Tournament {
if (_ongoingGamesCount == 0) {
if (isFinished())
finishTournament(tournamentCallback);
else
else {
tournamentCallback.broadcastMessage("Tournament " + _tournamentName + " round has finished, next round will start in 2 minutes");
_nextTask = new PairPlayers();
}
}
}
if (_nextTask != null && _nextTask.getExecuteAfter() <= System.currentTimeMillis()) {
@@ -166,22 +168,11 @@ public abstract class AbstractTournament implements Tournament {
_tournamentMatches.add(new TournamentMatch(winner, loser, winner, _currentRound));
_playerStandings = null;
if (_ongoingGamesCount == 0)
processToNextTournamentRoundOrFinish(tournamentCallback);
} finally {
_lock.writeLock().unlock();
}
}
private void processToNextTournamentRoundOrFinish(TournamentCallback tournamentCallback) {
if (isFinished()) {
finishTournament(tournamentCallback);
} else {
tournamentCallback.broadcastMessage("Tournament " + _tournamentName + " round has finished, next round will start in 2 minutes");
_nextTask = new PairPlayers();
}
}
private void finishTournament(TournamentCallback tournamentCallback) {
tournamentCallback.broadcastMessage("Tournament " + _tournamentName + " is finished");
awardPrizes();