From 7c45564fa9ebeb725f4ab3e04637f1dc9ffe5477 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sun, 20 Jan 2019 11:44:54 +0200 Subject: [PATCH] Refactored NicknamesTable#getAllNicknamesUnmapped to a query --- .../sql/queries/batch/LargeFetchQueries.java | 29 ++++++++++++++++++ .../plan/db/sql/tables/NicknamesTable.java | 30 ------------------- .../databases/sql/operation/SQLFetchOps.java | 6 ++-- 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/batch/LargeFetchQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/batch/LargeFetchQueries.java index 2c2daa605..dc92ee9ed 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/batch/LargeFetchQueries.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/batch/LargeFetchQueries.java @@ -186,4 +186,33 @@ public class LargeFetchQueries { }; } + /** + * Query database for all nickname data. + * + * @return Map: Player UUID - List of nicknames. + */ + public static Query>> fetchAllNicknameDataByPlayerUUIDs() { + String sql = "SELECT " + + NicknamesTable.Col.NICKNAME + ", " + + NicknamesTable.Col.LAST_USED + ", " + + NicknamesTable.Col.UUID + ", " + + NicknamesTable.Col.SERVER_UUID + + " FROM " + NicknamesTable.TABLE_NAME; + return new QueryAllStatement>>(sql, 5000) { + @Override + public Map> processResults(ResultSet set) throws SQLException { + Map> map = new HashMap<>(); + while (set.next()) { + UUID uuid = UUID.fromString(set.getString(NicknamesTable.Col.UUID.get())); + UUID serverUUID = UUID.fromString(set.getString(NicknamesTable.Col.SERVER_UUID.get())); + List nicknames = map.computeIfAbsent(uuid, x -> new ArrayList<>()); + nicknames.add(new Nickname( + set.getString(NicknamesTable.Col.NICKNAME.get()), set.getLong(NicknamesTable.Col.LAST_USED.get()), serverUUID + )); + } + return map; + } + }; + } + } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/NicknamesTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/NicknamesTable.java index 46034d221..05e14ca30 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/NicknamesTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/NicknamesTable.java @@ -157,36 +157,6 @@ public class NicknamesTable extends UserUUIDTable { }); } - /** - * Get nicknames of all users but doesn't map them by Server. - * - * @return a {@code Map} with all nicknames of all users - * - */ - public Map> getAllNicknamesUnmapped() { - String sql = "SELECT " + - Col.NICKNAME + ", " + - Col.LAST_USED + ", " + - Col.UUID + ", " + - Col.SERVER_UUID + - " FROM " + tableName; - return query(new QueryAllStatement>>(sql, 5000) { - @Override - public Map> processResults(ResultSet set) throws SQLException { - Map> map = new HashMap<>(); - while (set.next()) { - UUID uuid = UUID.fromString(set.getString(Col.UUID.get())); - UUID serverUUID = UUID.fromString(set.getString(Col.SERVER_UUID.get())); - List nicknames = map.computeIfAbsent(uuid, x -> new ArrayList<>()); - nicknames.add(new Nickname( - set.getString(Col.NICKNAME.get()), set.getLong(Col.LAST_USED.get()), serverUUID - )); - } - return map; - } - }); - } - public void saveUserName(UUID uuid, Nickname name) { List saved = getNicknameInformation(uuid); if (saved.contains(name)) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java index ca1760b36..95f457989 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/sql/operation/SQLFetchOps.java @@ -124,9 +124,9 @@ public class SQLFetchOps extends SQLOps implements FetchOperations { List serverUserInfo = userInfoTable.getServerUserInfo(serverUUID); Map timesKicked = usersTable.getAllTimesKicked(); - Map> geoInfo = db.query(LargeFetchQueries.fetchAllGeoInfoData()); + Map> geoInfo = db.query(LargeFetchQueries.fetchAllGeoInfoData()); // TODO Optimize Map> allPings = pingTable.getAllPings(); - Map> allNicknames = nicknamesTable.getAllNicknamesUnmapped(); + Map> allNicknames = db.query(LargeFetchQueries.fetchAllNicknameDataByPlayerUUIDs()); // TODO Optimize Map> sessions = sessionsTable.getSessionInfoOfServer(serverUUID); Map>> map = new HashMap<>(); @@ -191,7 +191,7 @@ public class SQLFetchOps extends SQLOps implements FetchOperations { Map timesKicked = usersTable.getAllTimesKicked(); Map> geoInfo = db.query(LargeFetchQueries.fetchAllGeoInfoData()); Map> allPings = pingTable.getAllPings(); - Map> allNicknames = nicknamesTable.getAllNicknamesUnmapped(); + Map> allNicknames = db.query(LargeFetchQueries.fetchAllNicknameDataByPlayerUUIDs()); Map>> sessions = sessionsTable.getAllSessions(false); Map> allUserInfo = userInfoTable.getAllUserInfo();