From 54270471a9fdad11c8d59fe23840bd32e4eeb96c Mon Sep 17 00:00:00 2001 From: marcins78 Date: Fri, 18 Jan 2013 17:33:53 +0000 Subject: [PATCH] Extract DraftCommunicationChannel to be accessed directly. --- .../async/handler/HallRequestHandler.java | 13 +++++++---- .../gempukku/lotro/draft/DefaultDraft.java | 6 +++++ .../java/com/gempukku/lotro/draft/Draft.java | 3 +++ .../com/gempukku/lotro/hall/HallServer.java | 23 ++----------------- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java index 53870d93f..6f630e6d5 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java @@ -8,6 +8,7 @@ import com.gempukku.lotro.async.LongPollingSystem; import com.gempukku.lotro.async.ResponseWriter; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.vo.League; +import com.gempukku.lotro.draft.Draft; import com.gempukku.lotro.draft.DraftChannelVisitor; import com.gempukku.lotro.draft.DraftFinishedException; import com.gempukku.lotro.game.*; @@ -152,7 +153,8 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri public boolean isChanged() { try { - return _hallServer.hasChangesInDraft(_tournamentId, _player, _channelNumber); + Draft draft = _hallServer.getDraft(_tournamentId); + return draft.getCommunicationChannel(_player.getName(), _channelNumber).hasChangesInCommunicationChannel(draft.getCardChoice(_player.getName())); } catch (DraftFinishedException e) { return true; } catch (SubscriptionConflictException e) { @@ -170,12 +172,15 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri Document doc = documentBuilder.newDocument(); - Element draft = doc.createElement("draft"); + Element draftElem = doc.createElement("draft"); try { - _hallServer.processChangesInDraft(_tournamentId, _player, _channelNumber, new SerializeDraftVisitor(doc, draft)); + Draft draft = _hallServer.getDraft(_tournamentId); + SerializeDraftVisitor serializeDraftVisitor = new SerializeDraftVisitor(doc, draftElem); + draft.getCommunicationChannel(_player.getName(), _channelNumber).processCommunicationChannel(draft.getCardChoice(_player.getName()), serializeDraftVisitor); + serializeDraftVisitor.chosenCards(draft.getChosenCards(_player)); - doc.appendChild(draft); + doc.appendChild(draftElem); _responseWriter.writeXmlResponse(doc); } catch (DraftFinishedException e) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DefaultDraft.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DefaultDraft.java index 854112f02..31c5a774f 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DefaultDraft.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DefaultDraft.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.DefaultCardCollection; import com.gempukku.lotro.game.MutableCardCollection; +import com.gempukku.lotro.game.Player; import com.gempukku.lotro.packs.PacksStorage; import com.gempukku.lotro.tournament.TournamentCallback; @@ -101,6 +102,11 @@ public class DefaultDraft implements Draft { return new DefaultDraftCardChoice(cardChoice, _lastPickStart + PICK_TIME); } + @Override + public CardCollection getChosenCards(Player player) { + return _collectionsManager.getPlayerCollection(player, _collectionType.getCode()); + } + @Override public boolean isFinished() { return _finishedDraft; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/Draft.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/Draft.java index c1300579e..b322c478a 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/Draft.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/Draft.java @@ -2,6 +2,8 @@ package com.gempukku.lotro.draft; import com.gempukku.lotro.SubscriptionConflictException; import com.gempukku.lotro.SubscriptionExpiredException; +import com.gempukku.lotro.game.CardCollection; +import com.gempukku.lotro.game.Player; import com.gempukku.lotro.tournament.TournamentCallback; public interface Draft { @@ -14,6 +16,7 @@ public interface Draft { public DraftCommunicationChannel getCommunicationChannel(String playerName, int channelNumber) throws SubscriptionExpiredException, SubscriptionConflictException; public DraftCardChoice getCardChoice(String playerName); + public CardCollection getChosenCards(Player player); public boolean isFinished(); } 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 7a058a1bb..3ca20f744 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 @@ -362,8 +362,7 @@ public class HallServer extends AbstractServer { } } - public boolean hasChangesInDraft(String tournamentId, Player player, int channelNumber) - throws DraftFinishedException, SubscriptionConflictException, SubscriptionExpiredException { + public Draft getDraft(String tournamentId) throws DraftFinishedException { _hallDataAccessLock.readLock().lock(); try { Tournament tournament = _runningTournaments.get(tournamentId); @@ -372,25 +371,7 @@ public class HallServer extends AbstractServer { Draft draft = tournament.getDraft(); if (draft == null) throw new DraftFinishedException(); - return draft.getCommunicationChannel(player.getName(), channelNumber).hasChangesInCommunicationChannel(draft.getCardChoice(player.getName())); - } finally { - _hallDataAccessLock.readLock().unlock(); - } - } - - public void processChangesInDraft(String tournamentId, Player player, int channelNumber, DraftChannelVisitor draftChannelVisitor) - throws DraftFinishedException, SubscriptionConflictException, SubscriptionExpiredException { - _hallDataAccessLock.readLock().lock(); - try { - Tournament tournament = _runningTournaments.get(tournamentId); - if (tournament == null) - throw new DraftFinishedException(); - Draft draft = tournament.getDraft(); - if (draft == null) - throw new DraftFinishedException(); - draft.getCommunicationChannel(player.getName(), channelNumber).processCommunicationChannel(draft.getCardChoice(player.getName()), draftChannelVisitor); - CardCollection cardCollection = _collectionsManager.getPlayerCollection(player, tournament.getCollectionType().getCode()); - draftChannelVisitor.chosenCards(cardCollection); + return draft; } finally { _hallDataAccessLock.readLock().unlock(); }