diff --git a/Mage.Common/src/mage/remote/SessionImpl.java b/Mage.Common/src/mage/remote/SessionImpl.java index 78a085ac135..51c1ed7b9f2 100644 --- a/Mage.Common/src/mage/remote/SessionImpl.java +++ b/Mage.Common/src/mage/remote/SessionImpl.java @@ -31,6 +31,10 @@ package mage.remote; import mage.MageException; import mage.cards.decks.DeckCardLists; import mage.cards.decks.InvalidDeckException; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; +import mage.cards.repository.ExpansionInfo; +import mage.cards.repository.ExpansionRepository; import mage.constants.Constants.SessionState; import mage.game.GameException; import mage.game.match.MatchOptions; @@ -165,6 +169,7 @@ public class SessionImpl implements Session { if (registerResult) { sessionState = SessionState.CONNECTED; serverState = server.getServerState(); + updateDatabase(); logger.info(new StringBuilder("Connected as ").append(this.getUserName()).append(" to MAGE server at ").append(connection.getHost()).append(":").append(connection.getPort()).toString()); client.connected(new StringBuilder("Connected as ").append(this.getUserName()).append(" to ").append(connection.getHost()).append(":").append(connection.getPort()).append(" ").toString()); return true; @@ -193,6 +198,18 @@ public class SessionImpl implements Session { return false; } + private void updateDatabase() { + List classNames = CardRepository.instance.getClassNames(); + List cards = server.getMissingCardsData(classNames); + CardRepository.instance.addCards(cards); + + List setCodes = ExpansionRepository.instance.getSetCodes(); + List expansions = server.getMissingExpansionData(setCodes); + for (ExpansionInfo expansion : expansions) { + ExpansionRepository.instance.add(expansion); + } + } + private void handleCannotConnectException(CannotConnectException ex) { logger.warn("Cannot connect", ex); Throwable t = ex.getCause(); @@ -1175,7 +1192,6 @@ public class SessionImpl implements Session { return false; } } - class MageAuthenticator extends Authenticator { private String username;