This commit is contained in:
Rsl1122 2017-08-18 11:15:36 +03:00
parent a34170b6c9
commit 844d567243
2 changed files with 56 additions and 3 deletions

View File

@ -79,18 +79,20 @@ public class AnalyzeCommand extends SubCommand {
} }
}).runTaskAsynchronously(); }).runTaskAsynchronously();
} }
updateCache(); updateCache(sender);
runMessageSenderTask(sender);
return true; return true;
} }
private void updateCache() { private void updateCache(ISender sender) {
if (!analysisCache.isCached() || MiscUtils.getTime() - analysisCache.getData().getRefreshDate() > TimeAmount.MINUTE.ms()) { if (!analysisCache.isCached() || MiscUtils.getTime() - analysisCache.getData().getRefreshDate() > TimeAmount.MINUTE.ms()) {
int bootAnID = plugin.getBootAnalysisTaskID(); int bootAnID = plugin.getBootAnalysisTaskID();
if (bootAnID != -1) { if (bootAnID != -1) {
plugin.getServer().getScheduler().cancelTask(bootAnID); plugin.getServer().getScheduler().cancelTask(bootAnID);
} }
analysisCache.addNotification(sender);
analysisCache.updateCache(); analysisCache.updateCache();
} else {
analysisCache.sendAnalysisMessage(sender);
} }
} }

View File

@ -1,9 +1,22 @@
package main.java.com.djrapitops.plan.data.cache; package main.java.com.djrapitops.plan.data.cache;
import com.djrapitops.plugin.command.CommandUtils;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.utilities.player.IPlayer;
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.data.AnalysisData; import main.java.com.djrapitops.plan.data.AnalysisData;
import main.java.com.djrapitops.plan.locale.Locale;
import main.java.com.djrapitops.plan.locale.Msg;
import main.java.com.djrapitops.plan.ui.text.TextUI;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.analysis.Analysis; import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
/** /**
* This class is used to store the most recent AnalysisData object and to run * This class is used to store the most recent AnalysisData object and to run
* Analysis. * Analysis.
@ -13,10 +26,13 @@ import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
*/ */
public class AnalysisCacheHandler { public class AnalysisCacheHandler {
private final Plan plugin;
private final Analysis analysis; private final Analysis analysis;
private AnalysisData cache; private AnalysisData cache;
private boolean analysisEnabled; private boolean analysisEnabled;
private Set<UUID> notifyWhenCached;
/** /**
* Class Constructor. * Class Constructor.
* <p> * <p>
@ -25,8 +41,10 @@ public class AnalysisCacheHandler {
* @param plugin Current instance of Plan * @param plugin Current instance of Plan
*/ */
public AnalysisCacheHandler(Plan plugin) { public AnalysisCacheHandler(Plan plugin) {
this.plugin = plugin;
analysis = new Analysis(plugin); analysis = new Analysis(plugin);
analysisEnabled = true; analysisEnabled = true;
notifyWhenCached = new HashSet<>();
} }
/** /**
@ -43,6 +61,33 @@ public class AnalysisCacheHandler {
*/ */
public void cache(AnalysisData data) { public void cache(AnalysisData data) {
cache = data; cache = data;
for (UUID uuid : notifyWhenCached) {
Optional<IPlayer> player = plugin.fetch().getPlayer(uuid);
if (player.isPresent()) {
sendAnalysisMessage(player.get());
}
}
notifyWhenCached.clear();
}
public void sendAnalysisMessage(ISender sender) {
boolean textUI = Settings.USE_ALTERNATIVE_UI.isTrue();
sender.sendMessage(Locale.get(Msg.CMD_HEADER_ANALYZE).toString());
if (textUI) {
sender.sendMessage(TextUI.getAnalysisMessages());
} else {
// Link
String url = HtmlUtils.getServerAnalysisUrlWithProtocol();
String message = Locale.get(Msg.CMD_INFO_LINK).toString();
boolean console = !CommandUtils.isPlayer(sender);
if (console) {
sender.sendMessage(message + url);
} else {
sender.sendMessage(message);
sender.sendLink(" ", Locale.get(Msg.CMD_INFO_CLICK_ME).toString(), url);
}
}
sender.sendMessage(Locale.get(Msg.CMD_CONSTANT_FOOTER).toString());
} }
/** /**
@ -83,4 +128,10 @@ public class AnalysisCacheHandler {
analysis.setTaskId(-1); analysis.setTaskId(-1);
analysisEnabled = true; analysisEnabled = true;
} }
public void addNotification(ISender sender) {
if (CommandUtils.isPlayer(sender)) {
notifyWhenCached.add(((IPlayer) sender.getSender()).getUuid());
}
}
} }