mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-27 03:27:37 +01:00
Refactored NicknamesTable#saveUserName to a transaction:
- Removed NameProcessor
This commit is contained in:
parent
cce5688f80
commit
71a5592fd1
@ -16,8 +16,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.listeners.bukkit;
|
package com.djrapitops.plan.system.listeners.bukkit;
|
||||||
|
|
||||||
import com.djrapitops.plan.system.processing.Processing;
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.system.processing.processors.player.PlayerProcessors;
|
import com.djrapitops.plan.db.access.transactions.events.NicknameStoreTransaction;
|
||||||
|
import com.djrapitops.plan.system.cache.NicknameCache;
|
||||||
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
|
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||||
import com.djrapitops.plugin.logging.L;
|
import com.djrapitops.plugin.logging.L;
|
||||||
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -36,18 +39,21 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
public class ChatListener implements Listener {
|
public class ChatListener implements Listener {
|
||||||
|
|
||||||
private final PlayerProcessors processorFactory;
|
private final ServerInfo serverInfo;
|
||||||
private final Processing processing;
|
private final DBSystem dbSystem;
|
||||||
|
private final NicknameCache nicknameCache;
|
||||||
private final ErrorHandler errorHandler;
|
private final ErrorHandler errorHandler;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ChatListener(
|
public ChatListener(
|
||||||
PlayerProcessors processorFactory,
|
ServerInfo serverInfo,
|
||||||
Processing processing,
|
DBSystem dbSystem,
|
||||||
|
NicknameCache nicknameCache,
|
||||||
ErrorHandler errorHandler
|
ErrorHandler errorHandler
|
||||||
) {
|
) {
|
||||||
this.processorFactory = processorFactory;
|
this.serverInfo = serverInfo;
|
||||||
this.processing = processing;
|
this.dbSystem = dbSystem;
|
||||||
|
this.nicknameCache = nicknameCache;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,9 +71,17 @@ public class ChatListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void actOnChatEvent(AsyncPlayerChatEvent event) {
|
private void actOnChatEvent(AsyncPlayerChatEvent event) {
|
||||||
Player p = event.getPlayer();
|
long time = System.currentTimeMillis();
|
||||||
UUID uuid = p.getUniqueId();
|
Player player = event.getPlayer();
|
||||||
String displayName = p.getDisplayName();
|
UUID uuid = player.getUniqueId();
|
||||||
processing.submit(processorFactory.nameProcessor(uuid, displayName));
|
String displayName = player.getDisplayName();
|
||||||
|
|
||||||
|
if (displayName.equals(nicknameCache.getDisplayName(uuid))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dbSystem.getDatabase().executeTransaction(
|
||||||
|
new NicknameStoreTransaction(uuid, new Nickname(displayName, time, serverInfo.getServerUUID()))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,10 @@
|
|||||||
package com.djrapitops.plan.system.listeners.bukkit;
|
package com.djrapitops.plan.system.listeners.bukkit;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.container.Session;
|
import com.djrapitops.plan.data.container.Session;
|
||||||
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.db.Database;
|
import com.djrapitops.plan.db.Database;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
||||||
|
import com.djrapitops.plan.db.access.transactions.events.NicknameStoreTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
||||||
import com.djrapitops.plan.system.cache.GeolocationCache;
|
import com.djrapitops.plan.system.cache.GeolocationCache;
|
||||||
@ -165,8 +167,15 @@ public class PlayerOnlineListener implements Listener {
|
|||||||
|
|
||||||
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, player::getFirstPlayed, playerName, serverUUID));
|
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, player::getFirstPlayed, playerName, serverUUID));
|
||||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
||||||
processing.submitNonCritical(processors.player().nameProcessor(uuid, displayName));
|
|
||||||
|
if (!displayName.equals(nicknameCache.getDisplayName(uuid))) {
|
||||||
|
database.executeTransaction(
|
||||||
|
new NicknameStoreTransaction(uuid, new Nickname(displayName, time, serverUUID))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
@ -21,6 +21,7 @@ import com.djrapitops.plan.data.container.Ping;
|
|||||||
import com.djrapitops.plan.data.container.Session;
|
import com.djrapitops.plan.data.container.Session;
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
||||||
import com.djrapitops.plan.data.store.keys.SessionKeys;
|
import com.djrapitops.plan.data.store.keys.SessionKeys;
|
||||||
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.data.time.GMTimes;
|
import com.djrapitops.plan.data.time.GMTimes;
|
||||||
import com.djrapitops.plan.db.access.ExecBatchStatement;
|
import com.djrapitops.plan.db.access.ExecBatchStatement;
|
||||||
import com.djrapitops.plan.db.access.ExecStatement;
|
import com.djrapitops.plan.db.access.ExecStatement;
|
||||||
@ -287,4 +288,44 @@ public class DataStoreQueries {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store nickname information of a player on a server.
|
||||||
|
*
|
||||||
|
* @param playerUUID UUID of the player.
|
||||||
|
* @param nickname Nickname information.
|
||||||
|
* @return Executable, use inside a {@link com.djrapitops.plan.db.access.transactions.Transaction}
|
||||||
|
*/
|
||||||
|
public static Executable storePlayerNickname(UUID playerUUID, Nickname nickname) {
|
||||||
|
return connection -> {
|
||||||
|
if (!updatePlayerNickname(playerUUID, nickname).execute(connection)) {
|
||||||
|
insertPlayerNickname(playerUUID, nickname).execute(connection);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Executable updatePlayerNickname(UUID playerUUID, Nickname nickname) {
|
||||||
|
return new ExecStatement(NicknamesTable.UPDATE_STATEMENT) {
|
||||||
|
@Override
|
||||||
|
public void prepare(PreparedStatement statement) throws SQLException {
|
||||||
|
statement.setLong(1, nickname.getDate());
|
||||||
|
statement.setString(2, nickname.getName());
|
||||||
|
statement.setString(3, playerUUID.toString());
|
||||||
|
statement.setString(4, nickname.getServerUUID().toString());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Executable insertPlayerNickname(UUID playerUUID, Nickname nickname) {
|
||||||
|
return new ExecStatement(NicknamesTable.INSERT_STATEMENT) {
|
||||||
|
@Override
|
||||||
|
public void prepare(PreparedStatement statement) throws SQLException {
|
||||||
|
statement.setString(1, playerUUID.toString());
|
||||||
|
statement.setString(2, nickname.getServerUUID().toString());
|
||||||
|
statement.setString(3, nickname.getName());
|
||||||
|
statement.setLong(4, nickname.getDate());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* 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.data.store.objects.Nickname;
|
||||||
|
import com.djrapitops.plan.db.access.queries.DataStoreQueries;
|
||||||
|
import com.djrapitops.plan.db.access.transactions.Transaction;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transaction to store player's nickname information in the database.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class NicknameStoreTransaction extends Transaction {
|
||||||
|
|
||||||
|
private final UUID playerUUID;
|
||||||
|
private final Nickname nickname;
|
||||||
|
|
||||||
|
public NicknameStoreTransaction(UUID playerUUID, Nickname nickname) {
|
||||||
|
this.playerUUID = playerUUID;
|
||||||
|
this.nickname = nickname;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void performOperations() {
|
||||||
|
execute(DataStoreQueries.storePlayerNickname(playerUUID, nickname));
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,6 @@ package com.djrapitops.plan.db.sql.tables;
|
|||||||
import com.djrapitops.plan.data.store.objects.Nickname;
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.db.DBType;
|
import com.djrapitops.plan.db.DBType;
|
||||||
import com.djrapitops.plan.db.SQLDB;
|
import com.djrapitops.plan.db.SQLDB;
|
||||||
import com.djrapitops.plan.db.access.ExecStatement;
|
|
||||||
import com.djrapitops.plan.db.access.QueryStatement;
|
import com.djrapitops.plan.db.access.QueryStatement;
|
||||||
import com.djrapitops.plan.db.patches.NicknameLastSeenPatch;
|
import com.djrapitops.plan.db.patches.NicknameLastSeenPatch;
|
||||||
import com.djrapitops.plan.db.patches.NicknamesOptimizationPatch;
|
import com.djrapitops.plan.db.patches.NicknamesOptimizationPatch;
|
||||||
@ -82,39 +81,6 @@ public class NicknamesTable extends Table {
|
|||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveUserName(UUID uuid, Nickname name) {
|
|
||||||
List<Nickname> saved = getNicknameInformation(uuid);
|
|
||||||
if (saved.contains(name)) {
|
|
||||||
updateNickname(uuid, name);
|
|
||||||
} else {
|
|
||||||
insertNickname(uuid, name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateNickname(UUID uuid, Nickname name) {
|
|
||||||
execute(new ExecStatement(UPDATE_STATEMENT) {
|
|
||||||
@Override
|
|
||||||
public void prepare(PreparedStatement statement) throws SQLException {
|
|
||||||
statement.setLong(1, name.getDate());
|
|
||||||
statement.setString(2, name.getName());
|
|
||||||
statement.setString(3, uuid.toString());
|
|
||||||
statement.setString(4, getServerUUID().toString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void insertNickname(UUID uuid, Nickname name) {
|
|
||||||
execute(new ExecStatement(INSERT_STATEMENT) {
|
|
||||||
@Override
|
|
||||||
public void prepare(PreparedStatement statement) throws SQLException {
|
|
||||||
statement.setString(1, uuid.toString());
|
|
||||||
statement.setString(2, getServerUUID().toString());
|
|
||||||
statement.setString(3, name.getName());
|
|
||||||
statement.setLong(4, name.getDate());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Nickname> getNicknameInformation(UUID uuid) {
|
public List<Nickname> getNicknameInformation(UUID uuid) {
|
||||||
String sql = "SELECT " +
|
String sql = "SELECT " +
|
||||||
NICKNAME + ", " +
|
NICKNAME + ", " +
|
||||||
|
@ -75,9 +75,6 @@ public interface SaveOperations {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
void playerWasKicked(UUID uuid);
|
void playerWasKicked(UUID uuid);
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
void playerDisplayName(UUID uuid, Nickname nickname);
|
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void session(UUID uuid, Session session);
|
void session(UUID uuid, Session session);
|
||||||
|
|
||||||
|
@ -141,11 +141,6 @@ public class SQLSaveOps extends SQLOps implements SaveOperations {
|
|||||||
usersTable.kicked(uuid);
|
usersTable.kicked(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void playerDisplayName(UUID uuid, Nickname nickname) {
|
|
||||||
nicknamesTable.saveUserName(uuid, nickname);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void session(UUID uuid, Session session) {
|
public void session(UUID uuid, Session session) {
|
||||||
db.executeTransaction(new Transaction() {
|
db.executeTransaction(new Transaction() {
|
||||||
|
@ -1,63 +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.data.store.objects.Nickname;
|
|
||||||
import com.djrapitops.plan.db.Database;
|
|
||||||
import com.djrapitops.plan.system.cache.NicknameCache;
|
|
||||||
import com.djrapitops.plan.system.processing.CriticalRunnable;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processor for updating name in the database if the player has changed it.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
*/
|
|
||||||
public class NameProcessor implements CriticalRunnable {
|
|
||||||
|
|
||||||
private final UUID uuid;
|
|
||||||
private final Nickname nickname;
|
|
||||||
|
|
||||||
private final Database database;
|
|
||||||
private final NicknameCache nicknameCache;
|
|
||||||
|
|
||||||
NameProcessor(
|
|
||||||
UUID uuid, Nickname nickname,
|
|
||||||
Database database,
|
|
||||||
NicknameCache nicknameCache
|
|
||||||
) {
|
|
||||||
this.uuid = uuid;
|
|
||||||
this.nickname = nickname;
|
|
||||||
this.database = database;
|
|
||||||
this.nicknameCache = nicknameCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
String cachedDisplayName = nicknameCache.getDisplayName(uuid);
|
|
||||||
|
|
||||||
boolean sameAsCached = nickname.getName().equals(cachedDisplayName);
|
|
||||||
if (sameAsCached) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
nicknameCache.updateDisplayName(uuid, nickname.getName());
|
|
||||||
|
|
||||||
database.save().playerDisplayName(uuid, nickname);
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,7 +16,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.processing.processors.player;
|
package com.djrapitops.plan.system.processing.processors.player;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.store.objects.Nickname;
|
|
||||||
import com.djrapitops.plan.system.cache.NicknameCache;
|
import com.djrapitops.plan.system.cache.NicknameCache;
|
||||||
import com.djrapitops.plan.system.cache.SessionCache;
|
import com.djrapitops.plan.system.cache.SessionCache;
|
||||||
import com.djrapitops.plan.system.database.DBSystem;
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
@ -65,9 +64,4 @@ public class PlayerProcessors {
|
|||||||
public KickProcessor kickProcessor(UUID uuid) {
|
public KickProcessor kickProcessor(UUID uuid) {
|
||||||
return new KickProcessor(uuid, dbSystem.get().getDatabase());
|
return new KickProcessor(uuid, dbSystem.get().getDatabase());
|
||||||
}
|
}
|
||||||
|
|
||||||
public NameProcessor nameProcessor(UUID uuid, String displayName) {
|
|
||||||
Nickname nickname = new Nickname(displayName, System.currentTimeMillis(), serverInfo.get().getServerUUID());
|
|
||||||
return new NameProcessor(uuid, nickname, dbSystem.get().getDatabase(), nicknameCache.get());
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -255,8 +255,8 @@ public abstract class CommonDBTest {
|
|||||||
NicknamesTable nickTable = db.getNicknamesTable();
|
NicknamesTable nickTable = db.getNicknamesTable();
|
||||||
|
|
||||||
Nickname expected = new Nickname("TestNickname", System.currentTimeMillis(), serverUUID);
|
Nickname expected = new Nickname("TestNickname", System.currentTimeMillis(), serverUUID);
|
||||||
nickTable.saveUserName(playerUUID, expected);
|
db.executeTransaction(new NicknameStoreTransaction(playerUUID, expected));
|
||||||
nickTable.saveUserName(playerUUID, expected);
|
db.executeTransaction(new NicknameStoreTransaction(playerUUID, expected));
|
||||||
commitTest();
|
commitTest();
|
||||||
|
|
||||||
List<Nickname> nicknames = nickTable.getNicknameInformation(playerUUID);
|
List<Nickname> nicknames = nickTable.getNicknameInformation(playerUUID);
|
||||||
@ -479,7 +479,7 @@ public abstract class CommonDBTest {
|
|||||||
session.setPlayerKills(createKills());
|
session.setPlayerKills(createKills());
|
||||||
|
|
||||||
execute(DataStoreQueries.storeSession(session));
|
execute(DataStoreQueries.storeSession(session));
|
||||||
nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID));
|
db.executeTransaction(new NicknameStoreTransaction(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID)));
|
||||||
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, "3"));
|
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, "3"));
|
||||||
|
|
||||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||||
@ -517,9 +517,6 @@ public abstract class CommonDBTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void saveAllData() throws NoSuchAlgorithmException {
|
private void saveAllData() throws NoSuchAlgorithmException {
|
||||||
NicknamesTable nicknamesTable = db.getNicknamesTable();
|
|
||||||
TPSTable tpsTable = db.getTpsTable();
|
|
||||||
|
|
||||||
saveUserOne();
|
saveUserOne();
|
||||||
saveUserTwo();
|
saveUserTwo();
|
||||||
|
|
||||||
@ -531,7 +528,9 @@ public abstract class CommonDBTest {
|
|||||||
session.setPlayerKills(createKills());
|
session.setPlayerKills(createKills());
|
||||||
|
|
||||||
execute(DataStoreQueries.storeSession(session));
|
execute(DataStoreQueries.storeSession(session));
|
||||||
nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID));
|
db.executeTransaction(
|
||||||
|
new NicknameStoreTransaction(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID))
|
||||||
|
);
|
||||||
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L,
|
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L,
|
||||||
new SHA256Hash("1.2.3.4").create()));
|
new SHA256Hash("1.2.3.4").create()));
|
||||||
|
|
||||||
@ -940,8 +939,8 @@ public abstract class CommonDBTest {
|
|||||||
db.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> 1L, "Not random"));
|
db.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> 1L, "Not random"));
|
||||||
|
|
||||||
String nickname = "2" + RandomData.randomString(10);
|
String nickname = "2" + RandomData.randomString(10);
|
||||||
db.getNicknamesTable().saveUserName(uuid, new Nickname(nickname, System.currentTimeMillis(), serverUUID));
|
db.executeTransaction(new NicknameStoreTransaction(uuid, new Nickname(nickname, System.currentTimeMillis(), serverUUID)));
|
||||||
db.getNicknamesTable().saveUserName(playerUUID, new Nickname("No nick", System.currentTimeMillis(), serverUUID));
|
db.executeTransaction(new NicknameStoreTransaction(playerUUID, new Nickname("No nick", System.currentTimeMillis(), serverUUID)));
|
||||||
|
|
||||||
String search = "2";
|
String search = "2";
|
||||||
|
|
||||||
|
@ -16,8 +16,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.listeners.sponge;
|
package com.djrapitops.plan.system.listeners.sponge;
|
||||||
|
|
||||||
import com.djrapitops.plan.system.processing.Processing;
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.system.processing.processors.player.PlayerProcessors;
|
import com.djrapitops.plan.db.access.transactions.events.NicknameStoreTransaction;
|
||||||
|
import com.djrapitops.plan.system.cache.NicknameCache;
|
||||||
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
|
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||||
import com.djrapitops.plugin.logging.L;
|
import com.djrapitops.plugin.logging.L;
|
||||||
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
import org.spongepowered.api.entity.living.player.Player;
|
import org.spongepowered.api.entity.living.player.Player;
|
||||||
@ -36,18 +39,21 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
public class SpongeChatListener {
|
public class SpongeChatListener {
|
||||||
|
|
||||||
private final PlayerProcessors processorFactory;
|
private final ServerInfo serverInfo;
|
||||||
private final Processing processing;
|
private final DBSystem dbSystem;
|
||||||
|
private final NicknameCache nicknameCache;
|
||||||
private ErrorHandler errorHandler;
|
private ErrorHandler errorHandler;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SpongeChatListener(
|
public SpongeChatListener(
|
||||||
PlayerProcessors processorFactory,
|
ServerInfo serverInfo,
|
||||||
Processing processing,
|
DBSystem dbSystem,
|
||||||
|
NicknameCache nicknameCache,
|
||||||
ErrorHandler errorHandler
|
ErrorHandler errorHandler
|
||||||
) {
|
) {
|
||||||
this.processorFactory = processorFactory;
|
this.serverInfo = serverInfo;
|
||||||
this.processing = processing;
|
this.dbSystem = dbSystem;
|
||||||
|
this.nicknameCache = nicknameCache;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,9 +71,16 @@ public class SpongeChatListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void actOnChatEvent(@First Player player) {
|
private void actOnChatEvent(@First Player player) {
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
UUID uuid = player.getUniqueId();
|
UUID uuid = player.getUniqueId();
|
||||||
String displayName = player.getDisplayNameData().displayName().get().toPlain();
|
String displayName = player.getDisplayNameData().displayName().get().toPlain();
|
||||||
processing.submit(processorFactory.nameProcessor(uuid, displayName));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (displayName.equals(nicknameCache.getDisplayName(uuid))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dbSystem.getDatabase().executeTransaction(
|
||||||
|
new NicknameStoreTransaction(uuid, new Nickname(displayName, time, serverInfo.getServerUUID()))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
@ -17,8 +17,10 @@
|
|||||||
package com.djrapitops.plan.system.listeners.sponge;
|
package com.djrapitops.plan.system.listeners.sponge;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.container.Session;
|
import com.djrapitops.plan.data.container.Session;
|
||||||
|
import com.djrapitops.plan.data.store.objects.Nickname;
|
||||||
import com.djrapitops.plan.db.Database;
|
import com.djrapitops.plan.db.Database;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction;
|
||||||
|
import com.djrapitops.plan.db.access.transactions.events.NicknameStoreTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.PlayerServerRegisterTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
import com.djrapitops.plan.db.access.transactions.events.WorldNameStoreTransaction;
|
||||||
import com.djrapitops.plan.system.cache.GeolocationCache;
|
import com.djrapitops.plan.system.cache.GeolocationCache;
|
||||||
@ -170,7 +172,13 @@ public class SpongePlayerListener {
|
|||||||
|
|
||||||
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, () -> time, playerName, serverUUID));
|
database.executeTransaction(new PlayerServerRegisterTransaction(uuid, () -> time, playerName, serverUUID));
|
||||||
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)));
|
||||||
processing.submitNonCritical(processors.player().nameProcessor(uuid, displayName));
|
|
||||||
|
if (!displayName.equals(nicknameCache.getDisplayName(uuid))) {
|
||||||
|
database.executeTransaction(
|
||||||
|
new NicknameStoreTransaction(uuid, new Nickname(displayName, time, serverUUID))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user