From d89989216a60adafa3123563b8d587b193967d36 Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Thu, 16 Jun 2011 22:31:13 +0200 Subject: [PATCH] API: Added option to run commands sync or async with the caller thread --- src/de/diddiz/LogBlock/CommandsHandler.java | 55 +++++++++++---------- src/de/diddiz/LogBlock/LBToolListener.java | 10 ++-- src/de/diddiz/LogBlock/LogBlock.java | 2 +- src/de/diddiz/LogBlock/QueryParams.java | 4 +- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/de/diddiz/LogBlock/CommandsHandler.java b/src/de/diddiz/LogBlock/CommandsHandler.java index 244b4d6..c47d45c 100644 --- a/src/de/diddiz/LogBlock/CommandsHandler.java +++ b/src/de/diddiz/LogBlock/CommandsHandler.java @@ -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 argsList = new ArrayList(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 diff --git a/src/de/diddiz/LogBlock/LBToolListener.java b/src/de/diddiz/LogBlock/LBToolListener.java index bde2d72..3eaec8f 100644 --- a/src/de/diddiz/LogBlock/LBToolListener.java +++ b/src/de/diddiz/LogBlock/LBToolListener.java @@ -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()); } diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index d8dc450..cd50973 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -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()); } diff --git a/src/de/diddiz/LogBlock/QueryParams.java b/src/de/diddiz/LogBlock/QueryParams.java index 19cd831..121e603 100644 --- a/src/de/diddiz/LogBlock/QueryParams.java +++ b/src/de/diddiz/LogBlock/QueryParams.java @@ -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) + ", ");