@Override public M maskGameForPlayer(final U game, final Player<ID> player) { M playerMaskedGame = newMaskedGame(); copyUnmaskedData(game, playerMaskedGame); Map<ID, Player<ID>> idMap = createIDMap(game); copyMaskedData(game, player, playerMaskedGame, idMap); return playerMaskedGame; }
protected void copyMaskedData(final U game, final Player<ID> player, final M playerMaskedGame, final Map<ID, Player<ID>> idMap) { final Class<ID> idClass = getIDClass(); }
@Override protected void copyUnmaskedData(final U game, final M playerMaskedGame) { super.copyUnmaskedData(game, playerMaskedGame); }
protected void copyUnmaskedData(final U game, final M playerMaskedGame) { playerMaskedGame.setCompletedTimestamp(convertTime(game.getCompletedTimestamp())); playerMaskedGame.setCreated(convertTime(game.getCreated())); playerMaskedGame.setLastUpdate(convertTime(game.getLastUpdate())); playerMaskedGame.getFeatures().addAll(game.getFeatures()); playerMaskedGame.setId(game.getIdAsString()); playerMaskedGame.setGamePhase(game.getGamePhase()); playerMaskedGame.setRound(game.getRound()); playerMaskedGame.setPreviousId(game.getPreviousIdAsString()); }
@Override protected void copyMaskedData(final IMPL game, final Player<ID> player, final M playerMaskedGame, final Map<ID, Player<ID>> idMap) { super.copyMaskedData(game, player, playerMaskedGame, idMap); playerMaskedGame.setMaskedForPlayerMD5(player.getMd5()); playerMaskedGame.setMaskedForPlayerID(player.getIdAsString()); game.getAllPlayers().forEach(p -> { playerMaskedGame.getPlayers().put(p.getMd5(), p.getDisplayName()); playerMaskedGame.getPlayerImages().put(p.getMd5(), p.getImageUrl()); playerMaskedGame.getPlayerProfiles().put(p.getMd5(), p.getProfileUrl()); playerMaskedGame.getPlayerStates().put(p.getMd5(), game.getPlayerStates().get(p.getId())); }); playerMaskedGame.setInitiatingPlayer(idMap.get(game.getInitiatingPlayer()).getMd5()); }
@Override protected void copyUnmaskedData(final IMPL game, final M playerMaskedGame) { super.copyUnmaskedData(game, playerMaskedGame); playerMaskedGame.setDeclinedTimestamp(convertTime(game.getDeclinedTimestamp())); playerMaskedGame.setRematchTimestamp(convertTime(game.getRematchTimestamp())); } }
@Override protected void copyMaskedData(final U game, final Player<ID> player, final M playerMaskedGame, final Map<ID, Player<ID>> idMap) { super.copyMaskedData(game, player, playerMaskedGame, idMap); playerMaskedGame.getPlayers().put(player.getMd5(), player.getDisplayName()); playerMaskedGame.getPlayerImages().put(player.getMd5(), player.getImageUrl()); playerMaskedGame.getPlayerProfiles().put(player.getMd5(), player.getProfileUrl()); }
public Game getGame(final ID playerID, final ID gameID) { P player = loadPlayer(playerID); IMPL game = loadGame(gameID); validatePlayerForGame(game, player); return gameMasker.maskGameForPlayer(game, player); } }
public M handleAction(final ID playerID, final ID gameID, final PARAMTYPE param) { P player = loadPlayer(playerID); IMPL game = loadGame(gameID); validatePlayerForGame(game, player); IMPL updatedGame = updateGameWithEligibilityWrapper(player, game, param); updatedGame = gamePublisher.publish(updatedGame, player); return gameMasker.maskGameForPlayer(updatedGame, player); }
private boolean publishGameToPlayer(final P player, final IMPL game) { logger.trace("Publishing game update on game " + game.getId() + " to player " + player.getId()); final boolean[] status = new boolean[]{false}; try { Broadcaster broadcaster = broadcasterFactory.getBroadcasterFactory() .lookup(LiveFeedService.PATH_ROOT + player.getIdAsString()); if (broadcaster != null) { WebSocketMessage message = new WebSocketMessage(); message.setMessageType(MessageType.Game); message.setGame(gameMasker.maskGameForPlayer(game, player)); broadcaster.broadcast(message); status[0] = true; } else { logger.trace( "Player {} is not connected to this server for {}.", player.getIdAsString(), game.getIdAsString()); } } catch (Exception e) { logger.error("Error publishing game " + game.getId() + " to player " + player.getId(), e); } publicationListeners.forEach(listener -> { try { listener.publishedGameUpdateToPlayer(player, game, status[0]); } catch (Exception e) { logger.error("Error publishing to publication listener", e); } }); return status[0]; }