Cleaning up some of the more egregrious exception infections. Adding the player collection conversion as a unit test, which should run when this is deployed into production.

This commit is contained in:
Christian 'ketura' McCarty
2022-10-31 04:22:38 -05:00
parent 7fa33f7dc9
commit e08fd1601f
8 changed files with 29 additions and 19 deletions

View File

@@ -24,11 +24,15 @@ CREATE TABLE `collection_entries` (
SELECT * SELECT *
FROM collection c FROM collection c
WHERE player_id = 31040 WHERE player_id = 31040;
SELECT * SELECT *
FROM collection_entries FROM collection_entries
WHERE collection_id = 64643 WHERE collection_id = 59510;
SELECT *
FROM collection_entries
WHERE collection_id = 64643;
SELECT * SELECT *
FROM player p FROM player p
@@ -41,5 +45,13 @@ SELECT count(*)
FROM collection_entries FROM collection_entries
GROUP BY collection_id GROUP BY collection_id
SELECT TYPE
FROM collection c
GROUP BY type
SELECT *
FROM transfer t
ORDER BY ID DESC

View File

@@ -1,11 +1,9 @@
package com.gempukku.lotro.logic.timing; package com.gempukku.lotro.logic.timing;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Map; import java.util.Map;
public interface GameResultListener { public interface GameResultListener {
public void gameFinished(String winnerPlayerId, String winReason, Map<String, String> loserPlayerIdsWithReasons) throws SQLException, IOException; public void gameFinished(String winnerPlayerId, String winReason, Map<String, String> loserPlayerIdsWithReasons);
public void gameCancelled(); public void gameCancelled();
} }

View File

@@ -175,7 +175,7 @@ public class CollectionsManager {
return result; return result;
} }
public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, Player player, CollectionType collectionType, Iterable<CardCollection.Item> items, Map<String, Object> extraInformation) throws SQLException, IOException { public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, Player player, CollectionType collectionType, Iterable<CardCollection.Item> items, Map<String, Object> extraInformation){
_readWriteLock.writeLock().lock(); _readWriteLock.writeLock().lock();
try { try {
final CardCollection playerCollection = getPlayerCollection(player, collectionType.getCode()); final CardCollection playerCollection = getPlayerCollection(player, collectionType.getCode());
@@ -197,16 +197,18 @@ public class CollectionsManager {
_transferDAO.addTransferTo(notifyPlayer, player.getName(), reason, collectionType.getFullName(), 0, addedCards); _transferDAO.addTransferTo(notifyPlayer, player.getName(), reason, collectionType.getFullName(), 0, addedCards);
} }
} catch (SQLException | IOException e) {
throw new RuntimeException("Could not add items to player collection", e);
} finally { } finally {
_readWriteLock.writeLock().unlock(); _readWriteLock.writeLock().unlock();
} }
} }
public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, Player player, CollectionType collectionType, Iterable<CardCollection.Item> items) throws SQLException, IOException { public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, Player player, CollectionType collectionType, Iterable<CardCollection.Item> items) {
addItemsToPlayerCollection(notifyPlayer, reason, player, collectionType, items, null); addItemsToPlayerCollection(notifyPlayer, reason, player, collectionType, items, null);
} }
public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, String player, CollectionType collectionType, Iterable<CardCollection.Item> items) throws SQLException, IOException { public void addItemsToPlayerCollection(boolean notifyPlayer, String reason, String player, CollectionType collectionType, Iterable<CardCollection.Item> items) {
addItemsToPlayerCollection(notifyPlayer, reason, _playerDAO.getPlayer(player), collectionType, items); addItemsToPlayerCollection(notifyPlayer, reason, _playerDAO.getPlayer(player), collectionType, items);
} }

View File

