Use Guava cache for caching PlayerAuth object.

This commit is contained in:
DNx5
2015-12-12 19:16:52 +07:00
parent 169e38be59
commit efcdca4087
11 changed files with 229 additions and 317 deletions
@@ -1,13 +1,11 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.command.CommandParts;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.output.Messages;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import java.util.List;
@@ -26,30 +24,24 @@ public class AccountsCommand extends ExecutableCommand {
// Get the player query
String playerQuery = sender.getName();
if (commandArguments.getCount() >= 1)
if (commandArguments.getCount() >= 1) {
playerQuery = commandArguments.get(0);
}
final String playerQueryFinal = playerQuery;
// Command logic
if (!playerQuery.contains(".")) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
if (!playerQueryFinal.contains(".")) {
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
PlayerAuth auth;
StringBuilder message = new StringBuilder("[AuthMe] ");
try {
auth = plugin.database.getAuth(playerQueryFinal.toLowerCase());
} catch (NullPointerException npe) {
m.send(sender, MessageKey.UNKNOWN_USER);
return;
}
PlayerAuth auth = plugin.database.getAuth(playerQueryFinal.toLowerCase());
if (auth == null) {
m.send(sender, MessageKey.UNKNOWN_USER);
return;
}
StringBuilder message = new StringBuilder("[AuthMe] ");
List<String> accountList = plugin.database.getAllAuthsByName(auth);
if (accountList == null || accountList.isEmpty()) {
if (accountList.isEmpty()) {
m.send(sender, MessageKey.USER_NOT_REGISTERED);
return;
}
@@ -67,28 +59,20 @@ public class AccountsCommand extends ExecutableCommand {
message.append('.');
}
}
sender.sendMessage("[AuthMe] " + playerQueryFinal + " has " + String.valueOf(accountList.size()) + " accounts");
sender.sendMessage("[AuthMe] " + playerQueryFinal + " has "
+ String.valueOf(accountList.size()) + " accounts.");
sender.sendMessage(message.toString());
}
});
return true;
} else {
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
List<String> accountList;
try {
accountList = plugin.database.getAllAuthsByIp(playerQueryFinal);
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
ConsoleLogger.writeStackTrace(e);
m.send(sender, MessageKey.ERROR);
return;
}
List<String> accountList = plugin.database.getAllAuthsByIp(playerQueryFinal);
StringBuilder message = new StringBuilder("[AuthMe] ");
if (accountList == null || accountList.isEmpty()) {
sender.sendMessage("[AuthMe] This IP does not exist in the database");
if (accountList.isEmpty()) {
sender.sendMessage("[AuthMe] This IP does not exist in the database.");
return;
}
if (accountList.size() == 1) {
@@ -105,7 +89,8 @@ public class AccountsCommand extends ExecutableCommand {
message.append('.');
}
}
sender.sendMessage("[AuthMe] " + playerQueryFinal + " has " + String.valueOf(accountList.size()) + " accounts");
sender.sendMessage("[AuthMe] " + playerQueryFinal + " has "
+ String.valueOf(accountList.size()) + " accounts.");
sender.sendMessage(message.toString());
}
});
@@ -11,6 +11,7 @@ import java.util.List;
/**
*/
// TODO: remove if not used
public class ResetNameCommand extends ExecutableCommand {
/**
@@ -28,7 +29,7 @@ public class ResetNameCommand extends ExecutableCommand {
final AuthMe plugin = AuthMe.getInstance();
// Command logic
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
List<PlayerAuth> authentications = plugin.database.getAllAuths();
@@ -24,16 +24,16 @@ public class SetEmailCommand extends ExecutableCommand {
* @return True if the command was executed successfully, false otherwise.
*/
@Override
public boolean executeCommand(CommandSender sender, CommandParts commandReference, CommandParts commandArguments) {
public boolean executeCommand(final CommandSender sender, CommandParts commandReference, CommandParts commandArguments) {
// AuthMe plugin instance
AuthMe plugin = AuthMe.getInstance();
final AuthMe plugin = AuthMe.getInstance();
// Messages instance
Messages m = plugin.getMessages();
final Messages m = plugin.getMessages();
// Get the player name and email address
String playerName = commandArguments.get(0);
String playerEmail = commandArguments.get(1);
final String playerName = commandArguments.get(0);
final String playerEmail = commandArguments.get(1);
// Validate the email address
if (!Settings.isEmailCorrect(playerEmail)) {
@@ -41,26 +41,34 @@ public class SetEmailCommand extends ExecutableCommand {
return true;
}
// Validate the user
PlayerAuth auth = plugin.database.getAuth(playerName.toLowerCase());
if (auth == null) {
m.send(sender, MessageKey.UNKNOWN_USER);
return true;
}
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
// Validate the user
PlayerAuth auth = plugin.database.getAuth(playerName);
if (auth == null) {
m.send(sender, MessageKey.UNKNOWN_USER);
return;
}
// Set the email address
auth.setEmail(playerEmail);
if (!plugin.database.updateEmail(auth)) {
m.send(sender, MessageKey.ERROR);
return true;
}
// Set the email address
// Update the player cache
if (PlayerCache.getInstance().getAuth(playerName.toLowerCase()) != null)
PlayerCache.getInstance().updatePlayer(auth);
auth.setEmail(playerEmail);
if (!plugin.database.updateEmail(auth)) {
m.send(sender, MessageKey.ERROR);
return;
}
// Show a status message
m.send(sender, MessageKey.EMAIL_CHANGED_SUCCESS);
// Update the player cache
if (PlayerCache.getInstance().getAuth(playerName) != null) {
PlayerCache.getInstance().updatePlayer(auth);
}
// Show a status message
m.send(sender, MessageKey.EMAIL_CHANGED_SUCCESS);
}
});
return true;
}
}