Refactored ServerTable#getBungeeInfo to a query:

This commit is contained in:
Rsl1122 2019-01-20 12:42:53 +02:00
parent 062ab088b3
commit 606844c92d
5 changed files with 18 additions and 42 deletions

View File

@ -20,6 +20,7 @@ import com.djrapitops.plan.db.access.Query;
import com.djrapitops.plan.db.access.QueryStatement; import com.djrapitops.plan.db.access.QueryStatement;
import com.djrapitops.plan.db.sql.tables.ServerTable; import com.djrapitops.plan.db.sql.tables.ServerTable;
import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.Server;
import org.apache.commons.lang3.math.NumberUtils;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -48,7 +49,7 @@ public class OptionalFetchQueries {
return new QueryStatement<Optional<Server>>(sql) { return new QueryStatement<Optional<Server>>(sql) {
@Override @Override
public void prepare(PreparedStatement statement) throws SQLException { public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, identifier); statement.setInt(1, NumberUtils.isParsable(identifier) ? Integer.parseInt(identifier) : -1);
statement.setString(2, identifier); statement.setString(2, identifier);
statement.setString(3, identifier); statement.setString(3, identifier);
statement.setBoolean(4, true); statement.setBoolean(4, true);
@ -70,4 +71,8 @@ public class OptionalFetchQueries {
}; };
} }
public static Query<Optional<Server>> proxyServerInformation() {
return db -> db.query(matchingServerIdentifier("BungeeCord"));
}
} }

View File

