diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java
index c6d8c6f7b..fed8c52ec 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java
@@ -249,6 +249,7 @@ public abstract class SQLDB extends AbstractDatabase {
*
* Updates table columns to latest schema.
*/
+ @Deprecated
void createTables() throws DBInitException {
executeTransaction(new CreateTablesTransaction());
}
@@ -258,6 +259,7 @@ public abstract class SQLDB extends AbstractDatabase {
*
* @return Table array.
*/
+ @Deprecated
public Table[] getAllTables() {
return new Table[]{
serverTable, usersTable, userInfoTable, geoInfoTable,
@@ -272,6 +274,7 @@ public abstract class SQLDB extends AbstractDatabase {
*
* @return Tables in the order the data should be removed in.
*/
+ @Deprecated
public Table[] getAllTablesInRemoveOrder() {
return new Table[]{
settingsTable, geoInfoTable, nicknamesTable, killsTable,
@@ -409,88 +412,108 @@ public abstract class SQLDB extends AbstractDatabase {
transaction.executeTransaction(this);
}
+ @Deprecated
public UsersTable getUsersTable() {
return usersTable;
}
+ @Deprecated
public SessionsTable getSessionsTable() {
return sessionsTable;
}
+ @Deprecated
public KillsTable getKillsTable() {
return killsTable;
}
+ @Deprecated
public GeoInfoTable getGeoInfoTable() {
return geoInfoTable;
}
+ @Deprecated
public NicknamesTable getNicknamesTable() {
return nicknamesTable;
}
+ @Deprecated
public CommandUseTable getCommandUseTable() {
return commandUseTable;
}
+ @Deprecated
public TPSTable getTpsTable() {
return tpsTable;
}
+ @Deprecated
public SecurityTable getSecurityTable() {
return securityTable;
}
+ @Deprecated
public WorldTable getWorldTable() {
return worldTable;
}
+ @Deprecated
public WorldTimesTable getWorldTimesTable() {
return worldTimesTable;
}
+ @Deprecated
public ServerTable getServerTable() {
return serverTable;
}
+ @Deprecated
public UserInfoTable getUserInfoTable() {
return userInfoTable;
}
+ @Deprecated
public PingTable getPingTable() {
return pingTable;
}
+ @Deprecated
public SettingsTable getSettingsTable() {
return settingsTable;
}
@Override
+ @Deprecated
public CheckOperations check() {
return checkOps;
}
@Override
+ @Deprecated
public FetchOperations fetch() {
return fetchOps;
}
@Override
+ @Deprecated
public RemoveOperations remove() {
return removeOps;
}
@Override
+ @Deprecated
public SearchOperations search() {
return searchOps;
}
@Override
+ @Deprecated
public CountOperations count() {
return countOps;
}
@Override
+ @Deprecated
public SaveOperations save() {
return saveOps;
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/ContainerFetchQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/ContainerFetchQueries.java
new file mode 100644
index 000000000..bc4d2dce9
--- /dev/null
+++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/ContainerFetchQueries.java
@@ -0,0 +1,135 @@
+/*
+ * This file is part of Player Analytics (Plan).
+ *
+ * Plan is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License v3 as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Plan is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Plan. If not, see .
+ */
+package com.djrapitops.plan.db.sql.queries;
+
+import com.djrapitops.plan.data.container.Session;
+import com.djrapitops.plan.data.container.TPS;
+import com.djrapitops.plan.data.store.containers.NetworkContainer;
+import com.djrapitops.plan.data.store.containers.ServerContainer;
+import com.djrapitops.plan.data.store.keys.NetworkKeys;
+import com.djrapitops.plan.data.store.keys.ServerKeys;
+import com.djrapitops.plan.data.store.mutators.PlayersMutator;
+import com.djrapitops.plan.data.store.mutators.SessionsMutator;
+import com.djrapitops.plan.data.store.objects.DateObj;
+import com.djrapitops.plan.db.access.Query;
+import com.djrapitops.plan.system.cache.SessionCache;
+import com.djrapitops.plan.system.info.server.Server;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * Static method class for queries that return some kind of {@link com.djrapitops.plan.data.store.containers.DataContainer}.
+ *
+ * @author Rsl1122
+ */
+public class ContainerFetchQueries {
+
+ private ContainerFetchQueries() {
+ /* Static method class */
+ }
+
+ public static Query fetchNetworkContainer() {
+ return db -> {
+ ServerContainer bungeeContainer = db.query(getBungeeServerContainer());
+ NetworkContainer networkContainer = db.getNetworkContainerFactory().forBungeeContainer(bungeeContainer);
+ networkContainer.putCachingSupplier(NetworkKeys.BUKKIT_SERVERS, () ->
+ db.query(LargeFetchQueries.fetchPlanServerInformation()).values()
+ .stream().filter(Server::isNotProxy).collect(Collectors.toSet())
+ );
+ return networkContainer;
+ };
+ }
+
+ private static Query getBungeeServerContainer() {
+ return db -> {
+ Optional proxyInformation = db.query(OptionalFetchQueries.proxyServerInformation());
+ if (!proxyInformation.isPresent()) {
+ return new ServerContainer();
+ }
+
+ UUID serverUUID = proxyInformation.get().getUuid();
+ ServerContainer container = db.query(getServerContainer(serverUUID));
+ container.putCachingSupplier(ServerKeys.PLAYERS, db.fetch()::getAllPlayerContainers);
+ container.putCachingSupplier(ServerKeys.TPS, db.getTpsTable()::getNetworkOnlineData);
+ container.putSupplier(ServerKeys.WORLD_TIMES, null); // Additional Session information not supported
+ container.putSupplier(ServerKeys.PLAYER_KILLS, null);
+ container.putSupplier(ServerKeys.PLAYER_KILL_COUNT, null);
+
+ return container;
+ };
+ }
+
+ public static Query getServerContainer(UUID serverUUID) {
+ return db -> {
+ ServerContainer container = new ServerContainer();
+
+ Optional serverInfo = db.getServerTable().getServerInfo(serverUUID);
+ if (!serverInfo.isPresent()) {
+ return container;
+ }
+
+ container.putRawData(ServerKeys.SERVER_UUID, serverUUID);
+ container.putRawData(ServerKeys.NAME, serverInfo.get().getName());
+ container.putCachingSupplier(ServerKeys.PLAYERS, () -> db.fetch().getPlayerContainers(serverUUID));
+ container.putSupplier(ServerKeys.PLAYER_COUNT, () -> container.getUnsafe(ServerKeys.PLAYERS).size());
+
+ container.putCachingSupplier(ServerKeys.TPS, () -> db.getTpsTable().getTPSData(serverUUID));
+ container.putCachingSupplier(ServerKeys.PING, () -> PlayersMutator.forContainer(container).pings());
+ container.putCachingSupplier(ServerKeys.ALL_TIME_PEAK_PLAYERS, () -> {
+ Optional allTimePeak = db.getTpsTable().getAllTimePeak(serverUUID);
+ if (allTimePeak.isPresent()) {
+ TPS peak = allTimePeak.get();
+ return new DateObj<>(peak.getDate(), peak.getPlayers());
+ }
+ return null;
+ });
+ container.putCachingSupplier(ServerKeys.RECENT_PEAK_PLAYERS, () -> {
+ long twoDaysAgo = System.currentTimeMillis() - (TimeUnit.DAYS.toMillis(2L));
+ Optional lastPeak = db.getTpsTable().getPeakPlayerCount(serverUUID, twoDaysAgo);
+ if (lastPeak.isPresent()) {
+ TPS peak = lastPeak.get();
+ return new DateObj<>(peak.getDate(), peak.getPlayers());
+ }
+ return null;
+ });
+
+ container.putCachingSupplier(ServerKeys.COMMAND_USAGE, () -> db.getCommandUseTable().getCommandUse(serverUUID));
+ container.putCachingSupplier(ServerKeys.WORLD_TIMES, () -> db.getWorldTimesTable().getWorldTimesOfServer(serverUUID));
+
+ // Calculating getters
+ container.putCachingSupplier(ServerKeys.OPERATORS, () -> PlayersMutator.forContainer(container).operators());
+ container.putCachingSupplier(ServerKeys.SESSIONS, () -> {
+ List sessions = PlayersMutator.forContainer(container).getSessions();
+ if (serverUUID.equals(serverInfo.get().getUuid())) {
+ sessions.addAll(SessionCache.getActiveSessions().values());
+ }
+ return sessions;
+ });
+ container.putCachingSupplier(ServerKeys.PLAYER_KILLS, () -> SessionsMutator.forContainer(container).toPlayerKillList());
+ container.putCachingSupplier(ServerKeys.PLAYER_KILL_COUNT, () -> container.getUnsafe(ServerKeys.PLAYER_KILLS).size());
+ container.putCachingSupplier(ServerKeys.MOB_KILL_COUNT, () -> SessionsMutator.forContainer(container).toMobKillCount());
+ container.putCachingSupplier(ServerKeys.DEATH_COUNT, () -> SessionsMutator.forContainer(container).toDeathCount());
+
+ return container;
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java
index ad2034294..15b8ec6e7 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CheckOperations.java
@@ -18,15 +18,20 @@ package com.djrapitops.plan.system.database.databases.operation;
import java.util.UUID;
+@Deprecated
public interface CheckOperations {
-
+ @Deprecated
boolean isPlayerRegistered(UUID player);
+ @Deprecated
boolean isPlayerRegistered(UUID player, UUID server);
+ @Deprecated
boolean doesWebUserExists(String username);
+ @Deprecated
boolean isPlayerRegisteredOnThisServer(UUID player);
+ @Deprecated
boolean isServerInDatabase(UUID serverUUID);
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CountOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CountOperations.java
index d0906d695..9cf9d4add 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CountOperations.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/CountOperations.java
@@ -18,8 +18,9 @@ package com.djrapitops.plan.system.database.databases.operation;
import java.util.UUID;
+@Deprecated
public interface CountOperations {
-
+ @Deprecated
int getServerPlayerCount(UUID server);
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java
index 0df76caf1..518386b58 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/FetchOperations.java
@@ -63,6 +63,8 @@ public interface FetchOperations {
@Deprecated
ServerContainer getServerContainer(UUID serverUUID);
+ List getPlayerContainers(UUID serverUUID);
+
/**
* Used to get PlayerContainers of all players on the network, some limitations apply to DataContainer keys.
*
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java
index d6985df0e..be0a23af7 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/RemoveOperations.java
@@ -16,7 +16,8 @@
*/
package com.djrapitops.plan.system.database.databases.operation;
+@Deprecated
public interface RemoveOperations {
-
+ @Deprecated
void webUser(String name);
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SearchOperations.java b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SearchOperations.java
index ec4c2d1c2..6ff1b876a 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SearchOperations.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/database/databases/operation/SearchOperations.java
@@ -18,8 +18,9 @@ package com.djrapitops.plan.system.database.databases.operation;
import java.util.List;
+@Deprecated
public interface SearchOperations {
-
+ @Deprecated
List matchingPlayers(String search);
}
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 701ddb67b..a12ef80f4 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
@@ -19,23 +19,22 @@ package com.djrapitops.plan.system.database.databases.sql.operation;
import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.data.container.*;
import com.djrapitops.plan.data.store.containers.*;
-import com.djrapitops.plan.data.store.keys.*;
+import com.djrapitops.plan.data.store.keys.PerServerKeys;
+import com.djrapitops.plan.data.store.keys.PlayerKeys;
+import com.djrapitops.plan.data.store.keys.SessionKeys;
import com.djrapitops.plan.data.store.mutators.PerServerMutator;
-import com.djrapitops.plan.data.store.mutators.PlayersMutator;
import com.djrapitops.plan.data.store.mutators.SessionsMutator;
-import com.djrapitops.plan.data.store.objects.DateObj;
import com.djrapitops.plan.data.store.objects.Nickname;
import com.djrapitops.plan.data.time.WorldTimes;
import com.djrapitops.plan.db.SQLDB;
+import com.djrapitops.plan.db.sql.queries.ContainerFetchQueries;
import com.djrapitops.plan.db.sql.queries.LargeFetchQueries;
import com.djrapitops.plan.db.sql.queries.OptionalFetchQueries;
-import com.djrapitops.plan.system.cache.SessionCache;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plan.system.info.server.Server;
import com.djrapitops.plan.system.settings.config.Config;
import java.util.*;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
public class SQLFetchOps extends SQLOps implements FetchOperations {
@@ -46,85 +45,16 @@ public class SQLFetchOps extends SQLOps implements FetchOperations {
@Override
public NetworkContainer getNetworkContainer() {
- NetworkContainer networkContainer = db.getNetworkContainerFactory().forBungeeContainer(getBungeeServerContainer());
- networkContainer.putCachingSupplier(NetworkKeys.BUKKIT_SERVERS, () ->
- db.query(LargeFetchQueries.fetchPlanServerInformation()).values()
- .stream().filter(Server::isNotProxy).collect(Collectors.toSet())
- );
- return networkContainer;
- }
-
- private ServerContainer getBungeeServerContainer() {
- Optional proxyInformation = db.query(OptionalFetchQueries.proxyServerInformation());
- if (!proxyInformation.isPresent()) {
- return new ServerContainer();
- }
-
- ServerContainer container = getServerContainer(proxyInformation.get().getUuid());
- container.putCachingSupplier(ServerKeys.PLAYERS, this::getAllPlayerContainers);
- container.putCachingSupplier(ServerKeys.TPS, tpsTable::getNetworkOnlineData);
- container.putSupplier(ServerKeys.WORLD_TIMES, null); // Additional Session information not supported
- container.putSupplier(ServerKeys.PLAYER_KILLS, null);
- container.putSupplier(ServerKeys.PLAYER_KILL_COUNT, null);
-
- return container;
+ return db.query(ContainerFetchQueries.fetchNetworkContainer());
}
@Override
public ServerContainer getServerContainer(UUID serverUUID) {
- ServerContainer container = new ServerContainer();
-
- Optional serverInfo = serverTable.getServerInfo(serverUUID);
- if (!serverInfo.isPresent()) {
- return container;
- }
-
- container.putRawData(ServerKeys.SERVER_UUID, serverUUID);
- container.putRawData(ServerKeys.NAME, serverInfo.get().getName());
- container.putCachingSupplier(ServerKeys.PLAYERS, () -> getPlayerContainers(serverUUID));
- container.putSupplier(ServerKeys.PLAYER_COUNT, () -> container.getUnsafe(ServerKeys.PLAYERS).size());
-
- container.putCachingSupplier(ServerKeys.TPS, () -> tpsTable.getTPSData(serverUUID));
- container.putCachingSupplier(ServerKeys.PING, () -> PlayersMutator.forContainer(container).pings());
- container.putCachingSupplier(ServerKeys.ALL_TIME_PEAK_PLAYERS, () -> {
- Optional allTimePeak = tpsTable.getAllTimePeak(serverUUID);
- if (allTimePeak.isPresent()) {
- TPS peak = allTimePeak.get();
- return new DateObj<>(peak.getDate(), peak.getPlayers());
- }
- return null;
- });
- container.putCachingSupplier(ServerKeys.RECENT_PEAK_PLAYERS, () -> {
- long twoDaysAgo = System.currentTimeMillis() - (TimeUnit.DAYS.toMillis(2L));
- Optional lastPeak = tpsTable.getPeakPlayerCount(serverUUID, twoDaysAgo);
- if (lastPeak.isPresent()) {
- TPS peak = lastPeak.get();
- return new DateObj<>(peak.getDate(), peak.getPlayers());
- }
- return null;
- });
-
- container.putCachingSupplier(ServerKeys.COMMAND_USAGE, () -> commandUseTable.getCommandUse(serverUUID));
- container.putCachingSupplier(ServerKeys.WORLD_TIMES, () -> worldTimesTable.getWorldTimesOfServer(serverUUID));
-
- // Calculating getters
- container.putCachingSupplier(ServerKeys.OPERATORS, () -> PlayersMutator.forContainer(container).operators());
- container.putCachingSupplier(ServerKeys.SESSIONS, () -> {
- List sessions = PlayersMutator.forContainer(container).getSessions();
- if (serverUUID.equals(serverInfo.get().getUuid())) {
- sessions.addAll(SessionCache.getActiveSessions().values());
- }
- return sessions;
- });
- container.putCachingSupplier(ServerKeys.PLAYER_KILLS, () -> SessionsMutator.forContainer(container).toPlayerKillList());
- container.putCachingSupplier(ServerKeys.PLAYER_KILL_COUNT, () -> container.getUnsafe(ServerKeys.PLAYER_KILLS).size());
- container.putCachingSupplier(ServerKeys.MOB_KILL_COUNT, () -> SessionsMutator.forContainer(container).toMobKillCount());
- container.putCachingSupplier(ServerKeys.DEATH_COUNT, () -> SessionsMutator.forContainer(container).toDeathCount());
-
- return container;
+ return db.query(ContainerFetchQueries.getServerContainer(serverUUID));
}
- private List getPlayerContainers(UUID serverUUID) {
+ @Override
+ public List getPlayerContainers(UUID serverUUID) {
List containers = new ArrayList<>();
List serverUserInfo = userInfoTable.getServerUserInfo(serverUUID); // TODO Optimize and sort out