added getCards method - fixes update database issue

This commit is contained in:
betasteward 2015-09-03 16:05:53 -04:00
parent b9df27c292
commit c0e90b9d35
8 changed files with 68 additions and 2 deletions

View file

@ -776,7 +776,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
private void updateDatabase(boolean forceDBComparison, ServerState serverState) {
long cardDBVersion = CardRepository.instance.getContentVersionFromDB();
if (forceDBComparison || serverState.getCardsContentVersion() > cardDBVersion) {
List<String> classNames = CardRepository.instance.getClassNames();
List<String> classNames = client.getCards(); //CardRepository.instance.getClassNames();
List<CardInfo> cards = CardRepository.instance.getMissingCards(classNames);
CardRepository.instance.addCards(cards);
CardRepository.instance.setContentVersion(serverState.getCardsContentVersion());

View file

@ -112,7 +112,7 @@ public class Client {
}
return false;
}
private class ClientInitializer extends ChannelInitializer<SocketChannel> {
@Override
@ -196,6 +196,15 @@ public class Client {
return client.getServerState();
}
public List<String> getCards() {
try {
return clientMessageHandler.getCards();
} catch (Exception ex) {
logger.error("Error getting cards", ex);
}
return null;
}
public boolean submitDeck(UUID tableId, DeckCardLists deckCardLists) {
try {
return clientMessageHandler.submitDeck(tableId, deckCardLists);

View file

@ -26,6 +26,7 @@ import org.mage.network.messages.requests.ChatRoomIdRequest;
import org.mage.network.messages.requests.CheatRequest;
import org.mage.network.messages.requests.CreateTableRequest;
import org.mage.network.messages.requests.CreateTournamentRequest;
import org.mage.network.messages.requests.GetCardsRequest;
import org.mage.network.messages.requests.GetRoomRequest;
import org.mage.network.messages.requests.GetTournamentChatIdRequest;
import org.mage.network.messages.requests.GetTournamentRequest;
@ -99,6 +100,12 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler<ClientMess
return stringListQueue.take();
}
public List<String> getCards() throws Exception {
stringListQueue.clear();
ctx.writeAndFlush(new GetCardsRequest()).addListener(WriteListener.getInstance());
return stringListQueue.take();
}
public UUID getChatRoomId(UUID roomId) throws Exception {
uuidQueue.clear();
ctx.writeAndFlush(new ChatRoomIdRequest(roomId)).addListener(WriteListener.getInstance());

View file

@ -39,6 +39,7 @@ public interface MageServer {
ServerState getServerState();
List<String> getServerMessages();
List<String> getCards();
RoomView getRoom(UUID roomId);
TableView createTable(String sessionId, UUID roomId, MatchOptions options);
boolean joinTable(String sessionId, UUID roomId, UUID tableId, String name, String playerType, int skill, DeckCardLists deckList, String password);

View file

@ -0,0 +1,19 @@
package org.mage.network.messages.requests;
import io.netty.channel.ChannelHandlerContext;
import org.mage.network.handlers.WriteListener;
import org.mage.network.interfaces.MageServer;
import org.mage.network.messages.responses.GetCardsResponse;
/**
*
* @author BetaSteward
*/
public class GetCardsRequest extends ServerRequest {
@Override
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
ctx.writeAndFlush(new GetCardsResponse(server.getCards())).addListener(WriteListener.getInstance());
}
}

View file

@ -0,0 +1,24 @@
package org.mage.network.messages.responses;
import java.util.List;
import org.mage.network.handlers.client.ClientMessageHandler;
import org.mage.network.messages.ClientMessage;
/**
*
* @author BetaSteward
*/
public class GetCardsResponse extends ClientMessage {
private List<String> cards;
public GetCardsResponse(List<String> cards) {
this.cards = cards;
}
@Override
public void handleMessage(ClientMessageHandler handler) {
handler.receiveStringList(cards);
}
}

View file

@ -899,6 +899,11 @@ public class ServerMain implements MageServer {
// }
//
@Override
public List<String> getCards() {
return CardRepository.instance.getClassNames();
}
@Override
public List<String> getServerMessages() {
return ServerMessagesUtil.getInstance().getMessages();

View file

@ -282,6 +282,7 @@ public enum CardRepository {
return null;
}
//TODO: cache the results of this query
public List<String> getClassNames() {
List<String> names = new ArrayList<>();
try {