mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-25 18:47:50 +01:00
Refactored TPSTable#insertAllTPS to an executable
This commit is contained in:
parent
9d550caa14
commit
62645b97d3
@ -90,7 +90,7 @@ public class BackupCopyTransaction extends RemoveEverythingTransaction {
|
||||
}
|
||||
|
||||
private void copyTPS() {
|
||||
db.getTpsTable().insertAllTPS(sourceDB.query(LargeFetchQueries.fetchAllTPSData()));
|
||||
copy(LargeStoreQueries::storeAllTPSData, LargeFetchQueries.fetchAllTPSData());
|
||||
}
|
||||
|
||||
private void copyUserInfo() {
|
||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.db.sql.queries;
|
||||
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.data.container.GeoInfo;
|
||||
import com.djrapitops.plan.data.container.TPS;
|
||||
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||
import com.djrapitops.plan.db.access.ExecBatchStatement;
|
||||
import com.djrapitops.plan.db.access.Executable;
|
||||
@ -187,4 +188,34 @@ public class LargeStoreQueries {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Executable storeAllTPSData(Map<UUID, List<TPS>> ofServers) {
|
||||
if (Verify.isEmpty(ofServers)) {
|
||||
return Executable.empty();
|
||||
}
|
||||
|
||||
return new ExecBatchStatement(TPSTable.INSERT_STATEMENT) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
// Every Server
|
||||
for (Map.Entry<UUID, List<TPS>> entry : ofServers.entrySet()) {
|
||||
UUID serverUUID = entry.getKey();
|
||||
// Every TPS Data point
|
||||
List<TPS> tpsList = entry.getValue();
|
||||
for (TPS tps : tpsList) {
|
||||
statement.setString(1, serverUUID.toString());
|
||||
statement.setLong(2, tps.getDate());
|
||||
statement.setDouble(3, tps.getTicksPerSecond());
|
||||
statement.setInt(4, tps.getPlayers());
|
||||
statement.setDouble(5, tps.getCPUUsage());
|
||||
statement.setLong(6, tps.getUsedMemory());
|
||||
statement.setDouble(7, tps.getEntityCount());
|
||||
statement.setDouble(8, tps.getChunksLoaded());
|
||||
statement.setLong(9, tps.getFreeDiskSpace());
|
||||
statement.addBatch();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -29,7 +29,6 @@ import com.djrapitops.plan.db.sql.parsing.Sql;
|
||||
import com.djrapitops.plan.db.sql.queries.OptionalFetchQueries;
|
||||
import com.djrapitops.plan.system.info.server.Server;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import org.apache.commons.text.TextStringBuilder;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
@ -58,26 +57,26 @@ public class TPSTable extends Table {
|
||||
public static final String CHUNKS = "chunks_loaded";
|
||||
public static final String FREE_DISK = "free_disk_space";
|
||||
|
||||
public static final String INSERT_STATEMENT = "INSERT INTO " + TABLE_NAME + " ("
|
||||
+ SERVER_ID + ", "
|
||||
+ DATE + ", "
|
||||
+ TPS + ", "
|
||||
+ PLAYERS_ONLINE + ", "
|
||||
+ CPU_USAGE + ", "
|
||||
+ RAM_USAGE + ", "
|
||||
+ ENTITIES + ", "
|
||||
+ CHUNKS + ", "
|
||||
+ FREE_DISK
|
||||
+ ") VALUES ("
|
||||
+ ServerTable.STATEMENT_SELECT_SERVER_ID + ", "
|
||||
+ "?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
|
||||
public TPSTable(SQLDB db) {
|
||||
super(TABLE_NAME, db);
|
||||
serverTable = db.getServerTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " ("
|
||||
+ SERVER_ID + ", "
|
||||
+ DATE + ", "
|
||||
+ TPS + ", "
|
||||
+ PLAYERS_ONLINE + ", "
|
||||
+ CPU_USAGE + ", "
|
||||
+ RAM_USAGE + ", "
|
||||
+ ENTITIES + ", "
|
||||
+ CHUNKS + ", "
|
||||
+ FREE_DISK
|
||||
+ ") VALUES ("
|
||||
+ serverTable.statementSelectServerID + ", "
|
||||
+ "?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
}
|
||||
|
||||
private final ServerTable serverTable;
|
||||
private String insertStatement;
|
||||
|
||||
public static String createTableSQL(DBType dbType) {
|
||||
return CreateTableParser.create(TABLE_NAME, dbType)
|
||||
@ -159,7 +158,7 @@ public class TPSTable extends Table {
|
||||
}
|
||||
|
||||
public void insertTPS(TPS tps) {
|
||||
execute(new ExecStatement(insertStatement) {
|
||||
execute(new ExecStatement(INSERT_STATEMENT) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, getServerUUID().toString());
|
||||
@ -263,36 +262,6 @@ public class TPSTable extends Table {
|
||||
});
|
||||
}
|
||||
|
||||
public void insertAllTPS(Map<UUID, List<TPS>> allTPS) {
|
||||
if (Verify.isEmpty(allTPS)) {
|
||||
return;
|
||||
}
|
||||
|
||||
executeBatch(new ExecStatement(insertStatement) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
// Every Server
|
||||
for (Map.Entry<UUID, List<TPS>> entry : allTPS.entrySet()) {
|
||||
UUID serverUUID = entry.getKey();
|
||||
// Every TPS Data point
|
||||
List<TPS> tpsList = entry.getValue();
|
||||
for (TPS tps : tpsList) {
|
||||
statement.setString(1, serverUUID.toString());
|
||||
statement.setLong(2, tps.getDate());
|
||||
statement.setDouble(3, tps.getTicksPerSecond());
|
||||
statement.setInt(4, tps.getPlayers());
|
||||
statement.setDouble(5, tps.getCPUUsage());
|
||||
statement.setLong(6, tps.getUsedMemory());
|
||||
statement.setDouble(7, tps.getEntityCount());
|
||||
statement.setDouble(8, tps.getChunksLoaded());
|
||||
statement.setLong(9, tps.getFreeDiskSpace());
|
||||
statement.addBatch();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Map<Integer, List<TPS>> getPlayersOnlineForServers(Collection<Server> servers) {
|
||||
if (servers.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
|
@ -43,7 +43,12 @@ public class SQLSaveOps extends SQLOps implements SaveOperations {
|
||||
|
||||
@Override
|
||||
public void insertTPS(Map<UUID, List<TPS>> ofServers) {
|
||||
tpsTable.insertAllTPS(ofServers);
|
||||
db.executeTransaction(new Transaction() {
|
||||
@Override
|
||||
protected void performOperations() {
|
||||
execute(LargeStoreQueries.storeAllTPSData(ofServers));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user