From 9dd7c5925c57587be78c2b5cb09c965fc8e72fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz> Date: Tue, 21 Jun 2016 15:23:55 +0200 Subject: [PATCH] #374 Fixed game records sync doubling --- core/src/cz/nic/tablexia/model/game/GameDAO.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/src/cz/nic/tablexia/model/game/GameDAO.java b/core/src/cz/nic/tablexia/model/game/GameDAO.java index 3f4ca57b1..43bd4f7b4 100644 --- a/core/src/cz/nic/tablexia/model/game/GameDAO.java +++ b/core/src/cz/nic/tablexia/model/game/GameDAO.java @@ -157,7 +157,11 @@ public class GameDAO { public static final String GAME_SELECT_FOR_USER_AND_DEFINITION = "SELECT id, user_id, difficulty_number, game_number, random_seed, start_time, end_time FROM game WHERE user_id = ? AND game_number = ? AND end_time IS NOT NULL AND end_time != 0 ORDER BY start_time ASC"; public static final String GAME_SELECT_COUNT_FOR_GAME = "SELECT count(id) FROM game WHERE game_number = ? AND user_id = ?"; public static final String GAME_SELECT_ALL_FOR_USER_SYNC = "SELECT id, user_id, difficulty_number, game_number, random_seed, start_time, end_time FROM game where user_id = ? AND sync_at is null"; + public static final String GAME_SELECT_BY_START_AND_END = "SELECT id FROM game WHERE user_id = ? AND start_time = ? AND end_time = ?"; + public static final String GAME_SELECT_BY_START_AND_NULL_END = "SELECT id FROM game WHERE user_id = ? AND start_time = ? AND end_time IS NULL"; + + public static final String GAME_SELECT_LAST_SCORES_FOR_USER_AND_GAME = "SELECT value FROM game_score INNER JOIN game ON game_score.game_id=game.id AND game.user_id=? AND game.game_number=? WHERE game_score.key=? AND end_time IS NOT NULL ORDER BY game_id DESC LIMIT 1"; public static final String GAME_SELECT_FOR_RANK_MANAGER = "SELECT id, difficulty_number, game_number, start_time, end_time FROM game WHERE user_id = ? AND end_time IS NOT NULL AND end_time != 0 ORDER BY end_time ASC"; @@ -222,10 +226,17 @@ public class GameDAO { } public static Long selectGameByTimes(long userId, long startTime, long endTime) throws SQLException { - PreparedStatement statement = TablexiaStorage.getInstance().prepareStatement(GAME_SELECT_BY_START_AND_END); + // workaround for sync error -> serialized JSON from server contains 0 instead of NULL +// PreparedStatement statement = TablexiaStorage.getInstance().prepareStatement(GAME_SELECT_BY_START_AND_END); + PreparedStatement statement = TablexiaStorage.getInstance().prepareStatement(endTime != 0 ? GAME_SELECT_BY_START_AND_END : GAME_SELECT_BY_START_AND_NULL_END); statement.setLong(1, userId); statement.setLong(2, startTime); - statement.setLong(3, endTime); + + // workaround for sync error -> serialized JSON from server contains 0 instead of NULL +// statement.setLong(3, endTime); + if (endTime != 0) { + statement.setLong(3, endTime); + } Long gameId = null; ResultSet resultSet = statement.executeQuery(); -- GitLab