From c571aa84c79766008be7295781bb025788fa0e6b Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 13 Feb 2012 03:13:05 +0000 Subject: [PATCH] League prizes should be awarded correctly now, also refactored the code to use CollectionType object more widely. --- .../lotro/cards/packs/RarityReader.java | 5 +- .../lotro/collection/CollectionsManager.java | 68 ++++++++----------- .../gempukku/lotro/league/LeagueService.java | 10 +-- .../gempukku/lotro/packs/RarityPackBox.java | 8 +-- .../lotro/league/LeaguePrizesTest.java | 21 ++++++ .../gempukku/lotro/server/AdminResource.java | 12 +++- .../lotro/server/CollectionResource.java | 11 ++- 7 files changed, 78 insertions(+), 57 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/league/LeaguePrizesTest.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/packs/RarityReader.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/packs/RarityReader.java index 3fcc5e865..c1ba59105 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/packs/RarityReader.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/packs/RarityReader.java @@ -30,8 +30,9 @@ public class RarityReader { cards = new LinkedList(); cardsByRarity.put(rarity, cards); } - cards.add(line); - cardRarity.put(setNo + "_" + line.substring(setNo.length() + 1), rarity); + String blueprintId = setNo + "_" + line.substring(setNo.length() + 1); + cards.add(blueprintId); + cardRarity.put(blueprintId, rarity); } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CollectionsManager.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CollectionsManager.java index 242a2fc65..c1ae273ff 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CollectionsManager.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CollectionsManager.java @@ -2,12 +2,11 @@ package com.gempukku.lotro.collection; import com.gempukku.lotro.db.CollectionDAO; import com.gempukku.lotro.db.PlayerDAO; -import com.gempukku.lotro.db.vo.League; +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.league.LeagueService; import com.gempukku.lotro.packs.PacksStorage; import java.util.HashMap; @@ -43,11 +42,11 @@ public class CollectionsManager { } } - public void addPlayerCollection(LeagueService leagueService, Player player, String collectionType, CardCollection cardCollection) { + public void addPlayerCollection(Player player, CollectionType collectionType, CardCollection cardCollection) { _readWriteLock.writeLock().lock(); try { - _collectionDAO.setCollectionForPlayer(player.getId(), collectionType, cardCollection); - addPackage(leagueService, player, collectionType, cardCollection); + _collectionDAO.setCollectionForPlayer(player.getId(), collectionType.getCode(), cardCollection); + addPackage(player, collectionType, cardCollection); } finally { _readWriteLock.writeLock().unlock(); } @@ -68,17 +67,17 @@ public class CollectionsManager { } } - public CardCollection openPackInPlayerCollection(LeagueService leagueService, Player player, String collectionType, String selection, PacksStorage packsStorage, String packId) { + public CardCollection openPackInPlayerCollection(Player player, CollectionType collectionType, String selection, PacksStorage packsStorage, String packId) { _readWriteLock.writeLock().lock(); try { - final CardCollection playerCollection = getPlayerCollection(player, collectionType); + final CardCollection playerCollection = getPlayerCollection(player, collectionType.getCode()); if (playerCollection == null) return null; MutableCardCollection mutableCardCollection = new DefaultCardCollection(playerCollection); final CardCollection packContents = mutableCardCollection.openPack(packId, selection, packsStorage); if (packContents != null) { - _collectionDAO.setCollectionForPlayer(player.getId(), collectionType, mutableCardCollection); - addPackage(leagueService, player, collectionType, packContents); + _collectionDAO.setCollectionForPlayer(player.getId(), collectionType.getCode(), mutableCardCollection); + addPackage(player, collectionType, packContents); } return packContents; } finally { @@ -86,10 +85,10 @@ public class CollectionsManager { } } - public void addItemsToPlayerCollection(LeagueService leagueService, Player player, String collectionType, Map items) { + public void addItemsToPlayerCollection(Player player, CollectionType collectionType, Map items) { _readWriteLock.writeLock().lock(); try { - final CardCollection playerCollection = getPlayerCollection(player, collectionType); + final CardCollection playerCollection = getPlayerCollection(player, collectionType.getCode()); if (playerCollection != null) { MutableCardCollection mutableCardCollection = new DefaultCardCollection(playerCollection); MutableCardCollection addedCards = new DefaultCardCollection(); @@ -98,31 +97,31 @@ public class CollectionsManager { addedCards.addItem(item.getKey(), item.getValue()); } - _collectionDAO.setCollectionForPlayer(player.getId(), collectionType, mutableCardCollection); - addPackage(leagueService, player, collectionType, addedCards); + _collectionDAO.setCollectionForPlayer(player.getId(), collectionType.getCode(), mutableCardCollection); + addPackage(player, collectionType, addedCards); } } finally { _readWriteLock.writeLock().unlock(); } } - public void addItemsToPlayerCollection(LeagueService leagueService, String player, String collectionType, Map items) { - addItemsToPlayerCollection(leagueService, _playerDAO.getPlayer(player), collectionType, items); + public void addItemsToPlayerCollection(String player, CollectionType collectionType, Map items) { + addItemsToPlayerCollection(_playerDAO.getPlayer(player), collectionType, items); } - public void moveCollectionToCollection(Player player, String collectionFrom, String collectionTo) { + public void moveCollectionToCollection(Player player, CollectionType collectionFrom, CollectionType collectionTo) { _readWriteLock.writeLock().lock(); try { - final CardCollection oldCollection = getPlayerCollection(player, collectionFrom); + final CardCollection oldCollection = getPlayerCollection(player, collectionFrom.getCode()); if (oldCollection != null) { - final CardCollection newCollection = getPlayerCollection(player, collectionTo); + final CardCollection newCollection = getPlayerCollection(player, collectionTo.getCode()); if (newCollection != null) { MutableCardCollection mutableCardCollection = new DefaultCardCollection(newCollection); for (Map.Entry item : oldCollection.getAll().entrySet()) mutableCardCollection.addItem(item.getKey(), item.getValue()); - _collectionDAO.setCollectionForPlayer(player.getId(), collectionTo, mutableCardCollection); - addPackage(null, player, collectionTo, oldCollection); + _collectionDAO.setCollectionForPlayer(player.getId(), collectionTo.getCode(), mutableCardCollection); + addPackage(player, collectionTo, oldCollection); } } } finally { @@ -130,11 +129,11 @@ public class CollectionsManager { } } - public boolean commitTrade(String collectionType, Player playerOne, Player playerTwo, Map itemsOfPlayerOne, Map itemsOfPlayerTwo) { + public boolean commitTrade(CollectionType collectionType, Player playerOne, Player playerTwo, Map itemsOfPlayerOne, Map itemsOfPlayerTwo) { _readWriteLock.writeLock().lock(); try { - CardCollection collectionOne = getPlayerCollection(playerOne, collectionType); - CardCollection collectionTwo = getPlayerCollection(playerTwo, collectionType); + CardCollection collectionOne = getPlayerCollection(playerOne, collectionType.getCode()); + CardCollection collectionTwo = getPlayerCollection(playerTwo, collectionType.getCode()); if (collectionOne == null || collectionTwo == null) return false; @@ -154,11 +153,11 @@ public class CollectionsManager { addItems(playerOneCollection, addedCardsPlayerOne, itemsOfPlayerTwo); addItems(playerTwoCollection, addedCardsPlayerTwo, itemsOfPlayerOne); - _collectionDAO.setCollectionForPlayer(playerOne.getId(), collectionType, playerOneCollection); - _collectionDAO.setCollectionForPlayer(playerTwo.getId(), collectionType, playerTwoCollection); + _collectionDAO.setCollectionForPlayer(playerOne.getId(), collectionType.getCode(), playerOneCollection); + _collectionDAO.setCollectionForPlayer(playerTwo.getId(), collectionType.getCode(), playerTwoCollection); - addPackage(null, playerOne, collectionType, addedCardsPlayerOne); - addPackage(null, playerTwo, collectionType, addedCardsPlayerTwo); + addPackage(playerOne, collectionType, addedCardsPlayerOne); + addPackage(playerTwo, collectionType, addedCardsPlayerTwo); return true; } finally { @@ -180,18 +179,7 @@ public class CollectionsManager { } } - private void addPackage(LeagueService leagueService, Player player, String collectionType, CardCollection cards) { - _deliveryService.addPackage(player, getPackageNameByCollectionType(leagueService, collectionType), cards); - } - - private String getPackageNameByCollectionType(LeagueService leagueService, String collectionType) { - String packageName; - if (collectionType.equals("permanent")) - packageName = "My cards"; - else { - League league = leagueService.getLeagueByType(collectionType); - packageName = league.getName(); - } - return packageName; + private void addPackage(Player player, CollectionType collectionType, CardCollection cards) { + _deliveryService.addPackage(player, collectionType.getFullName(), cards); } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java index c4f244960..67cafed99 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.db.LeagueDAO; import com.gempukku.lotro.db.LeagueMatchDAO; import com.gempukku.lotro.db.LeaguePointsDAO; import com.gempukku.lotro.db.LeagueSerieDAO; +import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.db.vo.LeagueMatch; import com.gempukku.lotro.db.vo.LeagueSerie; @@ -88,7 +89,7 @@ public class LeagueService { for (LeagueSerie leagueSerie : _leagueSeasonDao.getSeriesForLeague(activeLeague)) { if (leagueSerie.getStart() <= currentDate && !leagueSerie.wasCollectionGiven()) { for (Map.Entry playerLeagueCollection : _collectionsManager.getPlayersCollection(activeLeague.getType()).entrySet()) { - _collectionsManager.addItemsToPlayerCollection(this, playerLeagueCollection.getKey(), activeLeague.getType(), leagueSerie.getSerieCollection()); + _collectionsManager.addItemsToPlayerCollection(playerLeagueCollection.getKey(), activeLeague.getCollectionType(), leagueSerie.getSerieCollection()); } _leagueSeasonDao.setCollectionGiven(leagueSerie); } @@ -97,9 +98,8 @@ public class LeagueService { } public synchronized void ensurePlayerIsInLeague(Player player, League league) { - if (_collectionsManager.getPlayerCollection(player, league.getCollectionType().getCode()) == null) { + if (_collectionsManager.getPlayerCollection(player, league.getType()) == null) playerJoinsLeague(player, league); - } } private void playerJoinsLeague(Player player, League league) { @@ -113,7 +113,7 @@ public class LeagueService { startingCollection.addItem(serieCollectionItem.getKey(), serieCollectionItem.getValue()); } } - _collectionsManager.addPlayerCollection(this, player, league.getType(), startingCollection); + _collectionsManager.addPlayerCollection(player, league.getCollectionType(), startingCollection); } } } @@ -157,7 +157,7 @@ public class LeagueService { else prize = _leaguePrizes.getPrizeForLeagueMatchLoser(count, playerMatchesPlayedOn.size(), league, serie); if (prize != null) - _collectionsManager.addItemsToPlayerCollection(this, player, "permanent", prize.getAll()); + _collectionsManager.addItemsToPlayerCollection(player, new CollectionType("permanent", "My cards"), prize.getAll()); } public List getLeagueStandings(League league) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/packs/RarityPackBox.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/packs/RarityPackBox.java index 62ba71bfa..772234a50 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/packs/RarityPackBox.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/packs/RarityPackBox.java @@ -60,13 +60,7 @@ public class RarityPackBox implements PackBox { } private void addCards(List result, Collection cards, boolean foil) { - for (String card : cards) { - card = card.replace("P", "_"); - card = card.replace("A", "_"); - card = card.replace("R", "_"); - card = card.replace("U", "_"); - card = card.replace("C", "_"); + for (String card : cards) result.add(new CardCollection.Item(CardCollection.Item.Type.CARD, 1, card + (foil ? "*" : ""))); - } } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/league/LeaguePrizesTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/league/LeaguePrizesTest.java new file mode 100644 index 000000000..2c2978994 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/league/LeaguePrizesTest.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.league; + +import com.gempukku.lotro.db.vo.League; +import com.gempukku.lotro.db.vo.LeagueSerie; +import com.gempukku.lotro.game.CardCollection; +import org.junit.Test; + +import java.util.Map; + +public class LeaguePrizesTest { + @Test + public void test() { + LeaguePrizes leaguePrizes = new LeaguePrizes(); + League league = new League(1, "a", "bla", 1, 1); + LeagueSerie leagueSerie = new LeagueSerie("a", "b", "fotr_block", null, 0, 0, 0, 0); + CardCollection prize = leaguePrizes.getPrizeForLeagueMatchWinner(2, 2, league, leagueSerie); + for (Map.Entry stringIntegerEntry : prize.getAll().entrySet()) { + System.out.println(stringIntegerEntry.getKey() + ": " + stringIntegerEntry.getValue()); + } + } +} diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java index 12aa4fec7..ad7394271 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.DeckDAO; import com.gempukku.lotro.db.LeagueDAO; import com.gempukku.lotro.db.LeagueSerieDAO; +import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.DefaultCardCollection; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; @@ -131,7 +132,7 @@ public class AdminResource extends AbstractResource { for (String playerName : playerNames) { Player player = _playerDao.getPlayer(playerName); - _collectionsManager.addItemsToPlayerCollection(_leagueService, player, collectionType, productItems); + _collectionsManager.addItemsToPlayerCollection(player, createCollectionType(collectionType), productItems); } return "OK"; @@ -149,7 +150,7 @@ public class AdminResource extends AbstractResource { for (Map.Entry playerCollection : playerCollections.entrySet()) { Player player = playerCollection.getKey(); - _collectionsManager.moveCollectionToCollection(player, collectionFrom, collectionTo); + _collectionsManager.moveCollectionToCollection(player, createCollectionType(collectionFrom), createCollectionType(collectionTo)); } return "OK"; @@ -185,4 +186,11 @@ public class AdminResource extends AbstractResource { if (!player.getType().equals("a")) sendError(Response.Status.FORBIDDEN); } + + private CollectionType createCollectionType(String collectionType) { + if (collectionType.equals("permanent")) + return new CollectionType("permanent", "My cards"); + + return _leagueService.getLeagueByType(collectionType).getCollectionType(); + } } diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java index a19a580da..4f044df8c 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.cards.packs.SetRarity; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.db.LeagueDAO; +import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; @@ -173,7 +174,8 @@ public class CollectionResource extends AbstractResource { @Context HttpServletResponse response) throws ParserConfigurationException { Player resourceOwner = getResourceOwnerSafely(request, participantId); - CardCollection packContents = _collectionsManager.openPackInPlayerCollection(_leagueService, resourceOwner, collectionType, selection, _packStorage, packId); + CollectionType collectionTypeObj = createCollectionType(collectionType); + CardCollection packContents = _collectionsManager.openPackInPlayerCollection(resourceOwner, collectionTypeObj, selection, _packStorage, packId); if (packContents == null) sendError(Response.Status.NOT_FOUND); @@ -208,4 +210,11 @@ public class CollectionResource extends AbstractResource { return doc; } + + private CollectionType createCollectionType(String collectionType) { + if (collectionType.equals("permanent")) + return new CollectionType("permanent", "My cards"); + + return _leagueService.getLeagueByType(collectionType).getCollectionType(); + } }