LiteFlags/src/main/java/com/liteflags/data/database/Database.java

234 lines
7.2 KiB
Java
Raw Normal View History

2021-04-04 15:48:59 +00:00
package com.liteflags.data.database;
import com.liteflags.LiteFlags;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.UUID;
public class Database {
public static void createTables() {
String player_flags = "CREATE TABLE IF NOT EXISTS player_flags (\n id INTEGER NOT NULL AUTO_INCREMENT,\n uuid VARCHAR(36) NOT NULL,\n expire_time INTEGER(12),\n reason VARCHAR(256) NOT NULL,\n flagged_by VARCHAR(16) NOT NULL,\n time_flagged INTEGER(16) NOT NULL,\n flag_length VARCHAR(36) NOT NULL,\n PRIMARY KEY(ID)\n);";
String player_cache = "CREATE TABLE IF NOT EXISTS player_cache (\n uuid VARCHAR(36) NOT NULL,\n player_name VARCHAR(16),\n PRIMARY KEY(uuid)\n);";
try {
Statement statement = DatabaseConnection.getConnection().createStatement();
statement.execute(player_flags);
statement.execute(player_cache);
} catch (SQLException var3) {
var3.printStackTrace();
}
}
public static void addFlag(UUID uuid, long expireTime, String reason, String flaggedBy, String flagLength) {
int timeFlagged = (int)(System.currentTimeMillis() / 1000L);
String sql = "INSERT INTO player_flags (uuid, expire_time, reason, flagged_by, time_flagged, flag_length) VALUES (?, ?, ?, ?, ?, ?)";
try {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
Throwable var9 = null;
try {
statement.setString(1, uuid.toString());
statement.setLong(2, expireTime);
statement.setString(3, reason);
statement.setString(4, flaggedBy);
statement.setInt(5, timeFlagged);
statement.setString(6, flagLength);
statement.execute();
} catch (Throwable var19) {
var9 = var19;
throw var19;
} finally {
if (statement != null) {
if (var9 != null) {
try {
statement.close();
} catch (Throwable var18) {
var9.addSuppressed(var18);
}
} else {
statement.close();
}
}
}
} catch (SQLException var21) {
var21.printStackTrace();
}
}
public static void removeFlag(UUID uuid, int id) {
String sql = "DELETE FROM player_flags WHERE uuid = ? AND id = ?";
try {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
Throwable var4 = null;
try {
statement.setString(1, uuid.toString());
statement.setInt(2, id);
statement.executeUpdate();
} catch (Throwable var14) {
var4 = var14;
throw var14;
} finally {
if (statement != null) {
if (var4 != null) {
try {
statement.close();
} catch (Throwable var13) {
var4.addSuppressed(var13);
}
} else {
statement.close();
}
}
}
} catch (SQLException var16) {
var16.printStackTrace();
}
}
public static Integer countFlags(UUID uuid) {
int i = 0;
try {
for(ResultSet resultSet = getPlayerFlags(uuid); resultSet.next(); ++i) {
}
} catch (SQLException var3) {
var3.printStackTrace();
}
return i;
}
public static void removePlayerCache(UUID uuid) {
String sql = "DELETE FROM player_cache WHERE uuid = ?";
try {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
Throwable var3 = null;
try {
statement.setString(1, uuid.toString());
statement.executeUpdate();
} catch (Throwable var13) {
var3 = var13;
throw var13;
} finally {
if (statement != null) {
if (var3 != null) {
try {
statement.close();
} catch (Throwable var12) {
var3.addSuppressed(var12);
}
} else {
statement.close();
}
}
}
} catch (SQLException var15) {
var15.printStackTrace();
}
}
public static boolean hasFlags(UUID u) {
try {
if (getStringResult("SELECT * FROM player_flags WHERE uuid = ?", u.toString()).next()) {
return true;
}
} catch (SQLException var2) {
var2.printStackTrace();
}
return false;
}
public static void addPlayerCache(UUID uuid, String playerName) {
String sql = "INSERT INTO player_cache (uuid, player_name) VALUES (?, ?) ON DUPLICATE KEY UPDATE player_name = ?";
try {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
Throwable var4 = null;
try {
statement.setString(1, uuid.toString());
statement.setString(2, playerName);
statement.setString(3, playerName);
statement.execute();
} catch (Throwable var14) {
var4 = var14;
throw var14;
} finally {
if (statement != null) {
if (var4 != null) {
try {
statement.close();
} catch (Throwable var13) {
var4.addSuppressed(var13);
}
} else {
statement.close();
}
}
}
} catch (SQLException var16) {
var16.printStackTrace();
}
}
public static boolean inPlayerCache(UUID uuid) {
try {
if (getStringResult("SELECT * FROM player_cache WHERE uuid = ?", uuid.toString()).next()) {
return true;
}
} catch (SQLException var2) {
var2.printStackTrace();
}
return false;
}
public static String getFlagReason(UUID uuid, int id) {
try {
ResultSet resultSet = getStringResult("SELECT reason FROM player_flags WHERE uuid = ? AND id = " + id, uuid.toString());
if (resultSet.next()) {
return resultSet.getString("reason");
}
} catch (SQLException var3) {
var3.printStackTrace();
}
return null;
}
public static ResultSet getPlayerFlags(UUID uuid) throws SQLException {
return getStringResult("SELECT * FROM player_flags WHERE uuid = ? ORDER BY id DESC LIMIT " + LiteFlags.getInstance().getConfig().getInt("FlagsHistory.ListLimit"), uuid.toString());
}
public static ResultSet getActiveTime(UUID uuid) throws SQLException {
return getStringResult("SELECT expire_time, flagged_by FROM player_flags WHERE uuid = ?", uuid.toString());
}
private static ResultSet getStringResult(String query, String... parameters) throws SQLException {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(query);
for(int i = 1; i < parameters.length + 1; ++i) {
statement.setString(i, parameters[i - 1]);
}
return statement.executeQuery();
}
}