From e23c3f66003106ec9a82633d423d6f236ad3015a Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Mon, 22 Jan 2018 01:14:03 -0500 Subject: [PATCH] Increment old stats table for ONLY pre-existing stats to solve value cap issue --- .../src/mineplex/core/stats/StatsManager.java | 2 ++ .../mineplex/core/stats/StatsRepository.java | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java index 093f33542..031058156 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java @@ -99,11 +99,13 @@ public class StatsManager extends MiniClientPlugin//MiniDbClientPlu save(_statUploadQueue, map -> { //_repository.saveStats(map); + _repository.saveOnlyExisting(map); _leaderboard.handleStatIncrease(map); }, "increment"); save(_statUploadQueueOverRidable, map -> { //_repository.saveStats(map, true); + _repository.saveOnlyExisting(map); _leaderboard.handleStatIncrease(map); }, "override"); }); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java index c92df94a9..4f6e38ab5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; import java.util.function.Consumer; @@ -135,6 +136,33 @@ public class StatsRepository extends RepositoryBase e.printStackTrace(); } } + + public void saveOnlyExisting(Map> uploadQueue) + { + try (Connection c = getConnection(); + PreparedStatement ps = c.prepareStatement("UPDATE accountStat SET value=value+? WHERE accountId=? AND statId=?;"); + ) + { + for (Entry> accountEntry : uploadQueue.entrySet()) + { + int accountId = accountEntry.getKey(); + for (Entry statEntry : accountEntry.getValue().entrySet()) + { + int statId = statEntry.getKey(); + long delta = statEntry.getValue(); + ps.setLong(1, delta); + ps.setInt(2, accountId); + ps.setInt(3, statId); + ps.addBatch(); + } + } + ps.executeBatch(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } /** * Saves the given stats