From 7adc4566849b76da3ad272cf958ddc8ad91e5f00 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 23 Aug 2012 14:03:51 +0000 Subject: [PATCH] Introducing TournamentVisitor into HallServer. --- .../com/gempukku/lotro/hall/HallServer.java | 28 ++++++++++++++----- .../lotro/hall/TournamentVisitor.java | 4 +++ 2 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/TournamentVisitor.java diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index 60c8f4f6b..317aacba4 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -50,7 +50,7 @@ public class HallServer extends AbstractServer { private Map _lastVisitedPlayers = new HashMap(); - private List _runningTournaments = new ArrayList(); + private Map _runningTournaments = new LinkedHashMap(); private Map _tournamentQueues = new HashMap(); private final ChatRoomMediator _hallChat; @@ -73,7 +73,8 @@ public class HallServer extends AbstractServer { @Override protected void doAfterStartup() { - _runningTournaments.addAll(_tournamentService.getLiveTournaments()); + for (Tournament tournament : _tournamentService.getLiveTournaments()) + _runningTournaments.put(tournament.getTournamentId(), tournament); } public void setShutdown(boolean shutdown) { @@ -248,6 +249,19 @@ public class HallServer extends AbstractServer { } } + public boolean processTournament(String tournamentId, Player player, TournamentVisitor tournamentVisitor) { + _hallDataAccessLock.readLock().lock(); + try { + Tournament tournament = _runningTournaments.get(tournamentId); + if (tournament == null) + return false; + + return true; + } finally { + _hallDataAccessLock.readLock().unlock(); + } + } + public void processHall(Player player, HallInfoVisitor visitor) { _hallDataAccessLock.readLock().lock(); try { @@ -450,7 +464,7 @@ public class HallServer extends AbstractServer { return true; } - for (Tournament runningTournament : _runningTournaments) { + for (Tournament runningTournament : _runningTournaments.values()) { if (runningTournament.isPlayerInCompetition(playerId)) return true; } @@ -492,11 +506,11 @@ public class HallServer extends AbstractServer { _tournamentQueues.remove(tournamentQueueKey); } - for (Tournament runningTournament : new ArrayList(_runningTournaments)) { + for (Tournament runningTournament : new ArrayList(_runningTournaments.values())) { runningTournament.advanceTournament(new HallTournamentCallback(runningTournament)); if (runningTournament.isFinished()) { _tournamentService.markTournamentFinished(runningTournament.getTournamentId()); - _runningTournaments.remove(runningTournament); + _runningTournaments.remove(runningTournament.getTournamentId()); } } @@ -510,7 +524,7 @@ public class HallServer extends AbstractServer { public void createTournament(Tournament tournament) { _hallDataAccessLock.writeLock().lock(); try { - _runningTournaments.add(tournament); + _runningTournaments.put(tournament.getTournamentId(), tournament); } finally { _hallDataAccessLock.writeLock().unlock(); } @@ -520,7 +534,7 @@ public class HallServer extends AbstractServer { private class HallTournamentQueueCallback implements TournamentQueueCallback { @Override public void createTournament(Tournament tournament) { - _runningTournaments.add(tournament); + _runningTournaments.put(tournament.getTournamentId(), tournament); } @Override diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/TournamentVisitor.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/TournamentVisitor.java new file mode 100644 index 000000000..c3b8a73e4 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/TournamentVisitor.java @@ -0,0 +1,4 @@ +package com.gempukku.lotro.hall; + +public class TournamentVisitor { +}