diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CachedTransferDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CachedTransferDAO.java new file mode 100644 index 000000000..e5c5ef5a1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/CachedTransferDAO.java @@ -0,0 +1,40 @@ +package com.gempukku.lotro.collection; + +import com.gempukku.lotro.game.CardCollection; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class CachedTransferDAO implements TransferDAO { + private TransferDAO _delegate; + private Set _playersWithoutDelivery = Collections.synchronizedSet(new HashSet()); + + public CachedTransferDAO(TransferDAO delegate) { + _delegate = delegate; + } + + public boolean hasUndeliveredPackages(String player) { + if (_playersWithoutDelivery.contains(player)) + return false; + boolean value = _delegate.hasUndeliveredPackages(player); + if (!value) + _playersWithoutDelivery.add(player); + return value; + } + + public Map consumeUndeliveredPackages(String player) { + return _delegate.consumeUndeliveredPackages(player); + } + + public void addTransferTo(boolean notifyPlayer, String player, String reason, String collectionName, int currency, CardCollection items) { + if (notifyPlayer) + _playersWithoutDelivery.remove(player); + _delegate.addTransferTo(notifyPlayer, player, reason, collectionName, currency, items); + } + + public void addTransferFrom(String player, String reason, String collectionName, int currency, CardCollection items) { + _delegate.addTransferFrom(player, reason, collectionName, currency, items); + } +} diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/provider/DaoBuilder.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/provider/DaoBuilder.java index 79d5c3849..493baa2c4 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/provider/DaoBuilder.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/provider/DaoBuilder.java @@ -1,5 +1,6 @@ package com.gempukku.lotro.server.provider; +import com.gempukku.lotro.collection.CachedTransferDAO; import com.gempukku.lotro.collection.CollectionSerializer; import com.gempukku.lotro.collection.TransferDAO; import com.gempukku.lotro.db.*; @@ -29,6 +30,9 @@ public class DaoBuilder { objectMap.put(DeckDAO.class, new DbDeckDAO(dbAccess, library)); objectMap.put(CollectionDAO.class, new DbCollectionDAO(dbAccess, collectionSerializer)); objectMap.put(PlayerDAO.class, new DbPlayerDAO(dbAccess)); - objectMap.put(TransferDAO.class, new DbTransferDAO(dbAccess)); + + DbTransferDAO dbTransferDao = new DbTransferDAO(dbAccess); + CachedTransferDAO transferDao = new CachedTransferDAO(dbTransferDao); + objectMap.put(TransferDAO.class, transferDao); } }