Transfer DAO is now caching the information about undelivered packages.
This commit is contained in:
@@ -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<String> _playersWithoutDelivery = Collections.synchronizedSet(new HashSet<String>());
|
||||
|
||||
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<String, ? extends CardCollection> 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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user