forked from LogBlock/LogBlock
Fixed rollback with type parameter
This commit is contained in:
@@ -220,7 +220,6 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
params.order = Order.DESC;
|
params.order = Order.DESC;
|
||||||
params.sum = SummarizationMode.NONE;
|
params.sum = SummarizationMode.NONE;
|
||||||
params.bct = BlockChangeType.ALL;
|
params.bct = BlockChangeType.ALL;
|
||||||
params.selectFullBlockData = true;
|
|
||||||
new CommandRollback(sender, params);
|
new CommandRollback(sender, params);
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||||
@@ -237,7 +236,6 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
params.order = Order.ASC;
|
params.order = Order.ASC;
|
||||||
params.sum = SummarizationMode.NONE;
|
params.sum = SummarizationMode.NONE;
|
||||||
params.bct = BlockChangeType.ALL;
|
params.bct = BlockChangeType.ALL;
|
||||||
params.selectFullBlockData = true;
|
|
||||||
new CommandRedo(sender, params);
|
new CommandRedo(sender, params);
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||||
@@ -473,7 +471,7 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||||
}
|
}
|
||||||
sender.sendMessage(ChatColor.DARK_AQUA + "Searching " + params.getTitle() + ":");
|
sender.sendMessage(ChatColor.DARK_AQUA + "Searching " + params.getTitle() + ":");
|
||||||
rs = state.executeQuery(params.getQuery());
|
rs = state.executeQuery(params.getRollbackQuery());
|
||||||
final WorldEditor editor = new WorldEditor(logblock, params.world);
|
final WorldEditor editor = new WorldEditor(logblock, params.world);
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
editor.queueBlockChange(rs.getInt("type"), rs.getInt("replaced"), rs.getByte("data"), rs.getInt("x"), rs.getInt("y"), rs.getInt("z"), rs.getString("signtext"), rs.getShort("itemtype"), rs.getShort("itemamount"), rs.getByte("itemdata"));
|
editor.queueBlockChange(rs.getInt("type"), rs.getInt("replaced"), rs.getByte("data"), rs.getInt("x"), rs.getInt("y"), rs.getInt("z"), rs.getString("signtext"), rs.getShort("itemtype"), rs.getShort("itemamount"), rs.getByte("itemdata"));
|
||||||
@@ -492,8 +490,6 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
sender.sendMessage(ChatColor.GREEN + "Rollback finished successfully");
|
sender.sendMessage(ChatColor.GREEN + "Rollback finished successfully");
|
||||||
sender.sendMessage(ChatColor.GREEN + "Undid " + editor.getSuccesses() + " of " + changes + " changes (" + editor.getErrors() + " errors, " + editor.getBlacklistCollisions() + " blacklist collisions)");
|
sender.sendMessage(ChatColor.GREEN + "Undid " + editor.getSuccesses() + " of " + changes + " changes (" + editor.getErrors() + " errors, " + editor.getBlacklistCollisions() + " blacklist collisions)");
|
||||||
sender.sendMessage(ChatColor.GREEN + "Took: " + editor.getElapsedTime() + "ms");
|
sender.sendMessage(ChatColor.GREEN + "Took: " + editor.getElapsedTime() + "ms");
|
||||||
if (logblock.hasPermission(sender, "logblock.clearlog"))
|
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + "Delete the log with '/lb clearlog last'");
|
|
||||||
} catch (final SQLException ex) {
|
} catch (final SQLException ex) {
|
||||||
sender.sendMessage(ChatColor.RED + "SQL exception");
|
sender.sendMessage(ChatColor.RED + "SQL exception");
|
||||||
log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception", ex);
|
log.log(Level.SEVERE, "[LogBlock Rollback] SQL exception", ex);
|
||||||
@@ -518,7 +514,7 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
rs = state.executeQuery(params.getQuery());
|
rs = state.executeQuery(params.getRollbackQuery());
|
||||||
sender.sendMessage(ChatColor.DARK_AQUA + "Searching " + params.getTitle() + ":");
|
sender.sendMessage(ChatColor.DARK_AQUA + "Searching " + params.getTitle() + ":");
|
||||||
final WorldEditor editor = new WorldEditor(logblock, params.world);
|
final WorldEditor editor = new WorldEditor(logblock, params.world);
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
|
@@ -29,7 +29,7 @@ public class QueryParams implements Cloneable
|
|||||||
public Location loc = null;
|
public Location loc = null;
|
||||||
public Order order = Order.DESC;
|
public Order order = Order.DESC;
|
||||||
public List<String> players = new ArrayList<String>();
|
public List<String> players = new ArrayList<String>();
|
||||||
public boolean prepareToolQuery = false, selectFullBlockData = false;
|
public boolean prepareToolQuery = false;
|
||||||
public Selection sel = null;
|
public Selection sel = null;
|
||||||
public SummarizationMode sum = SummarizationMode.NONE;
|
public SummarizationMode sum = SummarizationMode.NONE;
|
||||||
public List<Integer> types = new ArrayList<Integer>();
|
public List<Integer> types = new ArrayList<Integer>();
|
||||||
@@ -63,29 +63,27 @@ public class QueryParams implements Cloneable
|
|||||||
|
|
||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
if (sum == SummarizationMode.NONE) {
|
if (sum == SummarizationMode.NONE) {
|
||||||
final StringBuilder select = new StringBuilder("SELECT ");
|
String select = "SELECT date, replaced, type, playername";
|
||||||
final StringBuilder from = new StringBuilder("FROM `" + getTable() + "` ");
|
String from = "FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) ";
|
||||||
if (selectFullBlockData)
|
|
||||||
select.append("replaced, type, data, x, y, z ");
|
|
||||||
else
|
|
||||||
select.append("date, replaced, type, playername");
|
|
||||||
if (!selectFullBlockData || players.size() > 0)
|
|
||||||
from.append("INNER JOIN `lb-players` USING (playerid) ");
|
|
||||||
if (types.size() == 0 || types.contains(63) || types.contains(68)) {
|
if (types.size() == 0 || types.contains(63) || types.contains(68)) {
|
||||||
select.append(", signtext");
|
select += ", signtext";
|
||||||
from.append("LEFT JOIN `" + getTable() + "-sign` USING (id) ");
|
from += "LEFT JOIN `" + getTable() + "-sign` USING (id) ";
|
||||||
}
|
}
|
||||||
if (types.size() == 0 || types.contains(23) || types.contains(54) || types.contains(61)) {
|
if (types.size() == 0 || types.contains(23) || types.contains(54) || types.contains(61)) {
|
||||||
select.append(", itemtype, itemamount, itemdata");
|
select += ", itemtype, itemamount, itemdata";
|
||||||
from.append("LEFT JOIN `" + getTable() + "-chest` USING (id) ");
|
from += "LEFT JOIN `" + getTable() + "-chest` USING (id) ";
|
||||||
}
|
}
|
||||||
return select.toString() + " " + from.toString() + getWhere() + getOrderBy() + getLimit();
|
return select + " " + from + getWhere() + getOrderBy() + getLimit();
|
||||||
} else if (sum == SummarizationMode.TYPES)
|
} else if (sum == SummarizationMode.TYPES)
|
||||||
return "SELECT type, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT type, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere() + "AND type > 0 GROUP BY type) UNION (SELECT replaced AS type, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere() + "AND replaced > 0 GROUP BY replaced)) AS t GROUP BY type ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
|
return "SELECT type, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT type, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere() + "AND type > 0 GROUP BY type) UNION (SELECT replaced AS type, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere() + "AND replaced > 0 GROUP BY replaced)) AS t GROUP BY type ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
|
||||||
else
|
else
|
||||||
return "SELECT playername, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT playerid, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` " + getWhere() + "AND type > 0 GROUP BY playerid) UNION (SELECT playerid, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` " + getWhere() + "AND replaced > 0 GROUP BY playerid)) AS t INNER JOIN `lb-players` USING (playerid) GROUP BY playerid ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
|
return "SELECT playername, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT playerid, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` " + getWhere() + "AND type > 0 GROUP BY playerid) UNION (SELECT playerid, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` " + getWhere() + "AND replaced > 0 GROUP BY playerid)) AS t INNER JOIN `lb-players` USING (playerid) GROUP BY playerid ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRollbackQuery() {
|
||||||
|
return "SELECT replaced, type, data, x, y, z, signtext, itemtype, itemamount, itemdata FROM `" + getTable() + "` " + (players.size() > 0 ? "INNER JOIN `lb-players` USING (playerid) " : "") + "LEFT JOIN `" + getTable() + "-sign` USING (id) LEFT JOIN `" + getTable() + "-chest` USING (id) " + getWhere() + getOrderBy() + getLimit();
|
||||||
|
}
|
||||||
|
|
||||||
public String getTable() {
|
public String getTable() {
|
||||||
return logblock.getConfig().tables.get(world.getName().hashCode());
|
return logblock.getConfig().tables.get(world.getName().hashCode());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user