mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-09-19 18:21:00 +02:00
UsersTable, processing
This commit is contained in:
parent
a4ae93390c
commit
f635ccbf0a
@ -1,7 +1,10 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.Session;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
@ -16,11 +19,13 @@ import java.util.UUID;
|
||||
public class SessionCache {
|
||||
|
||||
private static final Map<UUID, Session> activeSessions = new HashMap<>();
|
||||
protected final Plan plugin;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*/
|
||||
public SessionCache() {
|
||||
public SessionCache(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void cacheSession(UUID uuid, Session session) {
|
||||
@ -33,25 +38,11 @@ public class SessionCache {
|
||||
return;
|
||||
}
|
||||
session.endSession(time);
|
||||
// TODO DB Save the session.
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a session for a player at the current moment.
|
||||
*
|
||||
* @param uuid UUID of the player.
|
||||
*/
|
||||
@Deprecated
|
||||
public void startSession(UUID uuid) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Ends a session for a player at the current moment.
|
||||
*
|
||||
* @param uuid UUID of the player.
|
||||
*/
|
||||
@Deprecated
|
||||
public void endSession(UUID uuid) {
|
||||
try {
|
||||
plugin.getDB().getSessionsTable().saveSession(uuid, session);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.Action;
|
||||
import main.java.com.djrapitops.plan.database.tables.Actions;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Processor for inserting a FIRST_LOGOUT Action.
|
||||
*
|
||||
* @author Rsl1122
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public class FirstLeaveProcessor extends PlayerProcessor {
|
||||
|
||||
private final Action leaveAction;
|
||||
|
||||
public FirstLeaveProcessor(UUID uuid, long time, int messagesSent) {
|
||||
super(uuid);
|
||||
leaveAction = new Action(time, Actions.FIRST_LOGOUT, "Messages sent: " + messagesSent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process() {
|
||||
try {
|
||||
Plan.getInstance().getDB().getActionsTable().insertAction(getUUID(), leaveAction);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
@ -4,8 +4,11 @@
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.GeolocationCacheHandler;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -26,6 +29,10 @@ public class IPUpdateProcessor extends PlayerProcessor {
|
||||
public void process() {
|
||||
UUID uuid = getUUID();
|
||||
String country = GeolocationCacheHandler.getCountry(ip);
|
||||
// TODO DB Update IP & Geolocation
|
||||
try {
|
||||
Plan.getInstance().getDB().getIpsTable().updateIP(uuid, ip, country);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
@ -4,6 +4,10 @@
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -19,6 +23,10 @@ public class KickProcessor extends PlayerProcessor {
|
||||
@Override
|
||||
public void process() {
|
||||
UUID uuid = getUUID();
|
||||
// TODO Update DB Kick +1
|
||||
try {
|
||||
Plan.getInstance().getDB().getUsersTable().kicked(uuid);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
@ -4,6 +4,11 @@
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -25,6 +30,12 @@ public class NameProcessor extends PlayerProcessor {
|
||||
@Override
|
||||
public void process() {
|
||||
UUID uuid = getUUID();
|
||||
// TODO DB Update Name & Nicknames.
|
||||
Database db = Plan.getInstance().getDB();
|
||||
try {
|
||||
db.getUsersTable().updateName(uuid, playerName);
|
||||
db.getNicknamesTable().saveUserName(uuid, displayName);
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* //TODO Class Javadoc Comment
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class OPProcessor extends PlayerProcessor {
|
||||
|
||||
private final boolean banned;
|
||||
|
||||
public OPProcessor(UUID uuid, boolean banned) {
|
||||
super(uuid);
|
||||
this.banned = banned;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process() {
|
||||
UUID uuid = getUUID();
|
||||
// TODO DB Update Ban status
|
||||
}
|
||||
}
|
@ -4,8 +4,14 @@
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.player;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.Action;
|
||||
import main.java.com.djrapitops.plan.data.listeners.PlanPlayerListener;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.tables.Actions;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -17,19 +23,31 @@ public class RegisterProcessor extends PlayerProcessor {
|
||||
|
||||
private final long time;
|
||||
private final int playersOnline;
|
||||
private final String name;
|
||||
|
||||
public RegisterProcessor(UUID uuid, long time, int playersOnline) {
|
||||
private final PlanPlayerListener listener;
|
||||
|
||||
public RegisterProcessor(PlanPlayerListener listener, UUID uuid, long time, String name, int playersOnline) {
|
||||
super(uuid);
|
||||
this.listener = listener;
|
||||
this.time = time;
|
||||
this.playersOnline = playersOnline;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process() {
|
||||
UUID uuid = getUUID();
|
||||
if (Plan.getInstance().getDB().wasSeenBefore(uuid)) {
|
||||
Database db = Plan.getInstance().getDB();
|
||||
if (db.wasSeenBefore(uuid)) {
|
||||
return;
|
||||
}
|
||||
// TODO DB Register
|
||||
listener.addFirstLeaveCheck(uuid);
|
||||
try {
|
||||
db.getUsersTable().registerUser(uuid, time, name);
|
||||
db.getActionsTable().insertAction(uuid, new Action(time, Actions.REGISTERED, "Online: " + playersOnline + " Players"));
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
@ -38,6 +38,7 @@ public class PlanChatListener implements Listener {
|
||||
}
|
||||
|
||||
Player p = event.getPlayer();
|
||||
// TODO NameCache to DataCache
|
||||
plugin.addToProcessQueue(new NameProcessor(p.getUniqueId(), p.getName(), p.getDisplayName()));
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -29,6 +31,8 @@ public class PlanPlayerListener implements Listener {
|
||||
private final Plan plugin;
|
||||
private final DataCache cache;
|
||||
|
||||
private final Set<UUID> playersWithFirstSession;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
@ -37,6 +41,7 @@ public class PlanPlayerListener implements Listener {
|
||||
public PlanPlayerListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
cache = plugin.getDataCache();
|
||||
playersWithFirstSession = new HashSet<>();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
@ -95,9 +100,9 @@ public class PlanPlayerListener implements Listener {
|
||||
cache.cacheSession(uuid, Session.start(time, world, gm));
|
||||
|
||||
plugin.addToProcessQueue(
|
||||
new RegisterProcessor(uuid, time, playersOnline), //TODO Add required variables after UsersTable is done.
|
||||
new RegisterProcessor(this, uuid, time, playerName, playersOnline),
|
||||
new IPUpdateProcessor(uuid, ip),
|
||||
new NameProcessor(uuid, playerName, displayName),
|
||||
new NameProcessor(uuid, playerName, displayName), // TODO NameCache to DataCache
|
||||
new DBCommitProcessor(plugin.getDB())
|
||||
);
|
||||
}
|
||||
@ -120,5 +125,16 @@ public class PlanPlayerListener implements Listener {
|
||||
new BanProcessor(uuid, player.isBanned()),
|
||||
new EndSessionProcessor(uuid, time)
|
||||
);
|
||||
|
||||
int messagesSent = 0; // TODO messages Sent on first session
|
||||
|
||||
if (playersWithFirstSession.contains(uuid)) {
|
||||
plugin.addToProcessQueue(new FirstLeaveProcessor(uuid, time, messagesSent));
|
||||
}
|
||||
}
|
||||
|
||||
// TODO MOVE TO DATACACHE
|
||||
public void addFirstLeaveCheck(UUID uuid) {
|
||||
playersWithFirstSession.add(uuid);
|
||||
}
|
||||
}
|
||||
|
@ -328,4 +328,8 @@ public abstract class Database {
|
||||
}
|
||||
|
||||
public abstract void commit() throws SQLException;
|
||||
|
||||
public ActionsTable getActionsTable() {
|
||||
return actionsTable;
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,8 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
public class SessionsTable extends UserIDTable {
|
||||
|
||||
// TODO getLastPlayed(UUID, UUID)
|
||||
|
||||
private final String columnID = "id";
|
||||
private final String columnSessionStart = "session_start";
|
||||
private final String columnSessionEnd = "session_end";
|
||||
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.database.tables;
|
||||
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLDB;
|
||||
|
||||
/**
|
||||
* //TODO Class Javadoc Comment
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class UserInfoTable extends UserIDTable {
|
||||
|
||||
//TODO Server Specific Table
|
||||
private final String columnUserID = "user_ id";
|
||||
private final String columnRegistered = "registered";
|
||||
private final String columnOP = "opped";
|
||||
private final String columnBanned = "banned";
|
||||
private final String columnServerID = "server_id";
|
||||
|
||||
private final ServerTable serverTable;
|
||||
|
||||
public UserInfoTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_user_info", db, usingMySQL);
|
||||
serverTable = db.getServerTable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createTable() {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,12 +1,9 @@
|
||||
package main.java.com.djrapitops.plan.database.tables;
|
||||
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLDB;
|
||||
import main.java.com.djrapitops.plan.database.sql.Select;
|
||||
import main.java.com.djrapitops.plan.database.sql.Sql;
|
||||
import main.java.com.djrapitops.plan.database.sql.TableSqlParser;
|
||||
import main.java.com.djrapitops.plan.utilities.Benchmark;
|
||||
import main.java.com.djrapitops.plan.database.sql.*;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -20,36 +17,9 @@ public class UsersTable extends Table {
|
||||
|
||||
private final String columnID = "id";
|
||||
private final String columnUUID = "uuid";
|
||||
@Deprecated
|
||||
private final String columnGeolocation;
|
||||
@Deprecated
|
||||
private final String columnLastGM;
|
||||
@Deprecated
|
||||
private final String columnLastGMSwapTime;
|
||||
@Deprecated
|
||||
private final String columnPlayTime;
|
||||
@Deprecated
|
||||
private final String columnLoginTimes;
|
||||
@Deprecated
|
||||
private final String columnLastPlayed;
|
||||
@Deprecated
|
||||
private final String columnDeaths;
|
||||
@Deprecated
|
||||
private final String columnMobKills;
|
||||
private final String columnRegistered;
|
||||
private final String columnName;
|
||||
//TODO Server Specific Table (Also has registered on it)
|
||||
@Deprecated
|
||||
private final String columnOP;
|
||||
@Deprecated
|
||||
private final String columnBanned;
|
||||
//
|
||||
@Deprecated
|
||||
private final String columnContainsBukkitData;
|
||||
@Deprecated
|
||||
private final String columnLastWorldSwapTime;
|
||||
@Deprecated
|
||||
private final String columnLastWorld;
|
||||
private final String columnRegistered = "registered";
|
||||
private final String columnName = "name";
|
||||
private final String columnTimesKicked = "times_kicked";
|
||||
|
||||
public final String statementSelectID;
|
||||
|
||||
@ -60,24 +30,6 @@ public class UsersTable extends Table {
|
||||
public UsersTable(SQLDB db, boolean usingMySQL) {
|
||||
super("plan_users", db, usingMySQL);
|
||||
statementSelectID = "(" + Select.from(tableName, tableName + "." + columnID).where(columnUUID + "=?").toString() + ")";
|
||||
|
||||
columnGeolocation = "geolocation";
|
||||
columnLastGM = "last_gamemode";
|
||||
columnLastGMSwapTime = "last_gamemode_swap";
|
||||
columnPlayTime = "play_time";
|
||||
columnLoginTimes = "login_times";
|
||||
columnLastPlayed = "last_played";
|
||||
columnMobKills = "mob_kills";
|
||||
|
||||
columnDeaths = "deaths";
|
||||
columnRegistered = "registered";
|
||||
columnOP = "opped";
|
||||
columnName = "name";
|
||||
columnBanned = "banned";
|
||||
columnContainsBukkitData = "contains_bukkit_data";
|
||||
|
||||
columnLastWorldSwapTime = "last_world_swap";
|
||||
columnLastWorld = "last_world";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -89,37 +41,12 @@ public class UsersTable extends Table {
|
||||
execute(TableSqlParser.createTable(tableName)
|
||||
.primaryKeyIDColumn(usingMySQL, columnID, Sql.INT)
|
||||
.column(columnUUID, Sql.varchar(36)).notNull().unique()
|
||||
.column(columnGeolocation, Sql.varchar(50)).notNull()
|
||||
.column(columnLastGM, Sql.varchar(15)).notNull()
|
||||
.column(columnLastGMSwapTime, Sql.LONG).notNull()
|
||||
.column(columnPlayTime, Sql.LONG).notNull()
|
||||
.column(columnLoginTimes, Sql.INT).notNull()
|
||||
.column(columnLastPlayed, Sql.LONG).notNull()
|
||||
.column(columnDeaths, Sql.INT).notNull()
|
||||
.column(columnMobKills, Sql.INT).notNull()
|
||||
.column(columnRegistered, Sql.LONG).notNull()
|
||||
.column(columnOP, Sql.BOOL).notNull().defaultValue(false)
|
||||
.column(columnName, Sql.varchar(16)).notNull()
|
||||
.column(columnBanned, Sql.BOOL).notNull().defaultValue(false)
|
||||
.column(columnContainsBukkitData, Sql.BOOL).notNull().defaultValue(false)
|
||||
.column(columnLastWorld, Sql.varchar(255)).notNull()
|
||||
.column(columnLastWorldSwapTime, Sql.LONG).notNull()
|
||||
.column(columnTimesKicked, Sql.INT).notNull().defaultValue("0")
|
||||
.primaryKey(usingMySQL, columnID)
|
||||
.toString()
|
||||
);
|
||||
int version = getVersion();
|
||||
if (version < 3) {
|
||||
alterTablesV3();
|
||||
}
|
||||
if (version < 4) {
|
||||
alterTablesV4();
|
||||
}
|
||||
if (version < 5) {
|
||||
alterTablesV5();
|
||||
}
|
||||
if (version < 8) {
|
||||
alterTablesV8();
|
||||
}
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
Log.toLog(this.getClass().getName(), ex);
|
||||
@ -127,100 +54,15 @@ public class UsersTable extends Table {
|
||||
}
|
||||
}
|
||||
|
||||
private void alterTablesV8() {
|
||||
addColumns(
|
||||
columnLastWorldSwapTime + " bigint NOT NULL DEFAULT 0",
|
||||
columnLastWorld + " varchar(255) NOT NULL DEFAULT 'Unknown'"
|
||||
);
|
||||
}
|
||||
|
||||
private void alterTablesV5() {
|
||||
removeColumns("age", "gender");
|
||||
}
|
||||
|
||||
private void alterTablesV4() {
|
||||
addColumns(
|
||||
columnContainsBukkitData + " boolean NOT NULL DEFAULT 0",
|
||||
columnOP + " boolean NOT NULL DEFAULT 0",
|
||||
columnBanned + " boolean NOT NULL DEFAULT 0",
|
||||
columnName + " varchar(16) NOT NULL DEFAULT 'Unknown'",
|
||||
columnRegistered + " bigint NOT NULL DEFAULT 0"
|
||||
);
|
||||
}
|
||||
|
||||
private void alterTablesV3() {
|
||||
addColumns(
|
||||
columnDeaths + " integer NOT NULL DEFAULT 0",
|
||||
columnMobKills + " integer NOT NULL DEFAULT 0"
|
||||
);
|
||||
removeColumns("player_kills");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuid
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public int getUserId(UUID uuid) throws SQLException {
|
||||
return getUserId(uuid.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuid
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public int getUserId(String uuid) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
int userId = -1;
|
||||
statement = prepareStatement("SELECT " + columnID + " FROM " + tableName + " WHERE (" + columnUUID + "=?)");
|
||||
statement.setString(1, uuid);
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
userId = set.getInt(columnID);
|
||||
}
|
||||
return userId;
|
||||
} finally {
|
||||
close(set);
|
||||
close(statement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param userID
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public UUID getUserUUID(String userID) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
UUID uuid = null;
|
||||
statement = prepareStatement("SELECT " + columnUUID + " FROM " + tableName + " WHERE (" + columnID + "=?)");
|
||||
statement.setString(1, userID);
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
uuid = UUID.fromString(set.getString(columnUUID));
|
||||
}
|
||||
return uuid;
|
||||
} finally {
|
||||
close(set);
|
||||
close(statement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return @throws SQLException
|
||||
*/
|
||||
public Set<UUID> getSavedUUIDs() throws SQLException {
|
||||
Benchmark.start("Get Saved UUIDS");
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
Set<UUID> uuids = new HashSet<>();
|
||||
statement = prepareStatement("SELECT " + columnUUID + " FROM " + tableName);
|
||||
statement = prepareStatement(Select.from(tableName, columnUUID).toString());
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
UUID uuid = UUID.fromString(set.getString(columnUUID));
|
||||
@ -228,9 +70,7 @@ public class UsersTable extends Table {
|
||||
}
|
||||
return uuids;
|
||||
} finally {
|
||||
close(set);
|
||||
close(statement);
|
||||
Benchmark.stop("Database", "Get Saved UUIDS");
|
||||
close(set, statement);
|
||||
}
|
||||
}
|
||||
|
||||
@ -239,18 +79,10 @@ public class UsersTable extends Table {
|
||||
* @return
|
||||
*/
|
||||
public boolean removeUser(UUID uuid) {
|
||||
return removeUser(uuid.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public boolean removeUser(String uuid) {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
statement = prepareStatement("DELETE FROM " + tableName + " WHERE (" + columnUUID + "=?)");
|
||||
statement.setString(1, uuid);
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.execute();
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
@ -260,89 +92,6 @@ public class UsersTable extends Table {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuids
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public List<UUID> getContainsBukkitData(Collection<UUID> uuids) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
List<UUID> containsBukkitData = new ArrayList<>();
|
||||
try {
|
||||
statement = prepareStatement("SELECT " + columnContainsBukkitData + ", " + columnUUID + " FROM " + tableName);
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
String uuidS = set.getString(columnUUID);
|
||||
UUID uuid = UUID.fromString(uuidS);
|
||||
if (!uuids.contains(uuid)) {
|
||||
continue;
|
||||
}
|
||||
boolean contains = set.getBoolean(columnContainsBukkitData);
|
||||
if (contains) {
|
||||
containsBukkitData.add(uuid);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
close(statement);
|
||||
close(set);
|
||||
}
|
||||
return containsBukkitData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuids
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public Map<UUID, Integer> getUserIds(Collection<UUID> uuids) throws SQLException {
|
||||
Benchmark.start("Get User IDS Multiple");
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
Map<UUID, Integer> ids = new HashMap<>();
|
||||
statement = prepareStatement("SELECT " + columnUUID + ", " + columnID + " FROM " + tableName);
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
String uuidS = set.getString(columnUUID);
|
||||
UUID uuid = UUID.fromString(uuidS);
|
||||
if (!uuids.contains(uuid)) {
|
||||
continue;
|
||||
}
|
||||
ids.put(uuid, set.getInt(columnID));
|
||||
}
|
||||
return ids;
|
||||
} finally {
|
||||
close(set);
|
||||
close(statement);
|
||||
Benchmark.stop("Database", "Get User IDS Multiple");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return @throws SQLException
|
||||
*/
|
||||
public Map<UUID, Integer> getAllUserIds() throws SQLException {
|
||||
Benchmark.start("Get User IDS ALL");
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
Map<UUID, Integer> ids = new HashMap<>();
|
||||
statement = prepareStatement("SELECT " + columnUUID + ", " + columnID + " FROM " + tableName);
|
||||
set = statement.executeQuery();
|
||||
while (set.next()) {
|
||||
String uuidS = set.getString(columnUUID);
|
||||
UUID uuid = UUID.fromString(uuidS);
|
||||
ids.put(uuid, set.getInt(columnID));
|
||||
}
|
||||
return ids;
|
||||
} finally {
|
||||
close(set);
|
||||
close(statement);
|
||||
Benchmark.stop("Database", "Get User IDS ALL");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
@ -350,6 +99,10 @@ public class UsersTable extends Table {
|
||||
return columnID;
|
||||
}
|
||||
|
||||
public String getColumnUUID() {
|
||||
return columnUUID;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param playername
|
||||
* @return
|
||||
@ -359,7 +112,9 @@ public class UsersTable extends Table {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
statement = prepareStatement("SELECT " + columnUUID + " FROM " + tableName + " WHERE (UPPER(" + columnName + ")=UPPER(?))");
|
||||
statement = prepareStatement(Select.from(tableName, columnUUID)
|
||||
.where("UPPER(" + columnName + ")=UPPER(?)")
|
||||
.toString());
|
||||
statement.setString(1, playername);
|
||||
set = statement.executeQuery();
|
||||
if (set.next()) {
|
||||
@ -368,17 +123,111 @@ public class UsersTable extends Table {
|
||||
}
|
||||
return null;
|
||||
} finally {
|
||||
close(set);
|
||||
close(set, statement);
|
||||
}
|
||||
}
|
||||
|
||||
public List<Long> getRegisterDates() throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
statement = prepareStatement(Select.from(tableName, columnRegistered).toString());
|
||||
set = statement.executeQuery();
|
||||
List<Long> registerDates = new ArrayList<>();
|
||||
while (set.next()) {
|
||||
registerDates.add(set.getLong(columnRegistered));
|
||||
}
|
||||
return registerDates;
|
||||
} finally {
|
||||
close(set, statement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new user (UUID) to the database.
|
||||
*
|
||||
* @param uuid UUID of the player.
|
||||
* @param registered Register date.
|
||||
* @param name Name of the player.
|
||||
* @throws SQLException
|
||||
* @throws IllegalArgumentException If uuid or name are null.
|
||||
*/
|
||||
public void registerUser(UUID uuid, long registered, String name) throws SQLException {
|
||||
Verify.nullCheck(uuid, name);
|
||||
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
statement = prepareStatement(Insert.values(tableName,
|
||||
columnUUID,
|
||||
columnRegistered,
|
||||
columnName));
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.setLong(2, registered);
|
||||
statement.setString(3, name);
|
||||
statement.execute();
|
||||
} finally {
|
||||
close(statement);
|
||||
}
|
||||
}
|
||||
|
||||
public List<UserData> getUserData(List<UUID> uuids) {
|
||||
// TODO Rewrite method for new UserData objects.
|
||||
return new ArrayList<>();
|
||||
public boolean isRegistered(UUID uuid) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
statement = prepareStatement(Select.from(tableName, columnID)
|
||||
.where(columnUUID + "=?")
|
||||
.toString());
|
||||
statement.setString(1, uuid.toString());
|
||||
set = statement.executeQuery();
|
||||
return set.next();
|
||||
} finally {
|
||||
close(set, statement);
|
||||
}
|
||||
}
|
||||
|
||||
public String getColumnUUID() {
|
||||
return columnUUID;
|
||||
public void updateName(UUID uuid, String name) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
statement = prepareStatement(Update.values(tableName, columnName)
|
||||
.where(columnUUID + "=?")
|
||||
.toString());
|
||||
statement.setString(1, name);
|
||||
statement.setString(2, uuid.toString());
|
||||
statement.execute();
|
||||
} finally {
|
||||
close(statement);
|
||||
}
|
||||
}
|
||||
|
||||
public int getTimesKicked(UUID uuid) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
ResultSet set = null;
|
||||
try {
|
||||
statement = prepareStatement(Select.from(tableName, columnTimesKicked)
|
||||
.where(columnUUID + "=?")
|
||||
.toString());
|
||||
statement.setString(1, uuid.toString());
|
||||
set = statement.executeQuery();
|
||||
if (set.next()) {
|
||||
return set.getInt(columnTimesKicked);
|
||||
}
|
||||
return 0;
|
||||
} finally {
|
||||
close(set, statement);
|
||||
}
|
||||
}
|
||||
|
||||
public void kicked(UUID uuid) throws SQLException {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
statement = prepareStatement(Update.values(tableName, columnTimesKicked)
|
||||
.where(columnUUID + "=?")
|
||||
.toString());
|
||||
statement.setInt(1, getTimesKicked(uuid) + 1);
|
||||
statement.setString(2, uuid.toString());
|
||||
statement.execute();
|
||||
} finally {
|
||||
close(statement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.queue.processing;
|
||||
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.queue.Consumer;
|
||||
import main.java.com.djrapitops.plan.queue.Queue;
|
||||
import main.java.com.djrapitops.plan.queue.Setup;
|
||||
@ -47,7 +48,11 @@ class ProcessConsumer extends Consumer<Processor> {
|
||||
if (process == null) {
|
||||
return;
|
||||
}
|
||||
process.process();
|
||||
try {
|
||||
process.process();
|
||||
} catch (Exception | NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError e) {
|
||||
Log.toLog(this.getTaskName() + ":" + process.getClass().getSimpleName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user