Transfer DAO is now caching the information about undelivered packages.

This commit is contained in:
marcins78@gmail.com
2012-12-12 14:01:49 +00:00
parent ea68584dab
commit 4b46bcc8c6
2 changed files with 45 additions and 1 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}
}