@ -205,38 +205,6 @@ public class ServerTable extends Table {
}); });
} }
/**
* Used to get BungeeCord WebServer info if present.
*
* @return information about Bungee server.
*/
public Optional<Server> getBungeeInfo() {
String sql = Select.from(tableName, "*")
.where(Col.NAME + "=?")
.toString();
return query(new QueryStatement<Optional<Server>>(sql) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, "BungeeCord");
}
@Override
public Optional<Server> processResults(ResultSet set) throws SQLException {
if (set.next()) {
return Optional.of(new Server(
set.getInt(Col.SERVER_ID.get()),
UUID.fromString(set.getString(Col.SERVER_UUID.get())),
set.getString(Col.NAME.get()),
set.getString(Col.WEBSERVER_ADDRESS.get()),
set.getInt(Col.MAX_PLAYERS.get())));
} else {
return Optional.empty();
}
}
});
}
public List<UUID> getServerUUIDs() { public List<UUID> getServerUUIDs() {
String sql = Select.from(tableName, Col.SERVER_UUID) String sql = Select.from(tableName, Col.SERVER_UUID)
.toString(); .toString();

View File

@ -27,6 +27,7 @@ import com.djrapitops.plan.db.sql.parsing.Column;
import com.djrapitops.plan.db.sql.parsing.Select; import com.djrapitops.plan.db.sql.parsing.Select;
import com.djrapitops.plan.db.sql.parsing.Sql; import com.djrapitops.plan.db.sql.parsing.Sql;
import com.djrapitops.plan.db.sql.parsing.TableSqlParser; import com.djrapitops.plan.db.sql.parsing.TableSqlParser;
import com.djrapitops.plan.db.sql.queries.single.OptionalFetchQueries;
import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.Server;
import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.api.TimeAmount;
import com.djrapitops.plugin.utilities.Verify; import com.djrapitops.plugin.utilities.Verify;
@ -266,11 +267,11 @@ public class TPSTable extends Table {
} }
public List<TPS> getNetworkOnlineData() { public List<TPS> getNetworkOnlineData() {
Optional<Server> bungeeInfo = serverTable.getBungeeInfo(); Optional<Server> proxyInfo = db.query(OptionalFetchQueries.proxyServerInformation());
if (!bungeeInfo.isPresent()) { if (!proxyInfo.isPresent()) {
return new ArrayList<>(); return new ArrayList<>();
} }
UUID bungeeUUID = bungeeInfo.get().getUuid(); UUID bungeeUUID = proxyInfo.get().getUuid();
String sql = "SELECT " + String sql = "SELECT " +
Col.DATE + ", " + Col.DATE + ", " +

View File

@ -28,6 +28,7 @@ import com.djrapitops.plan.data.store.objects.Nickname;
import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.data.time.WorldTimes;
import com.djrapitops.plan.db.SQLDB; import com.djrapitops.plan.db.SQLDB;
import com.djrapitops.plan.db.sql.queries.batch.LargeFetchQueries; import com.djrapitops.plan.db.sql.queries.batch.LargeFetchQueries;
import com.djrapitops.plan.db.sql.queries.single.OptionalFetchQueries;
import com.djrapitops.plan.system.cache.SessionCache; import com.djrapitops.plan.system.cache.SessionCache;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations; import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.Server;
@ -54,12 +55,12 @@ public class SQLFetchOps extends SQLOps implements FetchOperations {
} }
private ServerContainer getBungeeServerContainer() { private ServerContainer getBungeeServerContainer() {
Optional<Server> bungeeInfo = serverTable.getBungeeInfo(); Optional<Server> proxyInformation = db.query(OptionalFetchQueries.proxyServerInformation());
if (!bungeeInfo.isPresent()) { if (!proxyInformation.isPresent()) {
return new ServerContainer(); return new ServerContainer();
} }
ServerContainer container = getServerContainer(bungeeInfo.get().getUuid()); ServerContainer container = getServerContainer(proxyInformation.get().getUuid());
container.putCachingSupplier(ServerKeys.PLAYERS, this::getAllPlayerContainers); container.putCachingSupplier(ServerKeys.PLAYERS, this::getAllPlayerContainers);
container.putCachingSupplier(ServerKeys.TPS, tpsTable::getNetworkOnlineData); container.putCachingSupplier(ServerKeys.TPS, tpsTable::getNetworkOnlineData);
container.putSupplier(ServerKeys.WORLD_TIMES, null); // Additional Session information not supported container.putSupplier(ServerKeys.WORLD_TIMES, null); // Additional Session information not supported
@ -458,7 +459,7 @@ public class SQLFetchOps extends SQLOps implements FetchOperations {
@Override @Override
public Optional<Server> getBungeeInformation() { public Optional<Server> getBungeeInformation() {
return serverTable.getBungeeInfo(); return db.query(OptionalFetchQueries.proxyServerInformation());
} }
@Override @Override

View File

@ -18,6 +18,7 @@ package com.djrapitops.plan.db;
import com.djrapitops.plan.api.exceptions.database.DBInitException; import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.db.sql.queries.batch.LargeFetchQueries; import com.djrapitops.plan.db.sql.queries.batch.LargeFetchQueries;
import com.djrapitops.plan.db.sql.queries.single.OptionalFetchQueries;
import com.djrapitops.plan.db.sql.tables.ServerTable; import com.djrapitops.plan.db.sql.tables.ServerTable;
import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.Server;
import org.junit.BeforeClass; import org.junit.BeforeClass;
@ -56,7 +57,7 @@ public class SQLiteTest extends CommonDBTest {
public void testServerTableBungeeSave() throws DBInitException { public void testServerTableBungeeSave() throws DBInitException {
ServerTable serverTable = db.getServerTable(); ServerTable serverTable = db.getServerTable();
Optional<Server> bungeeInfo = serverTable.getBungeeInfo(); Optional<Server> bungeeInfo = db.query(OptionalFetchQueries.proxyServerInformation());
assertFalse(bungeeInfo.isPresent()); assertFalse(bungeeInfo.isPresent());
UUID bungeeUUID = UUID.randomUUID(); UUID bungeeUUID = UUID.randomUUID();
@ -67,7 +68,7 @@ public class SQLiteTest extends CommonDBTest {
bungeeCord.setId(2); bungeeCord.setId(2);
bungeeInfo = serverTable.getBungeeInfo(); bungeeInfo = db.query(OptionalFetchQueries.proxyServerInformation());
assertTrue(bungeeInfo.isPresent()); assertTrue(bungeeInfo.isPresent());
assertEquals(bungeeCord, bungeeInfo.get()); assertEquals(bungeeCord, bungeeInfo.get());