forked from LogBlock/LogBlock
API: Added option to run commands sync or async with the caller thread
This commit is contained in:
@@ -202,7 +202,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
} else if (args[0].equalsIgnoreCase("savequeue")) {
|
||||
if (logblock.hasPermission(sender, "logblock.rollback"))
|
||||
try {
|
||||
new CommandSaveQueue(sender, null);
|
||||
new CommandSaveQueue(sender, null, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -218,7 +218,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
params.order = Order.DESC;
|
||||
params.sum = SummarizationMode.NONE;
|
||||
params.bct = BlockChangeType.ALL;
|
||||
new CommandRollback(sender, params);
|
||||
new CommandRollback(sender, params, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -234,7 +234,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
params.order = Order.ASC;
|
||||
params.sum = SummarizationMode.NONE;
|
||||
params.bct = BlockChangeType.ALL;
|
||||
new CommandRedo(sender, params);
|
||||
new CommandRedo(sender, params, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -249,7 +249,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
params.setPlayer(player.getName());
|
||||
params.sum = SummarizationMode.TYPES;
|
||||
params.world = player.getWorld();
|
||||
new CommandLookup(sender, params);
|
||||
new CommandLookup(sender, params, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -264,7 +264,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
params.limit = -1;
|
||||
params.bct = BlockChangeType.ALL;
|
||||
params.sum = SummarizationMode.NONE;
|
||||
new CommandWriteLogFile(sender, params);
|
||||
new CommandWriteLogFile(sender, params, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -276,7 +276,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
final QueryParams params = new QueryParams(logblock, sender, ArgsToList(args, 1));
|
||||
params.bct = BlockChangeType.ALL;
|
||||
params.limit = -1;
|
||||
new CommandClearLog(sender, params);
|
||||
new CommandClearLog(sender, params, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -286,7 +286,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
if (sender instanceof Player) {
|
||||
if (logblock.hasPermission(sender, "logblock.tp"))
|
||||
try {
|
||||
new CommandTeleport(sender, new QueryParams(logblock, sender, ArgsToList(args, 1)));
|
||||
new CommandTeleport(sender, new QueryParams(logblock, sender, ArgsToList(args, 1)), true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -300,7 +300,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
final List<String> argsList = new ArrayList<String>(Arrays.asList(args));
|
||||
if (command.equals("lookup"))
|
||||
argsList.remove(0);
|
||||
new CommandLookup(sender, new QueryParams(logblock, sender, argsList));
|
||||
new CommandLookup(sender, new QueryParams(logblock, sender, argsList), true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -320,13 +320,16 @@ public class CommandsHandler implements CommandExecutor
|
||||
protected Statement state = null;
|
||||
protected ResultSet rs = null;
|
||||
|
||||
protected LBCommand(CommandSender sender, QueryParams params) throws Exception {
|
||||
protected LBCommand(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
this.sender = sender;
|
||||
this.params = params;
|
||||
conn = logblock.getConnection();
|
||||
state = conn.createStatement();
|
||||
if (scheduler.scheduleAsyncDelayedTask(logblock, this) == -1)
|
||||
throw new Exception("Failed to schedule the command");
|
||||
if (async) {
|
||||
if (scheduler.scheduleAsyncDelayedTask(logblock, this) == -1)
|
||||
throw new Exception("Failed to schedule the command");
|
||||
} else
|
||||
run();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -346,8 +349,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandLookup extends LBCommand
|
||||
{
|
||||
public CommandLookup(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandLookup(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -378,8 +381,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandWriteLogFile extends LBCommand
|
||||
{
|
||||
CommandWriteLogFile(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
CommandWriteLogFile(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -413,8 +416,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandSaveQueue extends LBCommand
|
||||
{
|
||||
public CommandSaveQueue(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandSaveQueue(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -429,8 +432,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandTeleport extends LBCommand
|
||||
{
|
||||
public CommandTeleport(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandTeleport(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -455,8 +458,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandRollback extends LBCommand
|
||||
{
|
||||
public CommandRollback(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandRollback(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -464,7 +467,7 @@ public class CommandsHandler implements CommandExecutor
|
||||
try {
|
||||
if (logblock.getConsumer().getQueueSize() > 50)
|
||||
try {
|
||||
new CommandSaveQueue(sender, null);
|
||||
new CommandSaveQueue(sender, null, true);
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
@@ -499,8 +502,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandRedo extends LBCommand
|
||||
{
|
||||
public CommandRedo(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandRedo(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -537,8 +540,8 @@ public class CommandsHandler implements CommandExecutor
|
||||
|
||||
public class CommandClearLog extends LBCommand
|
||||
{
|
||||
public CommandClearLog(CommandSender sender, QueryParams params) throws Exception {
|
||||
super(sender, params);
|
||||
public CommandClearLog(CommandSender sender, QueryParams params, boolean async) throws Exception {
|
||||
super(sender, params, async);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -43,15 +43,15 @@ class LBToolListener extends PlayerListener
|
||||
params.setLocation(event.getClickedBlock().getLocation());
|
||||
try {
|
||||
if (mode == ToolMode.ROLLBACK)
|
||||
handler.new CommandRollback(player, params);
|
||||
handler.new CommandRollback(player, params, true);
|
||||
else if (mode == ToolMode.REDO)
|
||||
handler.new CommandRedo(player, params);
|
||||
handler.new CommandRedo(player, params, true);
|
||||
else if (mode == ToolMode.CLEARLOG)
|
||||
handler.new CommandClearLog(player, params);
|
||||
handler.new CommandClearLog(player, params, true);
|
||||
else if (mode == ToolMode.WRITELOGFILE)
|
||||
handler.new CommandWriteLogFile(player, params);
|
||||
handler.new CommandWriteLogFile(player, params, true);
|
||||
else
|
||||
handler.new CommandLookup(player, params);
|
||||
handler.new CommandLookup(player, params, true);
|
||||
} catch (final Exception ex) {
|
||||
player.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
|
@@ -98,7 +98,7 @@ public class LogBlock extends JavaPlugin
|
||||
if (config.tables.containsKey(world.getName().hashCode())) {
|
||||
params.world = world;
|
||||
try {
|
||||
commandsHandler.new CommandClearLog(new ConsoleCommandSender(getServer()), params);
|
||||
commandsHandler.new CommandClearLog(new ConsoleCommandSender(getServer()), params, true);
|
||||
} catch (final Exception ex) {
|
||||
log.severe("Failed to schedule ClearLog: " + ex.getMessage());
|
||||
}
|
||||
|
@@ -100,7 +100,9 @@ public class QueryParams implements Cloneable
|
||||
title.append("destructions ");
|
||||
else
|
||||
title.append("changes ");
|
||||
if (!players.isEmpty()) {
|
||||
if (players.size() > 10)
|
||||
title.append("from many players ");
|
||||
else if (!players.isEmpty()) {
|
||||
title.append("from player ");
|
||||
for (int i = 0; i < players.size(); i++)
|
||||
title.append(players.get(i) + ", ");
|
||||
|
Reference in New Issue
Block a user