mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-09 21:29:12 +01:00
Refactored UserInfoTable#registerUserInfo to a transaction:
- Removed RegisterProcessor - Refactored UserInfoTable#isRegistered (both) to a query - Removed UserInfoTable#isRegisteredOnThisServer - Removed UserInfoTable#getServerUserInfo - not used - Made login nickname processing non critical
This commit is contained in:
parent
feaf7849d2
commit
acd2225c49
@ -17,7 +17,9 @@
|
||||
package com.djrapitops.plan.system.listeners.bukkit;
|
||||
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
||||
import com.djrapitops.plan.system.cache.GeolocationCache;
|
||||
import com.djrapitops.plan.system.cache.SessionCache;
|
||||
@ -138,6 +140,7 @@ public class PlayerOnlineListener implements Listener {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
UUID uuid = player.getUniqueId();
|
||||
UUID serverUUID = serverInfo.getServerUUID();
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
AFKListener.AFK_TRACKER.performedAction(uuid, time);
|
||||
@ -145,7 +148,8 @@ public class PlayerOnlineListener implements Listener {
|
||||
String world = player.getWorld().getName();
|
||||
String gm = player.getGameMode().name();
|
||||
|
||||
dbSystem.getDatabase().executeTransaction(new WorldNameStoreTransaction(serverInfo.getServerUUID(), world));
|
||||
Database database = dbSystem.getDatabase();
|
||||
database.executeTransaction(new WorldNameStoreTransaction(serverUUID, world));
|
||||
|
||||
InetAddress address = player.getAddress().getAddress();
|
||||
|
||||
@ -154,18 +158,15 @@ public class PlayerOnlineListener implements Listener {
|
||||
|
||||
boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS);
|
||||
if (gatheringGeolocations) {
|
||||
dbSystem.getDatabase().executeTransaction(
|
||||
database.executeTransaction(
|
||||
new GeoInfoStoreTransaction(uuid, address, time, geolocationCache::getCountry)
|
||||
);
|
||||
}
|
||||
|
||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, world, gm)));
|
||||
runnableFactory.create("Player Register: " + uuid,
|
||||
processors.player().registerProcessor(uuid, player::getFirstPlayed, playerName,
|
||||
processors.player().nameProcessor(uuid, displayName),
|
||||
processors.info().playerPageUpdateProcessor(uuid)
|
||||
)
|
||||
).runTaskAsynchronously();
|
||||
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, player::getFirstPlayed, playerName, serverUUID));
|
||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
||||
processing.submitNonCritical(processors.player().nameProcessor(uuid, displayName));
|
||||
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
|
@ -218,4 +218,25 @@ public class DataStoreQueries {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Store UserInfo about a player on a server in the database.
|
||||
*
|
||||
* @param playerUUID UUID of the player.
|
||||
* @param registered Time the player registered on the server.
|
||||
* @param serverUUID UUID of the Plan server.
|
||||
* @return Executable, use inside a {@link com.djrapitops.plan.db.access.transactions.Transaction}
|
||||
*/
|
||||
public static Executable registerUserInfo(UUID playerUUID, long registered, UUID serverUUID) {
|
||||
return new ExecStatement(UserInfoTable.INSERT_STATEMENT) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, playerUUID.toString());
|
||||
statement.setLong(2, registered);
|
||||
statement.setString(3, serverUUID.toString());
|
||||
statement.setBoolean(4, false); // Banned
|
||||
statement.setBoolean(5, false); // Operator
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -135,7 +135,7 @@ public class PlayerFetchQueries {
|
||||
* Check if the player's BaseUser is registered.
|
||||
*
|
||||
* @param playerUUID UUID of the player.
|
||||
* @return True if the player's BaseUser is found from plan_users
|
||||
* @return True if the player's BaseUser is found
|
||||
*/
|
||||
public static Query<Boolean> isPlayerRegistered(UUID playerUUID) {
|
||||
String sql = "SELECT COUNT(1) as c FROM " + UsersTable.TABLE_NAME +
|
||||
@ -147,4 +147,24 @@ public class PlayerFetchQueries {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the player's UserInfo is registered.
|
||||
*
|
||||
* @param playerUUID UUID of the player.
|
||||
* @param serverUUID UUID of the Plan server.
|
||||
* @return True if the player's UserInfo is found
|
||||
*/
|
||||
public static Query<Boolean> isPlayerRegisteredOnServer(UUID playerUUID, UUID serverUUID) {
|
||||
String sql = "SELECT COUNT(1) as c FROM " + UserInfoTable.TABLE_NAME +
|
||||
" WHERE " + UserInfoTable.USER_UUID + "=?" +
|
||||
" AND " + UserInfoTable.SERVER_UUID + "=?";
|
||||
return new HasMoreThanZeroQueryStatement(sql) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, playerUUID.toString());
|
||||
statement.setString(2, serverUUID.toString());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -30,8 +30,8 @@ import java.util.function.LongSupplier;
|
||||
*/
|
||||
public class PlayerRegisterTransaction extends Transaction {
|
||||
|
||||
private final UUID playerUUID;
|
||||
private final LongSupplier registered;
|
||||
protected final UUID playerUUID;
|
||||
protected final LongSupplier registered;
|
||||
private final String playerName;
|
||||
|
||||
public PlayerRegisterTransaction(UUID playerUUID, LongSupplier registered, String playerName) {
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* This file is part of Player Analytics (Plan).
|
||||
*
|
||||
* Plan is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License v3 as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Plan is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.djrapitops.plan.db.access.transactions.events;
|
||||
|
||||
import com.djrapitops.plan.db.access.queries.DataStoreQueries;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.function.LongSupplier;
|
||||
|
||||
/**
|
||||
* Transaction for registering player's BaseUser and UserInfo to the database.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class PlayerServerRegisterTransaction extends PlayerRegisterTransaction {
|
||||
|
||||
private final UUID serverUUID;
|
||||
|
||||
public PlayerServerRegisterTransaction(UUID playerUUID, LongSupplier registered, String playerName, UUID serverUUID) {
|
||||
super(playerUUID, registered, playerName);
|
||||
this.serverUUID = serverUUID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void performOperations() {
|
||||
super.performOperations();
|
||||
if (!query(PlayerFetchQueries.isPlayerRegisteredOnServer(playerUUID, serverUUID))) {
|
||||
execute(DataStoreQueries.registerUserInfo(playerUUID, registered.getAsLong(), serverUUID));
|
||||
}
|
||||
}
|
||||
}
|
@ -24,7 +24,6 @@ import com.djrapitops.plan.db.access.QueryStatement;
|
||||
import com.djrapitops.plan.db.patches.UserInfoOptimizationPatch;
|
||||
import com.djrapitops.plan.db.patches.Version10Patch;
|
||||
import com.djrapitops.plan.db.sql.parsing.CreateTableParser;
|
||||
import com.djrapitops.plan.db.sql.parsing.Select;
|
||||
import com.djrapitops.plan.db.sql.parsing.Sql;
|
||||
import com.djrapitops.plan.db.sql.parsing.Update;
|
||||
|
||||
@ -78,43 +77,6 @@ public class UserInfoTable extends Table {
|
||||
.toString();
|
||||
}
|
||||
|
||||
public void registerUserInfo(UUID uuid, long registered) {
|
||||
execute(new ExecStatement(INSERT_STATEMENT) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.setLong(2, registered);
|
||||
statement.setString(3, getServerUUID().toString());
|
||||
statement.setBoolean(4, false);
|
||||
statement.setBoolean(5, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isRegistered(UUID uuid, UUID serverUUID) {
|
||||
String sql = Select.from(TABLE_NAME, "COUNT(" + USER_UUID + ") as c")
|
||||
.where(USER_UUID + "=?")
|
||||
.and(SERVER_UUID + "=?")
|
||||
.toString();
|
||||
|
||||
return query(new QueryStatement<Boolean>(sql) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.setString(2, serverUUID.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean processResults(ResultSet set) throws SQLException {
|
||||
return set.next() && set.getInt("c") >= 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isRegistered(UUID uuid) {
|
||||
return isRegistered(uuid, getServerUUID());
|
||||
}
|
||||
|
||||
public void updateOpStatus(UUID uuid, boolean op) {
|
||||
String sql = Update.values(TABLE_NAME, OP)
|
||||
.where(USER_UUID + "=?")
|
||||
@ -177,19 +139,6 @@ public class UserInfoTable extends Table {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for getting info of all users on THIS server.
|
||||
*
|
||||
* @return List of UserInfo objects.
|
||||
*/
|
||||
public List<UserInfo> getServerUserInfo() {
|
||||
return getServerUserInfo(getServerUUID());
|
||||
}
|
||||
|
||||
public boolean isRegisteredOnThisServer(UUID player) {
|
||||
return isRegistered(player, getServerUUID());
|
||||
}
|
||||
|
||||
public Set<UUID> getSavedUUIDs(UUID serverUUID) {
|
||||
String sql = "SELECT " + USER_UUID + " FROM " + TABLE_NAME + " WHERE " + SERVER_UUID + "=?";
|
||||
|
||||
|
@ -21,9 +21,6 @@ import java.util.UUID;
|
||||
@Deprecated
|
||||
public interface CheckOperations {
|
||||
|
||||
@Deprecated
|
||||
boolean isPlayerRegisteredOnThisServer(UUID player);
|
||||
|
||||
@Deprecated
|
||||
boolean isServerInDatabase(UUID serverUUID);
|
||||
}
|
||||
|
@ -79,9 +79,6 @@ public interface SaveOperations {
|
||||
@Deprecated
|
||||
void playerDisplayName(UUID uuid, Nickname nickname);
|
||||
|
||||
@Deprecated
|
||||
void registerNewUserOnThisServer(UUID uuid, long registered);
|
||||
|
||||
@Deprecated
|
||||
void insertTPSforThisServer(TPS tps);
|
||||
|
||||
|
@ -27,11 +27,6 @@ public class SQLCheckOps extends SQLOps implements CheckOperations {
|
||||
super(db);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerRegisteredOnThisServer(UUID player) {
|
||||
return userInfoTable.isRegisteredOnThisServer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isServerInDatabase(UUID serverUUID) {
|
||||
return serverTable.getServerID(serverUUID).isPresent();
|
||||
|
@ -152,11 +152,6 @@ public class SQLSaveOps extends SQLOps implements SaveOperations {
|
||||
nicknamesTable.saveUserName(uuid, nickname);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerNewUserOnThisServer(UUID uuid, long registered) {
|
||||
userInfoTable.registerUserInfo(uuid, registered);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertTPSforThisServer(TPS tps) {
|
||||
tpsTable.insertTPS(tps);
|
||||
|
@ -30,7 +30,6 @@ import javax.inject.Singleton;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.LongSupplier;
|
||||
|
||||
/**
|
||||
* Factory for creating Runnables related to Player data to run with {@link com.djrapitops.plan.system.processing.Processing}.
|
||||
@ -82,8 +81,4 @@ public class PlayerProcessors {
|
||||
return new PingInsertProcessor(uuid, serverInfo.get().getServerUUID(), pingList, dbSystem.get().getDatabase());
|
||||
}
|
||||
|
||||
public RegisterProcessor registerProcessor(UUID uuid, LongSupplier registered, String name, Runnable... afterProcess) {
|
||||
return new RegisterProcessor(uuid, registered, name, processing.get(), dbSystem.get().getDatabase(), afterProcess);
|
||||
}
|
||||
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
* This file is part of Player Analytics (Plan).
|
||||
*
|
||||
* Plan is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License v3 as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Plan is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.djrapitops.plan.system.processing.processors.player;
|
||||
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.transactions.events.PlayerRegisterTransaction;
|
||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.SaveOperations;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
import com.djrapitops.plugin.task.AbsRunnable;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.function.LongSupplier;
|
||||
|
||||
/**
|
||||
* Registers the user to the database and marks first session if the user has no actions.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class RegisterProcessor extends AbsRunnable {
|
||||
|
||||
private final UUID uuid;
|
||||
private final LongSupplier registered;
|
||||
private final String name;
|
||||
private final Runnable[] afterProcess;
|
||||
|
||||
private final Processing processing;
|
||||
private final Database database;
|
||||
|
||||
RegisterProcessor(
|
||||
UUID uuid, LongSupplier registered, String name,
|
||||
Processing processing, Database database,
|
||||
Runnable... afterProcess
|
||||
) {
|
||||
this.uuid = uuid;
|
||||
this.registered = registered;
|
||||
this.name = name;
|
||||
this.processing = processing;
|
||||
this.database = database;
|
||||
this.afterProcess = afterProcess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Verify.nullCheck(uuid, () -> new IllegalStateException("UUID was null"));
|
||||
|
||||
CheckOperations check = database.check();
|
||||
SaveOperations save = database.save();
|
||||
try {
|
||||
database.executeTransaction(new PlayerRegisterTransaction(uuid, registered, name));
|
||||
if (!check.isPlayerRegisteredOnThisServer(uuid)) {
|
||||
save.registerNewUserOnThisServer(uuid, registered.getAsLong());
|
||||
}
|
||||
} finally {
|
||||
for (Runnable runnable : afterProcess) {
|
||||
processing.submit(runnable);
|
||||
}
|
||||
cancel();
|
||||
}
|
||||
}
|
||||
}
|
@ -33,10 +33,7 @@ import com.djrapitops.plan.db.access.Query;
|
||||
import com.djrapitops.plan.db.access.queries.*;
|
||||
import com.djrapitops.plan.db.access.queries.containers.ContainerFetchQueries;
|
||||
import com.djrapitops.plan.db.access.transactions.*;
|
||||
import com.djrapitops.plan.db.access.transactions.events.CommandStoreTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.PlayerRegisterTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.*;
|
||||
import com.djrapitops.plan.db.patches.Patch;
|
||||
import com.djrapitops.plan.db.sql.tables.*;
|
||||
import com.djrapitops.plan.system.PlanSystem;
|
||||
@ -226,7 +223,7 @@ public abstract class CommonDBTest {
|
||||
}
|
||||
|
||||
private void saveUserOne() {
|
||||
db.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> 123456789L, "Test"));
|
||||
playerIsRegisteredToBothTables();
|
||||
db.getUsersTable().kicked(playerUUID);
|
||||
}
|
||||
|
||||
@ -400,7 +397,7 @@ public abstract class CommonDBTest {
|
||||
|
||||
@Test
|
||||
public void userInfoTableStoresCorrectUserInformation() {
|
||||
userRegisterChecksReturnCorrectValues();
|
||||
saveUserOne();
|
||||
|
||||
List<UserInfo> userInfo = db.query(PlayerFetchQueries.playerServerSpecificUserInformation(playerUUID));
|
||||
List<UserInfo> expected = Collections.singletonList(new UserInfo(playerUUID, serverUUID, 223456789L, false, false));
|
||||
@ -408,24 +405,9 @@ public abstract class CommonDBTest {
|
||||
assertEquals(expected, userInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void userRegisterChecksReturnCorrectValues() {
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
saveUserOne();
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
assertFalse(userInfoTable.isRegistered(playerUUID));
|
||||
userInfoTable.registerUserInfo(playerUUID, 223456789L);
|
||||
assertTrue(userInfoTable.isRegistered(playerUUID));
|
||||
|
||||
assertEquals(123456789L, (long) db.getUsersTable().getRegisterDates().get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void userInfoTableUpdatesBanStatus() {
|
||||
userRegisterChecksReturnCorrectValues();
|
||||
saveUserOne();
|
||||
|
||||
db.getUserInfoTable().updateBanStatus(playerUUID, true);
|
||||
|
||||
@ -437,7 +419,7 @@ public abstract class CommonDBTest {
|
||||
|
||||
@Test
|
||||
public void userInfoTableUpdatesOperatorStatus() {
|
||||
userRegisterChecksReturnCorrectValues();
|
||||
saveUserOne();
|
||||
|
||||
db.getUserInfoTable().updateOpStatus(playerUUID, true);
|
||||
|
||||
@ -484,12 +466,10 @@ public abstract class CommonDBTest {
|
||||
saveUserTwo();
|
||||
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
SessionsTable sessionsTable = db.getSessionsTable();
|
||||
NicknamesTable nicknamesTable = db.getNicknamesTable();
|
||||
|
||||
db.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> 223456789L, "Test_name"));
|
||||
userInfoTable.registerUserInfo(playerUUID, 223456789L);
|
||||
db.executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> 223456789L, "Test_name", serverUUID));
|
||||
saveTwoWorlds();
|
||||
|
||||
Session session = new Session(playerUUID, serverUUID, 12345L, "", "");
|
||||
@ -506,7 +486,7 @@ public abstract class CommonDBTest {
|
||||
db.executeTransaction(new RemovePlayerTransaction(playerUUID));
|
||||
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertFalse(userInfoTable.isRegistered(playerUUID));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegisteredOnServer(playerUUID, serverUUID)));
|
||||
assertTrue(nicknamesTable.getNicknames(playerUUID).isEmpty());
|
||||
assertTrue(db.query(PlayerFetchQueries.playerGeoInfo(playerUUID)).isEmpty());
|
||||
assertTrue(sessionsTable.getSessions(playerUUID).isEmpty());
|
||||
@ -546,7 +526,6 @@ public abstract class CommonDBTest {
|
||||
saveUserOne();
|
||||
saveUserTwo();
|
||||
|
||||
userInfoTable.registerUserInfo(playerUUID, 223456789L);
|
||||
saveTwoWorlds();
|
||||
|
||||
Session session = new Session(playerUUID, serverUUID, 12345L, "", "");
|
||||
@ -778,13 +757,20 @@ public abstract class CommonDBTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegister() {
|
||||
public void playerIsRegisteredToUsersTable() {
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertFalse(db.check().isPlayerRegisteredOnThisServer(playerUUID));
|
||||
db.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> 1000L, "name"));
|
||||
db.save().registerNewUserOnThisServer(playerUUID, 500L);
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertTrue(db.check().isPlayerRegisteredOnThisServer(playerUUID));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegisteredOnServer(playerUUID, serverUUID)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void playerIsRegisteredToBothTables() {
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegisteredOnServer(playerUUID, serverUUID)));
|
||||
db.executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> 1000L, "name", serverUUID));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegisteredOnServer(playerUUID, serverUUID)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -17,7 +17,9 @@
|
||||
package com.djrapitops.plan.system.listeners.sponge;
|
||||
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
||||
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
||||
import com.djrapitops.plan.system.cache.GeolocationCache;
|
||||
import com.djrapitops.plan.system.cache.SessionCache;
|
||||
@ -142,6 +144,7 @@ public class SpongePlayerListener {
|
||||
Player player = event.getTargetEntity();
|
||||
|
||||
UUID uuid = player.getUniqueId();
|
||||
UUID serverUUID = serverInfo.getServerUUID();
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
SpongeAFKListener.AFK_TRACKER.performedAction(uuid, time);
|
||||
@ -150,7 +153,8 @@ public class SpongePlayerListener {
|
||||
Optional<GameMode> gameMode = player.getGameModeData().get(Keys.GAME_MODE);
|
||||
String gm = gameMode.map(mode -> mode.getName().toUpperCase()).orElse("ADVENTURE");
|
||||
|
||||
dbSystem.getDatabase().executeTransaction(new WorldNameStoreTransaction(serverInfo.getServerUUID(), world));
|
||||
Database database = dbSystem.getDatabase();
|
||||
database.executeTransaction(new WorldNameStoreTransaction(serverUUID, world));
|
||||
|
||||
InetAddress address = player.getConnection().getAddress().getAddress();
|
||||
|
||||
@ -159,18 +163,15 @@ public class SpongePlayerListener {
|
||||
|
||||
boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS);
|
||||
if (gatheringGeolocations) {
|
||||
dbSystem.getDatabase().executeTransaction(
|
||||
database.executeTransaction(
|
||||
new GeoInfoStoreTransaction(uuid, address, time, geolocationCache::getCountry)
|
||||
);
|
||||
}
|
||||
|
||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, world, gm)));
|
||||
runnableFactory.create("Player Register: " + uuid,
|
||||
processors.player().registerProcessor(uuid, () -> time, playerName,
|
||||
processors.player().nameProcessor(uuid, displayName),
|
||||
processors.info().playerPageUpdateProcessor(uuid)
|
||||
)
|
||||
).runTaskAsynchronously();
|
||||
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, () -> time, playerName, serverUUID));
|
||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
||||
processing.submitNonCritical(processors.player().nameProcessor(uuid, displayName));
|
||||
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
||||
}
|
||||
|
||||
@Listener(order = Order.POST)
|
||||
|
Loading…
Reference in New Issue
Block a user