SteamWar/BungeeCore
Archiviert
13
2

Omni Replay #236

Zusammengeführt
Lixfel hat 9 Commits von replaying nach master 2021-12-28 19:45:04 +01:00 zusammengeführt
5 geänderte Dateien mit 38 neuen und 28 gelöschten Zeilen
Nur Änderungen aus Commit 8daedc4e74 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -160,7 +160,7 @@ public class BungeeCore extends Plugin {
@Override
public void onDisable(){
ErrorLogger.stop();
Statement.close();
Statement.closeAll();
try {
SteamwarDiscordBot.instance().getJda().shutdownNow();
SteamwarDiscordBot.instance().getJda().awaitStatus(JDA.Status.SHUTDOWN);

Datei anzeigen

@ -11,6 +11,8 @@ import java.util.stream.Collectors;
public class Fight {
private static final Statement getPage = new Statement("SELECT FightID, GameMode, Server, StartTime, Duration, BlueLeader, RedLeader, BlueSchem, RedSchem, Win, WinCondition FROM Fight WHERE Replay is not NULL ORDER BY FightID DESC LIMIT ?, ?");
private final int fightID;
private final String gameMode;
private final String server;
@ -54,15 +56,13 @@ public class Fight {
}
public static List<Fight> getPage(int page, int elementsPerPage) {
ResultSet rs = SQL.select("SELECT FightID, GameMode, Server, StartTime, Duration, BlueLeader, RedLeader, BlueSchem, RedSchem, Win, WinCondition FROM Fight WHERE Replay is not NULL ORDER BY FightID DESC LIMIT ?, ?", page * elementsPerPage, elementsPerPage);
List<Fight> fights = new ArrayList<>();
try {
List<Fight> fights = getPage.select(rs -> {
List<Fight> f = new ArrayList<>();
while(rs.next()){
fights.add(new Fight(rs));
f.add(new Fight(rs));
}
}catch (SQLException e) {
throw new SecurityException("Could not load Fights", e);
}
return f;
}, page * elementsPerPage, elementsPerPage);
List<FightPlayer> fightPlayers = FightPlayer.batchGet(fights.stream().map(f -> f.fightID).collect(Collectors.toSet()));
for(Fight fight : fights) {

Datei anzeigen

@ -30,14 +30,13 @@ public class FightPlayer {
if(fightIds.isEmpty())
return fightPlayers;
ResultSet rs = SQL.select("SELECT * FROM FightPlayer WHERE FightID IN (" + fightIds.stream().map(Object::toString).collect(Collectors.joining(", ")) + ")");
try {
while(rs.next()){
Statement batch = new Statement("SELECT * FROM FightPlayer WHERE FightID IN (" + fightIds.stream().map(Object::toString).collect(Collectors.joining(", ")) + ")");
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Hier draus könntest du ein try with resources machen, da Statement nun AutoCloseable ist.

Hier draus könntest du ein try with resources machen, da Statement nun AutoCloseable ist.
batch.select(rs -> {
while(rs.next())
fightPlayers.add(new FightPlayer(rs));
}
}catch (SQLException e) {
throw new SecurityException("Could not load FightPlayers", e);
}
return null;
});
batch.close();
return fightPlayers;
}

Datei anzeigen

@ -27,7 +27,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
public class Statement {
public class Statement implements AutoCloseable {
private static final List<Statement> statements = new ArrayList<>();
private static Connection con;
@ -49,7 +49,7 @@ public class Statement {
private static void reset(SQLException e) {
BungeeCore.get().getLogger().log(Level.WARNING, "SQL Exception thrown", e);
close();
closeAll();
connect(url, user, password);
try {
for (Statement statement : statements) {
@ -60,7 +60,17 @@ public class Statement {
}
}
public static void close() {
@Override
public void close() {
try {
st.close();
} catch (SQLException e) {
BungeeCore.get().getLogger().log(Level.INFO, "Could not close statement", e);
}
statements.remove(this);
}
public static void closeAll() {
for (Statement statement : statements) {
try {
statement.st.close();

Datei anzeigen

@ -37,11 +37,9 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.UUID;
import java.util.*;
import java.util.logging.Level;
import java.util.stream.Collectors;
public class SteamwarUser {
@ -179,13 +177,16 @@ public class SteamwarUser {
public static void batchCache(Set<Integer> ids) {
ids.removeIf(usersById::containsKey);
if(ids.isEmpty())
return;
if(!ids.isEmpty()) {
ResultSet rs = SQL.select("SELECT * FROM UserData WHERE id IN (" + ids.stream().map(Object::toString).collect(Collectors.joining(", ")) + ")");
while(dbInit(rs) != null) {
// nothing to do
}
}
Statement batch = new Statement("SELECT * FROM UserData WHERE id IN (" + ids.stream().map(Object::toString).collect(Collectors.joining(", ")) + ")");
batch.select(rs -> {
while(rs.next())
new SteamwarUser(rs);
return null;
});
batch.close();
}
public static SteamwarUser get(Long discordId) {