Improve code and error logging

This commit is contained in:
Keir Nellyer 2016-07-09 14:36:30 -04:00
parent 0783f3b693
commit 87df6804c9
1 changed files with 36 additions and 15 deletions

View File

@ -11,6 +11,7 @@ import mineplex.core.chatsnap.command.PushSnapshotsCommand;
import mineplex.core.chatsnap.command.PushSnapshotsHandler; import mineplex.core.chatsnap.command.PushSnapshotsHandler;
import mineplex.core.command.CommandCenter; import mineplex.core.command.CommandCenter;
import mineplex.core.common.jsonchat.JsonMessage; import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.portal.Portal; import mineplex.core.portal.Portal;
import mineplex.core.report.command.ReportHandlerNotification; import mineplex.core.report.command.ReportHandlerNotification;
@ -36,7 +37,7 @@ public class ReportManager
private static final int ABUSE_BAN_THRESHOLD = 1; private static final int ABUSE_BAN_THRESHOLD = 1;
private JavaPlugin _javaPlugin; private JavaPlugin _plugin;
private SnapshotManager _snapshotManager; private SnapshotManager _snapshotManager;
private CoreClientManager _clientManager; private CoreClientManager _clientManager;
private String _serverName; private String _serverName;
@ -45,10 +46,10 @@ public class ReportManager
private final ReportRepository _reportRepository; private final ReportRepository _reportRepository;
private final ReportProfileRepository _reportProfileRepository; private final ReportProfileRepository _reportProfileRepository;
public ReportManager(JavaPlugin javaPlugin, SnapshotManager snapshotManager, CoreClientManager clientManager, public ReportManager(JavaPlugin plugin, SnapshotManager snapshotManager, CoreClientManager clientManager,
String serverName, int serverWeight) String serverName, int serverWeight)
{ {
_javaPlugin = javaPlugin; _plugin = plugin;
_snapshotManager = snapshotManager; _snapshotManager = snapshotManager;
_clientManager = clientManager; _clientManager = clientManager;
_serverName = serverName; _serverName = serverName;
@ -56,11 +57,11 @@ public class ReportManager
_reportRepository = new ReportRepository(this); _reportRepository = new ReportRepository(this);
_reportProfileRepository = new ReportProfileRepository(javaPlugin); _reportProfileRepository = new ReportProfileRepository(plugin);
ServerCommandManager commandManager = ServerCommandManager.getInstance(); ServerCommandManager commandManager = ServerCommandManager.getInstance();
ReportNotificationCallback notificationCallback = new ReportNotificationCallback(this); ReportNotificationCallback notificationCallback = new ReportNotificationCallback(this);
PushSnapshotsHandler pushHandler = new PushSnapshotsHandler(_snapshotManager, _javaPlugin.getLogger()); PushSnapshotsHandler pushHandler = new PushSnapshotsHandler(_snapshotManager, _plugin.getLogger());
commandManager.registerCommandType("ReportHandlerNotification", ReportHandlerNotification.class, notificationCallback); commandManager.registerCommandType("ReportHandlerNotification", ReportHandlerNotification.class, notificationCallback);
commandManager.registerCommandType("PushSnapshotsCommand", PushSnapshotsCommand.class, pushHandler); commandManager.registerCommandType("PushSnapshotsCommand", PushSnapshotsCommand.class, pushHandler);
} }
@ -92,7 +93,7 @@ public class ReportManager
Report report = _reportRepository.getOngoingReport(suspectId, category) Report report = _reportRepository.getOngoingReport(suspectId, category)
.exceptionally(throwable -> { .exceptionally(throwable -> {
_javaPlugin.getLogger().log(Level.SEVERE, "Error fetching ongoing report.", throwable); _plugin.getLogger().log(Level.SEVERE, "Error fetching ongoing report.", throwable);
return Optional.empty(); return Optional.empty();
}).thenCompose(reportIdOptional -> reportIdOptional.isPresent() ? _reportRepository.getReport(reportIdOptional.get()) : CompletableFuture.completedFuture(null)) }).thenCompose(reportIdOptional -> reportIdOptional.isPresent() ? _reportRepository.getReport(reportIdOptional.get()) : CompletableFuture.completedFuture(null))
.join(); .join();
@ -104,15 +105,15 @@ public class ReportManager
report.addReportReason(new ReportMessage(reporterId, reason, _serverName, _serverWeight)); report.addReportReason(new ReportMessage(reporterId, reason, _serverName, _serverWeight));
_reportRepository.updateReport(report) saveReport(report)
.exceptionally(throwable -> { .exceptionally(throwable -> {
_javaPlugin.getLogger().log(Level.SEVERE, "Error updating report to database.", throwable); _plugin.getLogger().log(Level.SEVERE, "Error updating report to database.", throwable);
return null; return null;
}).join(); // join (block) so that report is assigned an id }).join(); // join (block) so that report is assigned an id
return report; return report;
}).exceptionally(throwable -> { }).exceptionally(throwable -> {
_javaPlugin.getLogger().log(Level.SEVERE, "Error whilst reporting player.", throwable); _plugin.getLogger().log(Level.SEVERE, "Error whilst reporting player.", throwable);
return null; return null;
}); });
} }
@ -156,12 +157,14 @@ public class ReportManager
pushCommand.publish(); pushCommand.publish();
} }
_reportRepository.updateReport(report); saveReport(report);
Portal.transferPlayer(reportHandler.getName(), report.getLatestMessage().getServer()); Portal.transferPlayer(reportHandler.getName(), report.getLatestMessage().getServer());
// Show user details of the report every x seconds // Show user details of the report every x seconds
new ReportHandlerMessageTask(this, report).runTaskTimer(_javaPlugin, 20L * 10, 20L * 10); new ReportHandlerMessageTask(this, report).runTaskTimer(_plugin, 20L * 10, 20L * 10);
reportHandler.sendMessage(
F.main(getReportPrefix(reportId), C.cAqua + "You are now handling this report."));
} }
} }
@ -190,7 +193,10 @@ public class ReportManager
} }
report.setReportResult(reportResult); report.setReportResult(reportResult);
_reportRepository.updateReport(report).thenAccept(reportId ->
CompletableFuture<Long> saveCompletableFuture = saveReport(report);
saveCompletableFuture.thenAccept(reportId ->
{ {
_reportRepository.clearCache(reportId); _reportRepository.clearCache(reportId);
@ -208,6 +214,18 @@ public class ReportManager
}); });
} }
public CompletableFuture<Long> saveReport(Report report)
{
CompletableFuture<Long> updateCompletableFuture = _reportRepository.updateReport(report);
updateCompletableFuture.exceptionally((throwable) -> {
_plugin.getLogger().log(Level.SEVERE, "Error whilst saving report.", throwable);
return null;
});
return updateCompletableFuture;
}
/** /**
* Fetches the amount of reports this player has filed which have been marked abusive, * Fetches the amount of reports this player has filed which have been marked abusive,
* this value is then compared with the abuse threshold to determine whether the player * this value is then compared with the abuse threshold to determine whether the player
@ -222,7 +240,7 @@ public class ReportManager
return _reportRepository.getResultCount(accountId, ReportResultType.ABUSIVE) return _reportRepository.getResultCount(accountId, ReportResultType.ABUSIVE)
.exceptionally(throwable -> { .exceptionally(throwable -> {
_javaPlugin.getLogger().log(Level.SEVERE, "Error fetching user report result count.", throwable); _plugin.getLogger().log(Level.SEVERE, "Error fetching user report result count.", throwable);
return 0; return 0;
}).thenApply(abusiveReportsCount -> abusiveReportsCount < ABUSE_BAN_THRESHOLD); }).thenApply(abusiveReportsCount -> abusiveReportsCount < ABUSE_BAN_THRESHOLD);
} }
@ -278,6 +296,9 @@ public class ReportManager
} }
return false; return false;
}).exceptionally(throwable -> {
_plugin.getLogger().log(Level.SEVERE, "Error fetching reports player is handling.", throwable);
return true;
}); });
} }
@ -314,7 +335,7 @@ public class ReportManager
if (priority <= 0) if (priority <= 0)
{ {
System.out.println("Closing report due to expiration"); System.out.println("Closing report due to expiration (#" + report.getId().orElse((long) -1) + ").");
closeReport(report, null, new ReportResult(ReportResultType.EXPIRED, null)); closeReport(report, null, new ReportResult(ReportResultType.EXPIRED, null));
} }