@@ -723,7 +723,7 @@ public class HallServer extends AbstractServer {
if (league != null) { if (league != null) {
listener = new GameResultListener() { listener = new GameResultListener() {
@Override @Override
public void gameFinished(String winnerPlayerId, String winReason, Map<String, String> loserPlayerIdsWithReasons) throws SQLException, IOException { public void gameFinished(String winnerPlayerId, String winReason, Map<String, String> loserPlayerIdsWithReasons) {
_leagueService.reportLeagueGameResult(league, leagueSerie, winnerPlayerId, loserPlayerIdsWithReasons.keySet().iterator().next()); _leagueService.reportLeagueGameResult(league, leagueSerie, winnerPlayerId, loserPlayerIdsWithReasons.keySet().iterator().next());
} }

View File

@@ -6,8 +6,6 @@ import com.gempukku.lotro.draft2.SoloDraft;
import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.CardCollection;
import com.gempukku.lotro.game.Player; import com.gempukku.lotro.game.Player;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List; import java.util.List;
public interface LeagueData { public interface LeagueData {
@@ -19,5 +17,5 @@ public interface LeagueData {
CardCollection joinLeague(CollectionsManager collecionsManager, Player player, int currentTime); CardCollection joinLeague(CollectionsManager collecionsManager, Player player, int currentTime);
int process(CollectionsManager collectionsManager, List<PlayerStanding> leagueStandings, int oldStatus, int currentTime) throws SQLException, IOException; int process(CollectionsManager collectionsManager, List<PlayerStanding> leagueStandings, int oldStatus, int currentTime);
} }

View File

@@ -143,7 +143,7 @@ public class LeagueService {
return null; return null;
} }
public synchronized void reportLeagueGameResult(League league, LeagueSerieData serie, String winner, String loser) throws SQLException, IOException { public synchronized void reportLeagueGameResult(League league, LeagueSerieData serie, String winner, String loser) {
_leagueMatchDao.addPlayedMatch(league.getType(), serie.getName(), winner, loser); _leagueMatchDao.addPlayedMatch(league.getType(), serie.getName(), winner, loser);
_leagueStandings.remove(LeagueMapKeys.getLeagueMapKey(league)); _leagueStandings.remove(LeagueMapKeys.getLeagueMapKey(league));
@@ -153,7 +153,7 @@ public class LeagueService {
awardPrizesToPlayer(league, serie, loser, false); awardPrizesToPlayer(league, serie, loser, false);
} }
private void awardPrizesToPlayer(League league, LeagueSerieData serie, String player, boolean winner) throws SQLException, IOException { private void awardPrizesToPlayer(League league, LeagueSerieData serie, String player, boolean winner) {
int count = 0; int count = 0;
Collection<LeagueMatchResult> playerMatchesPlayedOn = getPlayerMatchesInSerie(league, serie, player); Collection<LeagueMatchResult> playerMatchesPlayedOn = getPlayerMatchesInSerie(league, serie, player);
for (LeagueMatchResult leagueMatch : playerMatchesPlayedOn) { for (LeagueMatchResult leagueMatch : playerMatchesPlayedOn) {
@@ -167,7 +167,8 @@ public class LeagueService {
else else
prize = serie.getPrizeForLeagueMatchLoser(count, playerMatchesPlayedOn.size()); prize = serie.getPrizeForLeagueMatchLoser(count, playerMatchesPlayedOn.size());
if (prize != null) if (prize != null)
_collectionsManager.addItemsToPlayerCollection(true, "Prize for winning league game", player, CollectionType.MY_CARDS, prize.getAll()); _collectionsManager.addItemsToPlayerCollection(true, "Prize for winning league game", player, CollectionType.MY_CARDS, prize.getAll());
} }
public synchronized Collection<LeagueMatchResult> getPlayerMatchesInSerie(League league, LeagueSerieData serie, String player) { public synchronized Collection<LeagueMatchResult> getPlayerMatchesInSerie(League league, LeagueSerieData serie, String player) {

View File

@@ -9,8 +9,6 @@ import com.gempukku.lotro.draft2.SoloDraftDefinitions;
import com.gempukku.lotro.game.*; import com.gempukku.lotro.game.*;
import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.game.formats.LotroFormatLibrary;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -90,7 +88,7 @@ public class SoloDraftLeagueData implements LeagueData {
} }
@Override @Override
public int process(CollectionsManager collectionsManager, List<PlayerStanding> leagueStandings, int oldStatus, int currentTime) throws SQLException, IOException { public int process(CollectionsManager collectionsManager, List<PlayerStanding> leagueStandings, int oldStatus, int currentTime) {
int status = oldStatus; int status = oldStatus;
if (status == 0) { if (status == 0) {

View File

@@ -5,6 +5,7 @@ import com.gempukku.lotro.db.DbCollectionDAO;
import com.gempukku.lotro.db.DbPlayerDAO; import com.gempukku.lotro.db.DbPlayerDAO;
import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
@@ -23,7 +24,7 @@ public class NewCollectionManagerTests
} }
//This is probably never needed anymore now that it's been ran once //This is probably never needed anymore now that it's been ran once
//@Test @Test
public void ConvertAllPlayerCollectionsTest() throws IOException, SQLException { public void ConvertAllPlayerCollectionsTest() throws IOException, SQLException {
var collDAO = new DbCollectionDAO(dbAccess, new CollectionSerializer()); var collDAO = new DbCollectionDAO(dbAccess, new CollectionSerializer());
var playerDAO = new DbPlayerDAO(dbAccess); var playerDAO = new DbPlayerDAO(dbAccess);