mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-04-24 18:40:34 +08:00
Improvements & Fix #147
- RslPlugin v1.4.0 - RunnableFactory - Prevented a collision if multiple RslPlugin implementations are installed. - Queues now wait for each other.
This commit is contained in:
parent
b0045077f6
commit
8cf22de4b6
@ -16,7 +16,7 @@ public class Log {
|
|||||||
* @param message "Message" will show up as [INFO][Plan]: Message
|
* @param message "Message" will show up as [INFO][Plan]: Message
|
||||||
*/
|
*/
|
||||||
public static void info(String message) {
|
public static void info(String message) {
|
||||||
Plan.getPluginInstance().getPluginLogger().info(message);
|
Plan.getInstance().getPluginLogger().info(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,6 +22,7 @@ package main.java.com.djrapitops.plan;
|
|||||||
import com.djrapitops.javaplugin.api.ColorScheme;
|
import com.djrapitops.javaplugin.api.ColorScheme;
|
||||||
import com.djrapitops.javaplugin.RslPlugin;
|
import com.djrapitops.javaplugin.RslPlugin;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -114,7 +115,7 @@ public class Plan extends RslPlugin<Plan> {
|
|||||||
this.inspectCache = new InspectCacheHandler(this);
|
this.inspectCache = new InspectCacheHandler(this);
|
||||||
this.analysisCache = new AnalysisCacheHandler(this);
|
this.analysisCache = new AnalysisCacheHandler(this);
|
||||||
registerListeners();
|
registerListeners();
|
||||||
new TPSCountTimer(this).runTaskTimer(1000, 20);
|
getRunnableFactory().createNew(new TPSCountTimer(this)).runTaskTimer(1000, 20);
|
||||||
|
|
||||||
registerCommand(new PlanCommand(this));
|
registerCommand(new PlanCommand(this));
|
||||||
|
|
||||||
@ -231,7 +232,7 @@ public class Plan extends RslPlugin<Plan> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startAnalysisRefreshTask(int analysisRefreshMinutes) throws IllegalStateException, IllegalArgumentException {
|
private void startAnalysisRefreshTask(int analysisRefreshMinutes) throws IllegalStateException, IllegalArgumentException {
|
||||||
RslTask task = new RslBukkitRunnable<Plan>("PeriodicalAnalysisTask") {
|
RslTask task = getRunnableFactory().createNew("PeriodicalAnalysisTask", new RslRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!analysisCache.isCached()) {
|
if (!analysisCache.isCached()) {
|
||||||
@ -240,19 +241,19 @@ public class Plan extends RslPlugin<Plan> {
|
|||||||
analysisCache.updateCache();
|
analysisCache.updateCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimerAsynchronously(analysisRefreshMinutes * 60 * 20, analysisRefreshMinutes * 60 * 20);
|
}).runTaskTimerAsynchronously(analysisRefreshMinutes * 60 * 20, analysisRefreshMinutes * 60 * 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startBootAnalysisTask() throws IllegalStateException, IllegalArgumentException {
|
private void startBootAnalysisTask() throws IllegalStateException, IllegalArgumentException {
|
||||||
Log.info(Phrase.ANALYSIS_BOOT_NOTIFY + "");
|
Log.info(Phrase.ANALYSIS_BOOT_NOTIFY + "");
|
||||||
RslTask bootAnalysisTask = new RslBukkitRunnable<Plan>("BootAnalysisTask") {
|
RslTask bootAnalysisTask = getRunnableFactory().createNew("BootAnalysisTask", new RslRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.info(Phrase.ANALYSIS_BOOT + "");
|
Log.info(Phrase.ANALYSIS_BOOT + "");
|
||||||
analysisCache.updateCache();
|
analysisCache.updateCache();
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskLaterAsynchronously(30 * 20);
|
}).runTaskLaterAsynchronously(30 * 20);
|
||||||
bootAnalysisTaskID = bootAnalysisTask.getTaskId();
|
bootAnalysisTaskID = bootAnalysisTask.getTaskId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,6 +430,6 @@ public class Plan extends RslPlugin<Plan> {
|
|||||||
* @return this object.
|
* @return this object.
|
||||||
*/
|
*/
|
||||||
public static Plan getInstance() {
|
public static Plan getInstance() {
|
||||||
return (Plan) getPluginInstance();
|
return (Plan) getPluginInstance(Plan.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package main.java.com.djrapitops.plan.command.commands;
|
|||||||
import com.djrapitops.javaplugin.command.CommandType;
|
import com.djrapitops.javaplugin.command.CommandType;
|
||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.Permissions;
|
import main.java.com.djrapitops.plan.Permissions;
|
||||||
@ -61,7 +61,7 @@ public class AnalyzeCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
analysisCache.updateCache();
|
analysisCache.updateCache();
|
||||||
}
|
}
|
||||||
final RslTask task = new RslBukkitRunnable<Plan>("AnalysisMessageSenderTask") {
|
final RslTask task = plugin.getRunnableFactory().createNew("AnalysisMessageSenderTask", new RslRunnable() {
|
||||||
private int timesrun = 0;
|
private int timesrun = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -78,7 +78,7 @@ public class AnalyzeCommand extends SubCommand {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(1 * 20, 5 * 20);
|
}).runTaskTimer(1 * 20, 5 * 20);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import main.java.com.djrapitops.plan.command.ConditionUtils;
|
import main.java.com.djrapitops.plan.command.ConditionUtils;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -50,7 +51,7 @@ public class InspectCommand extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
String playerName = MiscUtils.getPlayerName(args, sender);
|
String playerName = MiscUtils.getPlayerName(args, sender);
|
||||||
final RslTask inspectTask = new RslBukkitRunnable<Plan>("InspectTask") {
|
final RslTask inspectTask = plugin.getRunnableFactory().createNew(new RslRunnable("InspectTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
UUID uuid = ConditionUtils.getUUID(playerName);
|
UUID uuid = ConditionUtils.getUUID(playerName);
|
||||||
@ -69,7 +70,7 @@ public class InspectCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||||
inspectCache.cache(uuid);
|
inspectCache.cache(uuid);
|
||||||
final RslTask inspectMessageSenderTask = new RslBukkitRunnable<Plan>("InspectMessageSenderTask") {
|
final RslTask inspectMessageSenderTask = plugin.getRunnableFactory().createNew(new RslRunnable("InspectMessageSenderTask") {
|
||||||
private int timesrun = 0;
|
private int timesrun = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -87,10 +88,10 @@ public class InspectCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}.runTaskTimer(1 * 20, 5 * 20);
|
}).runTaskTimer(1 * 20, 5 * 20);
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.Permissions;
|
import main.java.com.djrapitops.plan.Permissions;
|
||||||
@ -56,7 +57,7 @@ public class QuickAnalyzeCommand extends SubCommand {
|
|||||||
analysisCache.updateCache();
|
analysisCache.updateCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
RslTask analysisMessageSenderTask = new RslBukkitRunnable<Plan>("QanalysisMessageSenderTask") {
|
RslTask analysisMessageSenderTask = plugin.getRunnableFactory().createNew(new RslRunnable("QanalysisMessageSenderTask") {
|
||||||
private int timesrun = 0;
|
private int timesrun = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,7 +75,7 @@ public class QuickAnalyzeCommand extends SubCommand {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(1 * 20, 5 * 20);
|
}).runTaskTimer(1 * 20, 5 * 20);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
@ -45,7 +46,7 @@ public class QuickInspectCommand extends SubCommand {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCommand(ISender sender, String commandLabel, String[] args) {
|
public boolean onCommand(ISender sender, String commandLabel, String[] args) {
|
||||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.QUICK_INSPECT_OTHER);
|
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.QUICK_INSPECT_OTHER);
|
||||||
final RslTask inspectTask = new RslBukkitRunnable<Plan>("QinspectTask") {
|
final RslTask inspectTask = plugin.getRunnableFactory().createNew(new RslRunnable("QinspectTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
UUID uuid = ConditionUtils.getUUID(playerName);
|
UUID uuid = ConditionUtils.getUUID(playerName);
|
||||||
@ -64,7 +65,7 @@ public class QuickInspectCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||||
inspectCache.cache(uuid);
|
inspectCache.cache(uuid);
|
||||||
final RslTask inspectMessageSenderTask = new RslBukkitRunnable<Plan>("QinspectMessageSenderTask") {
|
final RslTask inspectMessageSenderTask = plugin.getRunnableFactory().createNew(new RslRunnable("QinspectMessageSenderTask") {
|
||||||
private int timesrun = 0;
|
private int timesrun = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,10 +83,10 @@ public class QuickInspectCommand extends SubCommand {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(1 * 20, 5 * 20);
|
}).runTaskTimer(1 * 20, 5 * 20);
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import com.djrapitops.javaplugin.utilities.FormattingUtils;
|
import com.djrapitops.javaplugin.utilities.FormattingUtils;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -18,8 +19,6 @@ import main.java.com.djrapitops.plan.command.Condition;
|
|||||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This subcommand is used to search for a user, and to view all matches' data.
|
* This subcommand is used to search for a user, and to view all matches' data.
|
||||||
@ -51,7 +50,7 @@ public class SearchCommand extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(Phrase.CMD_SEARCH_SEARCHING + "");
|
sender.sendMessage(Phrase.CMD_SEARCH_SEARCHING + "");
|
||||||
final RslTask searchTask = new RslBukkitRunnable<Plan>("SearchTask: " + Arrays.toString(args)) {
|
final RslTask searchTask =plugin.getRunnableFactory().createNew(new RslRunnable("SearchTask: " + Arrays.toString(args)) {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
@ -70,7 +69,7 @@ public class SearchCommand extends SubCommand {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,13 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.Permissions;
|
import main.java.com.djrapitops.plan.Permissions;
|
||||||
import main.java.com.djrapitops.plan.Phrase;
|
import main.java.com.djrapitops.plan.Phrase;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manage subcommand is used to backup a database to a .db file.
|
* This manage subcommand is used to backup a database to a .db file.
|
||||||
@ -62,7 +61,7 @@ public class ManageBackupCommand extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
final Database copyFromDB = database;
|
final Database copyFromDB = database;
|
||||||
(new RslBukkitRunnable<Plan>("BackupTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("BackupTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.Permissions;
|
import main.java.com.djrapitops.plan.Permissions;
|
||||||
import main.java.com.djrapitops.plan.Phrase;
|
import main.java.com.djrapitops.plan.Phrase;
|
||||||
@ -59,7 +60,7 @@ public class ManageCleanCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Database clearThisDB = clearDB;
|
final Database clearThisDB = clearDB;
|
||||||
(new RslBukkitRunnable<Plan>("DBCleanTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("DBCleanTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
@ -11,8 +12,6 @@ import main.java.com.djrapitops.plan.Permissions;
|
|||||||
import main.java.com.djrapitops.plan.Phrase;
|
import main.java.com.djrapitops.plan.Phrase;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manage subcommand is used to clear a database of all data.
|
* This manage subcommand is used to clear a database of all data.
|
||||||
@ -65,7 +64,7 @@ public class ManageClearCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Database clearThisDB = clearDB;
|
final Database clearThisDB = clearDB;
|
||||||
(new RslBukkitRunnable<Plan>("DBClearTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("DBClearTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||||
|
@ -3,7 +3,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
|||||||
import com.djrapitops.javaplugin.command.CommandType;
|
import com.djrapitops.javaplugin.command.CommandType;
|
||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -63,12 +63,12 @@ public class ManageImportCommand extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] arguments = new String[args.length-1];
|
String[] arguments = new String[args.length - 1];
|
||||||
for (int i = 1; i < args.length; i++) {
|
for (int i = 1; i < args.length; i++) {
|
||||||
arguments[i-1] = args[i];
|
arguments[i - 1] = args[i];
|
||||||
}
|
}
|
||||||
final Importer importer = importPlugins.get(importFromPlugin);
|
final Importer importer = importPlugins.get(importFromPlugin);
|
||||||
RslTask asyncImportTask = new RslBukkitRunnable<Plan>("ImportTask") {
|
RslTask asyncImportTask = plugin.getRunnableFactory().createNew(new RslRunnable("ImportTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
sender.sendMessage(Phrase.MANAGE_IMPORTING + "");
|
sender.sendMessage(Phrase.MANAGE_IMPORTING + "");
|
||||||
@ -80,7 +80,7 @@ public class ManageImportCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ public class ManageImportCommand extends SubCommand {
|
|||||||
sender.sendMessage(Phrase.CMD_FOOTER.parse());
|
sender.sendMessage(Phrase.CMD_FOOTER.parse());
|
||||||
Map<String, Importer> importers = ImportUtils.getImporters();
|
Map<String, Importer> importers = ImportUtils.getImporters();
|
||||||
for (String key : importers.keySet()) {
|
for (String key : importers.keySet()) {
|
||||||
sender.sendMessage(Phrase.CMD_BALL+" "+key+": "+importers.get(key).getInfo());
|
sender.sendMessage(Phrase.CMD_BALL + " " + key + ": " + importers.get(key).getInfo());
|
||||||
}
|
}
|
||||||
sender.sendMessage(Phrase.CMD_FOOTER.parse());
|
sender.sendMessage(Phrase.CMD_FOOTER.parse());
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -13,8 +14,6 @@ import main.java.com.djrapitops.plan.Phrase;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manage subcommand is used to move all data from one database to another.
|
* This manage subcommand is used to move all data from one database to another.
|
||||||
@ -89,7 +88,7 @@ public class ManageMoveCommand extends SubCommand {
|
|||||||
|
|
||||||
final Database moveFromDB = fromDatabase;
|
final Database moveFromDB = fromDatabase;
|
||||||
final Database moveToDB = toDatabase;
|
final Database moveToDB = toDatabase;
|
||||||
(new RslBukkitRunnable<Plan>("DBMoveTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("DBMoveTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final Collection<UUID> uuids = ManageUtils.getUUIDS(moveFromDB);
|
final Collection<UUID> uuids = ManageUtils.getUUIDS(moveFromDB);
|
||||||
|
@ -3,7 +3,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
|||||||
import com.djrapitops.javaplugin.command.CommandType;
|
import com.djrapitops.javaplugin.command.CommandType;
|
||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -13,8 +13,6 @@ import main.java.com.djrapitops.plan.Phrase;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
import main.java.com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manage subcommand is used to remove a single player's data from the
|
* This manage subcommand is used to remove a single player's data from the
|
||||||
@ -46,7 +44,7 @@ public class ManageRemoveCommand extends SubCommand {
|
|||||||
|
|
||||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE);
|
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE);
|
||||||
|
|
||||||
(new RslBukkitRunnable<Plan>("DBRemoveTask " + playerName) {
|
plugin.getRunnableFactory().createNew(new RslRunnable("DBRemoveTask " + playerName) {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
UUID uuid;
|
UUID uuid;
|
||||||
@ -85,7 +83,7 @@ public class ManageRemoveCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}).runTaskAsynchronously(plugin);
|
}).runTaskAsynchronously();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.djrapitops.javaplugin.command.CommandType;
|
|||||||
import com.djrapitops.javaplugin.command.SubCommand;
|
import com.djrapitops.javaplugin.command.SubCommand;
|
||||||
import com.djrapitops.javaplugin.command.sender.ISender;
|
import com.djrapitops.javaplugin.command.sender.ISender;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -16,8 +17,6 @@ import main.java.com.djrapitops.plan.Plan;
|
|||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manage subcommand is used to restore a backup.db file in the
|
* This manage subcommand is used to restore a backup.db file in the
|
||||||
@ -72,7 +71,7 @@ public class ManageRestoreCommand extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
final Database copyToDB = database;
|
final Database copyToDB = database;
|
||||||
RslTask asyncRestoreTask = new RslBukkitRunnable<Plan>("RestoreTask") {
|
RslTask asyncRestoreTask = plugin.getRunnableFactory().createNew(new RslRunnable("RestoreTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String backupDBName = args[0];
|
String backupDBName = args[0];
|
||||||
@ -109,7 +108,7 @@ public class ManageRestoreCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
sender.sendMessage(Phrase.MANAGE_DATABASE_FAILURE + "");
|
sender.sendMessage(Phrase.MANAGE_DATABASE_FAILURE + "");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.data.cache;
|
package main.java.com.djrapitops.plan.data.cache;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -34,6 +35,13 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Class contains the Cache.
|
* This Class contains the Cache.
|
||||||
@ -115,7 +123,7 @@ public class DataCacheHandler extends LocationCache {
|
|||||||
*/
|
*/
|
||||||
public void startQueues() {
|
public void startQueues() {
|
||||||
clearTask = new DataCacheClearQueue(this);
|
clearTask = new DataCacheClearQueue(this);
|
||||||
saveTask = new DataCacheSaveQueue(plugin, clearTask);
|
saveTask = new DataCacheSaveQueue(plugin, this);
|
||||||
getTask = new DataCacheGetQueue(plugin);
|
getTask = new DataCacheGetQueue(plugin);
|
||||||
processTask = new DataCacheProcessQueue(this);
|
processTask = new DataCacheProcessQueue(this);
|
||||||
}
|
}
|
||||||
@ -139,7 +147,7 @@ public class DataCacheHandler extends LocationCache {
|
|||||||
} else {
|
} else {
|
||||||
clearAfterXsaves = configValue;
|
clearAfterXsaves = configValue;
|
||||||
}
|
}
|
||||||
RslTask asyncPeriodicCacheSaveTask = new RslBukkitRunnable<Plan>("PeriodicCacheSaveTask") {
|
RslTask asyncPeriodicCacheSaveTask = plugin.getRunnableFactory().createNew(new RslRunnable("PeriodicCacheSaveTask") {
|
||||||
private int timesSaved = 0;
|
private int timesSaved = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -159,12 +167,12 @@ public class DataCacheHandler extends LocationCache {
|
|||||||
saveUnsavedTPSHistory();
|
saveUnsavedTPSHistory();
|
||||||
timesSaved++;
|
timesSaved++;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.toLog(this.getClass().getName() + "(" + this.getTaskName() + ")", e);
|
Log.toLog(this.getClass().getName() + "(" + this.getName() + ")", e);
|
||||||
} finally {
|
} finally {
|
||||||
periodicTaskIsSaving = false;
|
periodicTaskIsSaving = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimerAsynchronously(60 * 20 * minutes, 60 * 20 * minutes);
|
}).runTaskTimerAsynchronously(60 * 20 * minutes, 60 * 20 * minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -518,7 +526,7 @@ public class DataCacheHandler extends LocationCache {
|
|||||||
* Calls all the methods that are ran when PlayerJoinEvent is fired
|
* Calls all the methods that are ran when PlayerJoinEvent is fired
|
||||||
*/
|
*/
|
||||||
public void handleReload() {
|
public void handleReload() {
|
||||||
RslTask asyncReloadCacheUpdateTask = (new RslBukkitRunnable<Plan>("ReloadCacheUpdateTask") {
|
RslTask asyncReloadCacheUpdateTask = plugin.getRunnableFactory().createNew(new RslRunnable("ReloadCacheUpdateTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class representing a queue consumer.
|
* Abstract class representing a queue consumer.
|
||||||
@ -10,7 +9,7 @@ import main.java.com.djrapitops.plan.Plan;
|
|||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
* @param <T>
|
* @param <T>
|
||||||
*/
|
*/
|
||||||
public abstract class Consumer<T> extends RslBukkitRunnable<Plan> {
|
public abstract class Consumer<T> extends RslRunnable {
|
||||||
|
|
||||||
boolean run;
|
boolean run;
|
||||||
final BlockingQueue<T> queue;
|
final BlockingQueue<T> queue;
|
||||||
|
@ -46,15 +46,19 @@ public class DataCacheGetQueue extends Queue<Map<UUID, List<DBCallableProcessor>
|
|||||||
Log.debug(uuid + ": Scheduling for get");
|
Log.debug(uuid + ": Scheduling for get");
|
||||||
try {
|
try {
|
||||||
Map<UUID, List<DBCallableProcessor>> map = new HashMap<>();
|
Map<UUID, List<DBCallableProcessor>> map = new HashMap<>();
|
||||||
if (map.get(uuid) == null) {
|
map.put(uuid, Arrays.asList(processors));
|
||||||
map.put(uuid, new ArrayList<>());
|
|
||||||
}
|
|
||||||
map.get(uuid).addAll(Arrays.asList(processors));
|
|
||||||
queue.add(map);
|
queue.add(map);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
Log.error(Phrase.ERROR_TOO_SMALL_QUEUE.parse("Get Queue", Settings.PROCESS_GET_LIMIT.getNumber() + ""));
|
Log.error(Phrase.ERROR_TOO_SMALL_QUEUE.parse("Get Queue", Settings.PROCESS_GET_LIMIT.getNumber() + ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean containsUUIDtoBeCached(UUID uuid) {
|
||||||
|
if (uuid == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return new ArrayList<>(queue).stream().anyMatch((map) -> (map.get(uuid) != null && map.get(uuid).size() >= 2)); // Map has 2 processors if being cached
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class GetConsumer extends Consumer<Map<UUID, List<DBCallableProcessor>>> {
|
class GetConsumer extends Consumer<Map<UUID, List<DBCallableProcessor>>> {
|
||||||
|
@ -66,7 +66,10 @@ public class DataCacheProcessQueue extends Queue<HandlingInfo> {
|
|||||||
* @return true/false
|
* @return true/false
|
||||||
*/
|
*/
|
||||||
public boolean containsUUID(UUID uuid) {
|
public boolean containsUUID(UUID uuid) {
|
||||||
return new ArrayList<>(queue).stream().map(d -> d.getUuid()).collect(Collectors.toList()).contains(uuid);
|
if (uuid == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return new ArrayList<>(queue).stream().anyMatch(info -> info.getUuid().equals(uuid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,6 +87,10 @@ class ProcessConsumer extends Consumer<HandlingInfo> {
|
|||||||
if (handler == null) {
|
if (handler == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (handler.getGetTask().containsUUIDtoBeCached(info.getUuid())) { // Wait for get queue.
|
||||||
|
queue.add(info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Log.debug(info.getUuid() + ": Processing type: " + info.getType().name());
|
Log.debug(info.getUuid() + ": Processing type: " + info.getType().name());
|
||||||
DBCallableProcessor p = new DBCallableProcessor() {
|
DBCallableProcessor p = new DBCallableProcessor() {
|
||||||
@Override
|
@Override
|
||||||
@ -105,6 +112,7 @@ class ProcessConsumer extends Consumer<HandlingInfo> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ProcessSetup extends Setup<HandlingInfo> {
|
class ProcessSetup extends Setup<HandlingInfo> {
|
||||||
|
|
||||||
ProcessSetup(BlockingQueue<HandlingInfo> q, DataCacheHandler h) {
|
ProcessSetup(BlockingQueue<HandlingInfo> q, DataCacheHandler h) {
|
||||||
super(new ProcessConsumer(q, h), new ProcessConsumer(q, h));
|
super(new ProcessConsumer(q, h), new ProcessConsumer(q, h));
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import main.java.com.djrapitops.plan.Phrase;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.Settings;
|
import main.java.com.djrapitops.plan.Settings;
|
||||||
import main.java.com.djrapitops.plan.data.UserData;
|
import main.java.com.djrapitops.plan.data.UserData;
|
||||||
|
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,18 +21,17 @@ import main.java.com.djrapitops.plan.database.Database;
|
|||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
public class DataCacheSaveQueue extends Queue<UserData>{
|
public class DataCacheSaveQueue extends Queue<UserData> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor, starts the new Thread for saving.
|
* Class constructor, starts the new Thread for saving.
|
||||||
*
|
*
|
||||||
* @param plugin current instance of Plan
|
* @param plugin current instance of Plan
|
||||||
* @param clear current instance of the Clear task to schedule clear if
|
* @param handler DataCacheHandler
|
||||||
* UserData.clearAfterSave() is true
|
|
||||||
*/
|
*/
|
||||||
public DataCacheSaveQueue(Plan plugin, DataCacheClearQueue clear) {
|
public DataCacheSaveQueue(Plan plugin, DataCacheHandler handler) {
|
||||||
super(new ArrayBlockingQueue(Settings.PROCESS_SAVE_LIMIT.getNumber()));
|
super(new ArrayBlockingQueue(Settings.PROCESS_SAVE_LIMIT.getNumber()));
|
||||||
setup = new SaveSetup(queue, clear, plugin.getDB());
|
setup = new SaveSetup(queue, handler, plugin.getDB());
|
||||||
setup.go();
|
setup.go();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,19 +84,22 @@ public class DataCacheSaveQueue extends Queue<UserData>{
|
|||||||
* @return true/false
|
* @return true/false
|
||||||
*/
|
*/
|
||||||
public boolean containsUUID(UUID uuid) {
|
public boolean containsUUID(UUID uuid) {
|
||||||
return new ArrayList<>(queue).stream().map(d -> d.getUuid()).collect(Collectors.toList()).contains(uuid);
|
if (uuid == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return new ArrayList<>(queue).stream().anyMatch(d -> d.getUuid().equals(uuid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SaveConsumer extends Consumer<UserData> {
|
class SaveConsumer extends Consumer<UserData> {
|
||||||
|
|
||||||
private Database db;
|
private Database db;
|
||||||
private DataCacheClearQueue clear;
|
private DataCacheHandler handler;
|
||||||
|
|
||||||
SaveConsumer(BlockingQueue q, DataCacheClearQueue clear, Database db) {
|
SaveConsumer(BlockingQueue q, DataCacheHandler handler, Database db) {
|
||||||
super(q, "SaveQueueConsumer");
|
super(q, "SaveQueueConsumer");
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.clear = clear;
|
this.handler = handler;
|
||||||
run = true;
|
run = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,14 +109,18 @@ class SaveConsumer extends Consumer<UserData> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
UUID uuid = data.getUuid();
|
UUID uuid = data.getUuid();
|
||||||
|
if (handler.getProcessTask().containsUUID(uuid)) { // Wait for process queue.
|
||||||
|
queue.add(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Log.debug(uuid + ": Saving: " + uuid);
|
Log.debug(uuid + ": Saving: " + uuid);
|
||||||
try {
|
try {
|
||||||
db.saveUserData(data);
|
db.saveUserData(data);
|
||||||
data.stopAccessing();
|
data.stopAccessing();
|
||||||
Log.debug(uuid + ": Saved!");
|
Log.debug(uuid + ": Saved!");
|
||||||
if (data.shouldClearAfterSave()) {
|
if (data.shouldClearAfterSave()) {
|
||||||
if (clear != null) {
|
if (handler != null) {
|
||||||
clear.scheduleForClear(uuid);
|
handler.getClearTask().scheduleForClear(uuid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
@ -127,14 +134,15 @@ class SaveConsumer extends Consumer<UserData> {
|
|||||||
if (db != null) {
|
if (db != null) {
|
||||||
db = null;
|
db = null;
|
||||||
}
|
}
|
||||||
if (clear != null) {
|
if (handler != null) {
|
||||||
clear = null;
|
handler = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SaveSetup extends Setup<UserData>{
|
class SaveSetup extends Setup<UserData> {
|
||||||
SaveSetup(BlockingQueue<UserData> q, DataCacheClearQueue clear, Database db) {
|
|
||||||
super(new SaveConsumer(q, clear, db), new SaveConsumer(q, clear, db));
|
SaveSetup(BlockingQueue<UserData> q, DataCacheHandler handler, Database db) {
|
||||||
|
super(new SaveConsumer(q, handler, db), new SaveConsumer(q, handler, db));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,7 +23,7 @@ public abstract class Setup<T> {
|
|||||||
|
|
||||||
void go() {
|
void go() {
|
||||||
for (Consumer<T> consumer : consumers) {
|
for (Consumer<T> consumer : consumers) {
|
||||||
consumer.runTaskAsynchronously();
|
Plan.getInstance().getRunnableFactory().createNew(consumer).runTaskAsynchronously();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.data.listeners;
|
package main.java.com.djrapitops.plan.data.listeners;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
@ -57,7 +58,7 @@ public class PlanPlayerListener implements Listener {
|
|||||||
UUID uuid = player.getUniqueId();
|
UUID uuid = player.getUniqueId();
|
||||||
handler.startSession(uuid);
|
handler.startSession(uuid);
|
||||||
Log.debug(uuid + ": PlayerJoinEvent");
|
Log.debug(uuid + ": PlayerJoinEvent");
|
||||||
RslTask asyncNewPlayerCheckTask = new RslBukkitRunnable<Plan>("NewPlayerCheckTask") {
|
RslTask asyncNewPlayerCheckTask = plugin.getRunnableFactory().createNew(new RslRunnable("NewPlayerCheckTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LoginInfo loginInfo = new LoginInfo(uuid, MiscUtils.getTime(), player.getAddress().getAddress(), player.isBanned(), player.getDisplayName(), player.getGameMode(), 1);
|
LoginInfo loginInfo = new LoginInfo(uuid, MiscUtils.getTime(), player.getAddress().getAddress(), player.isBanned(), player.getDisplayName(), player.getGameMode(), 1);
|
||||||
@ -72,7 +73,7 @@ public class PlanPlayerListener implements Listener {
|
|||||||
Log.debug(uuid + ": PlayerJoinEvent_AsyncTask_END, New:" + isNewPlayer);
|
Log.debug(uuid + ": PlayerJoinEvent_AsyncTask_END, New:" + isNewPlayer);
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
Log.debug(uuid + ": PlayerJoinEvent_END");
|
Log.debug(uuid + ": PlayerJoinEvent_END");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.data.listeners;
|
package main.java.com.djrapitops.plan.data.listeners;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.api.TimeAmount;
|
import com.djrapitops.javaplugin.api.TimeAmount;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
@ -14,7 +14,7 @@ import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
|||||||
*
|
*
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
public class TPSCountTimer extends RslBukkitRunnable<Plan> {
|
public class TPSCountTimer extends RslRunnable {
|
||||||
|
|
||||||
private long lastCheckNano;
|
private long lastCheckNano;
|
||||||
private final Plan plugin;
|
private final Plan plugin;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.database.databases;
|
package main.java.com.djrapitops.plan.database.databases;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -67,7 +68,7 @@ public abstract class SQLDB extends Database {
|
|||||||
*/
|
*/
|
||||||
public void startConnectionPingTask(Plan plugin) throws IllegalArgumentException, IllegalStateException {
|
public void startConnectionPingTask(Plan plugin) throws IllegalArgumentException, IllegalStateException {
|
||||||
// Maintains Connection.
|
// Maintains Connection.
|
||||||
new RslBukkitRunnable<Plan>("DBConnectionPingTask " + getName()) {
|
plugin.getRunnableFactory().createNew(new RslRunnable("DBConnectionPingTask " + getName()) {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
@ -78,7 +79,7 @@ public abstract class SQLDB extends Database {
|
|||||||
connection = getNewConnection();
|
connection = getNewConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimerAsynchronously(60 * 20, 60 * 20);
|
}).runTaskTimerAsynchronously(60 * 20, 60 * 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -150,7 +151,7 @@ public abstract class SQLDB extends Database {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void convertBukkitDataToDB() {
|
public void convertBukkitDataToDB() {
|
||||||
new RslBukkitRunnable<Plan>("BukkitDataConversionTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("BukkitDataConversionTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
@ -177,7 +178,7 @@ public abstract class SQLDB extends Database {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.ui.webserver;
|
package main.java.com.djrapitops.plan.ui.webserver;
|
||||||
|
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -60,7 +61,7 @@ public class WebSocketServer {
|
|||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
//Run server in seperate thread
|
//Run server in seperate thread
|
||||||
(new RslBukkitRunnable<Plan>("WebServerTask") {
|
plugin.getRunnableFactory().createNew(new RslRunnable("WebServerTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
while (!shutdown) {
|
while (!shutdown) {
|
||||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.utilities.analysis;
|
|||||||
|
|
||||||
import com.djrapitops.javaplugin.api.TimeAmount;
|
import com.djrapitops.javaplugin.api.TimeAmount;
|
||||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||||
|
import com.djrapitops.javaplugin.task.RslRunnable;
|
||||||
import com.djrapitops.javaplugin.task.RslTask;
|
import com.djrapitops.javaplugin.task.RslTask;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
||||||
@ -77,7 +78,7 @@ public class Analysis {
|
|||||||
plugin.processStatus().startExecution("Analysis");
|
plugin.processStatus().startExecution("Analysis");
|
||||||
log(Phrase.ANALYSIS_START + "");
|
log(Phrase.ANALYSIS_START + "");
|
||||||
// Async task for Analysis
|
// Async task for Analysis
|
||||||
RslTask asyncAnalysisTask = (new RslBukkitRunnable<Plan>("AnalysisTask") {
|
RslTask asyncAnalysisTask = plugin.getRunnableFactory().createNew(new RslRunnable("AnalysisTask") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
taskId = this.getTaskId();
|
taskId = this.getTaskId();
|
||||||
|
@ -75,7 +75,7 @@ public class TestInit {
|
|||||||
when(planMock.processStatus()).thenReturn(process);
|
when(planMock.processStatus()).thenReturn(process);
|
||||||
BenchmarkUtil bench = new BenchmarkUtil();
|
BenchmarkUtil bench = new BenchmarkUtil();
|
||||||
when(planMock.benchmark()).thenReturn(bench);
|
when(planMock.benchmark()).thenReturn(bench);
|
||||||
Plan.setInstance(planMock);
|
Plan.setInstance(Plan.class, planMock);
|
||||||
// Mockito.doReturn("0.0.0.0").when(planMock).getServer().getIp();
|
// Mockito.doReturn("0.0.0.0").when(planMock).getServer().getIp();
|
||||||
Settings.DEBUG.setValue(true);
|
Settings.DEBUG.setValue(true);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user