mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-13 17:38:03 +08:00
Merge pull request #76 from Rsl1122/Listener-system-revamp [3.0.0-SNAPSHOT]
3.0.0-SNAPSHOT Listener system revamp
This commit is contained in:
commit
9d77cf1790
@ -162,10 +162,10 @@
|
||||
<version>1.1.8</version>
|
||||
<configuration>
|
||||
<targetClasses>
|
||||
<param>main.java.com.djrapitops.*</param>
|
||||
<param>main.java.com.djrapitops.plan.*</param>
|
||||
</targetClasses>
|
||||
<targetTests>
|
||||
<param>test.java.main.java.com.djrapitops.*</param>
|
||||
<param>test.java.main.java.com.djrapitops.plan.*</param>
|
||||
</targetTests>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
50
Plan/src/main/java/com/djrapitops/plan/Permissions.java
Normal file
50
Plan/src/main/java/com/djrapitops/plan/Permissions.java
Normal file
@ -0,0 +1,50 @@
|
||||
package main.java.com.djrapitops.plan;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
* Permissions class is used easily check every permission node.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public enum Permissions {
|
||||
|
||||
HELP("plan.?"),
|
||||
INSPECT("plan.inspect"),
|
||||
QUICK_INSPECT("plan.qinspect"),
|
||||
QUICK_INSPECT_OTHER("plan.qinspect.other"),
|
||||
INSPECT_OTHER("plan.inspect.other"),
|
||||
ANALYZE("plan.analyze"),
|
||||
QUICK_ANALYZE("plan.qanalyze"),
|
||||
SEARCH("plan.search"),
|
||||
RELOAD("plan.reload"),
|
||||
INFO("plan.info"),
|
||||
IGNORE_COMMANDUSE("plan.ignore.commanduse"),
|
||||
MANAGE("plan.manage");
|
||||
|
||||
private final String permission;
|
||||
|
||||
private Permissions(String permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the CommandSender has the permission.
|
||||
*
|
||||
* @param p entity sending the command (console/player/other)
|
||||
* @return CommandSender#hasPermission
|
||||
* @see CommandSender
|
||||
*/
|
||||
public boolean userHasThisPermission(CommandSender p) {
|
||||
return p.hasPermission(permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the string of the permission node in plugin.yml
|
||||
*
|
||||
* @return line of the permission eg. plan.inspect
|
||||
*/
|
||||
public String getPermission() {
|
||||
return permission;
|
||||
}
|
||||
}
|
@ -9,6 +9,9 @@ import org.bukkit.ChatColor;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
||||
/**
|
||||
* Phrase contains every message that is used in placeholders or commands. The
|
||||
* contents for each message can be changed. Every message can contain a String
|
||||
* or ChatColor.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -173,10 +176,21 @@ public enum Phrase {
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Alternative for toString.
|
||||
*
|
||||
* @return toString()
|
||||
*/
|
||||
public String parse() {
|
||||
return this.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces all REPLACE{x} strings with the given parameters.
|
||||
*
|
||||
* @param p Strings to replace REPLACE{x}:s with
|
||||
* @return String with placeholders replaced.
|
||||
*/
|
||||
public String parse(String... p) {
|
||||
String returnValue = this.toString();
|
||||
for (int i = 0; i < p.length; i++) {
|
||||
@ -192,10 +206,18 @@ public enum Phrase {
|
||||
return color;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param text
|
||||
*/
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param colorCode
|
||||
*/
|
||||
public void setColor(char colorCode) {
|
||||
this.color = ChatColor.getByChar(colorCode);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Player Analytics Bukkit plugin for monitoring server activity.
|
||||
* Copyright (C) 2016 Risto Lahtela / Rsl1122
|
||||
* Copyright (C) 2017 Risto Lahtela / Rsl1122
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the Plan License. (licence.yml)
|
||||
@ -52,6 +52,8 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* Javaplugin class that contains methods for starting the plugin, logging to
|
||||
* the Bukkit console & various get methods.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -132,7 +134,7 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
hookHandler = new HookHandler(this);
|
||||
|
||||
|
||||
log(Phrase.ENABLED + "");
|
||||
}
|
||||
|
||||
@ -162,7 +164,7 @@ public class Plan extends JavaPlugin {
|
||||
/**
|
||||
* Logs the message to the console.
|
||||
*
|
||||
* @param message
|
||||
* @param message "Message" will show up as [INFO][Plan]: Message
|
||||
*/
|
||||
public void log(String message) {
|
||||
getLogger().info(message);
|
||||
@ -171,7 +173,7 @@ public class Plan extends JavaPlugin {
|
||||
/**
|
||||
* Logs an error message to the console.
|
||||
*
|
||||
* @param message
|
||||
* @param message "Message" will show up as [ERROR][Plan]: Message
|
||||
*/
|
||||
public void logError(String message) {
|
||||
getLogger().severe(message);
|
||||
@ -207,7 +209,7 @@ public class Plan extends JavaPlugin {
|
||||
/**
|
||||
* Logs a message to the Errors.txt with a timestamp.
|
||||
*
|
||||
* @param message Message to log to Errors.txt
|
||||
* @param message Message to log to Errors.txt [timestamp] Message
|
||||
*/
|
||||
public void toLog(String message) {
|
||||
File folder = getDataFolder();
|
||||
@ -231,6 +233,8 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access the API.
|
||||
*
|
||||
* @return Plan API
|
||||
*/
|
||||
public API getAPI() {
|
||||
@ -307,13 +311,17 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Currnet instance of the AnalysisCacheHandler
|
||||
* Used to access AnalysisCache.
|
||||
*
|
||||
* @return Current instance of the AnalysisCacheHandler
|
||||
*/
|
||||
public AnalysisCacheHandler getAnalysisCache() {
|
||||
return analysisCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access InspectCache.
|
||||
*
|
||||
* @return Current instance of the InspectCacheHandler
|
||||
*/
|
||||
public InspectCacheHandler getInspectCache() {
|
||||
@ -321,6 +329,8 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access Cache.
|
||||
*
|
||||
* @return Current instance of the DataCacheHandler
|
||||
*/
|
||||
public DataCacheHandler getHandler() {
|
||||
@ -328,6 +338,8 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access active Database.
|
||||
*
|
||||
* @return the Current Database
|
||||
*/
|
||||
public Database getDB() {
|
||||
@ -335,6 +347,8 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access Webserver.
|
||||
*
|
||||
* @return the Webserver
|
||||
*/
|
||||
public WebSocketServer getUiServer() {
|
||||
@ -342,6 +356,8 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to access HookHandler.
|
||||
*
|
||||
* @return HookHandler that manages Hooks to other plugins.
|
||||
*/
|
||||
public HookHandler getHookHandler() {
|
||||
@ -349,13 +365,19 @@ public class Plan extends JavaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Set containing the SqLite & MySQL classes.
|
||||
* Used to get all possible database objects.
|
||||
*
|
||||
* #init() might need to be called in order for the object to function.
|
||||
*
|
||||
* @return Set containing the SqLite & MySQL objects.
|
||||
*/
|
||||
public HashSet<Database> getDatabases() {
|
||||
return databases;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the ID of the BootAnalysisTask, so that it can be disabled.
|
||||
*
|
||||
* @return ID of the bootAnalysisTask
|
||||
*/
|
||||
public int getBootAnalysisTaskID() {
|
||||
|
@ -3,6 +3,8 @@ package main.java.com.djrapitops.plan;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
||||
/**
|
||||
* This enum contains all of the config settings used by the plugin for easier
|
||||
* access.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -60,18 +62,27 @@ public enum Settings {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Boolean value of the config setting
|
||||
* If the settings is a boolean, this method should be used.
|
||||
*
|
||||
* @return Boolean value of the config setting, false if not boolean.
|
||||
*/
|
||||
public boolean isTrue() {
|
||||
return getPlugin(Plan.class).getConfig().getBoolean(configPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the settings is a String, this method should be used.
|
||||
*
|
||||
* @return String value of the config setting.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return getPlugin(Plan.class).getConfig().getString(configPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the settings is a number, this method should be used.
|
||||
*
|
||||
* @return Integer value of the config setting
|
||||
*/
|
||||
public int getNumber() {
|
||||
@ -79,6 +90,9 @@ public enum Settings {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the String path of a the config setting eg.
|
||||
* Settings.WebServer.Enabled
|
||||
*
|
||||
* @return Path of the config setting.
|
||||
*/
|
||||
public String getPath() {
|
||||
|
@ -1,10 +1,16 @@
|
||||
package main.java.com.djrapitops.plan.api;
|
||||
|
||||
/**
|
||||
* This class contains Genders used by the plugin.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public enum Gender {
|
||||
MALE, FEMALE, OTHER, UNKNOWN;
|
||||
|
||||
/**
|
||||
* Gets the Enum that corresponds to the name.
|
||||
*
|
||||
* @param name name of the gender enum.
|
||||
* @return Gender Enum
|
||||
*/
|
||||
|
@ -1,5 +1,13 @@
|
||||
package main.java.com.djrapitops.plan.command;
|
||||
|
||||
/**
|
||||
* This enum contains different types of commands.
|
||||
*
|
||||
* CONSOLE can be used always, PLAYER can only be used as a player,
|
||||
* CONSOLE_WITH_ARGUMENTS can be used always, except with arguments on console.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public enum CommandType {
|
||||
CONSOLE,
|
||||
PLAYER,
|
||||
|
@ -12,6 +12,7 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* CommandExecutor for the /plan command, and all subcommands.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -20,7 +21,7 @@ public class PlanCommand implements CommandExecutor {
|
||||
private final List<SubCommand> commands;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
* CommandExecutor class Constructor.
|
||||
*
|
||||
* Initializes Subcommands
|
||||
*
|
||||
@ -28,7 +29,6 @@ public class PlanCommand implements CommandExecutor {
|
||||
*/
|
||||
public PlanCommand(Plan plugin) {
|
||||
commands = new ArrayList<>();
|
||||
|
||||
commands.add(new HelpCommand(plugin, this));
|
||||
commands.add(new InspectCommand(plugin));
|
||||
commands.add(new AnalyzeCommand(plugin));
|
||||
@ -39,6 +39,8 @@ public class PlanCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the list of all subcommands.
|
||||
*
|
||||
* @return Initialized SubCommands
|
||||
*/
|
||||
public List<SubCommand> getCommands() {
|
||||
@ -76,11 +78,11 @@ public class PlanCommand implements CommandExecutor {
|
||||
* Checks if Sender has rights to run the command and executes matching
|
||||
* subcommand.
|
||||
*
|
||||
* @param sender
|
||||
* @param cmd
|
||||
* @param commandLabel
|
||||
* @param args
|
||||
* @return true in all cases.
|
||||
* @param sender source of the command.
|
||||
* @param cmd command.
|
||||
* @param commandLabel
|
||||
* @param args arguments of the command
|
||||
* @return true
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
@ -98,7 +100,7 @@ public class PlanCommand implements CommandExecutor {
|
||||
|
||||
boolean console = !(sender instanceof Player);
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
sender.sendMessage("" + Phrase.COMMAND_NO_PERMISSION);
|
||||
return true;
|
||||
}
|
||||
|
@ -1,29 +1,33 @@
|
||||
package main.java.com.djrapitops.plan.command;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
* Abstract subcommand class that stores all the required information of a
|
||||
* command.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public abstract class SubCommand {
|
||||
|
||||
private final String name;
|
||||
private final String permission;
|
||||
private final Permissions permission;
|
||||
private final String usage;
|
||||
private final CommandType commandType;
|
||||
private final String arguments;
|
||||
|
||||
/**
|
||||
* Class constructor, called with super(...) in subcommands.
|
||||
*
|
||||
* @param name Name(s) (aliases) of the command
|
||||
* @param permission Required permission
|
||||
* @param usage Usage information
|
||||
* @param commandType Type Enum
|
||||
* @param arguments Additional possible arguments the command requires
|
||||
*/
|
||||
public SubCommand(String name, String permission, String usage, CommandType commandType, String arguments) {
|
||||
public SubCommand(String name, Permissions permission, String usage, CommandType commandType, String arguments) {
|
||||
this.name = name;
|
||||
this.permission = permission;
|
||||
this.usage = usage;
|
||||
@ -32,6 +36,8 @@ public abstract class SubCommand {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get a string format of required arguments.
|
||||
*
|
||||
* @return Additional possible arguments the command requires
|
||||
*/
|
||||
public String getArguments() {
|
||||
@ -39,6 +45,8 @@ public abstract class SubCommand {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the first alias.
|
||||
*
|
||||
* @return First alias of the command
|
||||
*/
|
||||
public String getFirstName() {
|
||||
@ -46,20 +54,26 @@ public abstract class SubCommand {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return All aliases
|
||||
* Used to get all aliases.
|
||||
*
|
||||
* @return All aliases separated with ','
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the permission required by the command.
|
||||
*
|
||||
* @return Required permission
|
||||
*/
|
||||
public String getPermission() {
|
||||
public Permissions getPermission() {
|
||||
return permission;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the info about usage of the command.
|
||||
*
|
||||
* @return Usage information
|
||||
*/
|
||||
public String getUsage() {
|
||||
@ -67,6 +81,8 @@ public abstract class SubCommand {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get the command type.
|
||||
*
|
||||
* @return CommandType Enum.
|
||||
*/
|
||||
public CommandType getCommandType() {
|
||||
@ -75,11 +91,12 @@ public abstract class SubCommand {
|
||||
|
||||
/**
|
||||
* The Command Execution method.
|
||||
*
|
||||
* @param sender
|
||||
* @param cmd
|
||||
* @param commandLabel
|
||||
* @param args
|
||||
* @return
|
||||
* @return Was the execution successful?
|
||||
*/
|
||||
public abstract boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
@ -17,6 +18,7 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This subcommand is used to run the analysis and access the /server link.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -31,7 +33,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public AnalyzeCommand(Plan plugin) {
|
||||
super("analyze, analyse, analysis", "plan.analyze", Phrase.CMD_USG_ANALYZE.parse(), CommandType.CONSOLE, "");
|
||||
super("analyze, analyse, analysis", Permissions.ANALYZE, Phrase.CMD_USG_ANALYZE.parse(), CommandType.CONSOLE, "");
|
||||
this.plugin = plugin;
|
||||
analysisCache = plugin.getAnalysisCache();
|
||||
}
|
||||
@ -40,7 +42,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
* Subcommand analyze.
|
||||
*
|
||||
* Updates AnalysisCache if last refresh was over 60 seconds ago and sends
|
||||
* player the link that views cache.
|
||||
* player the link that views cache with a delayed timer task.
|
||||
*
|
||||
* @param sender
|
||||
* @param cmd
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -11,6 +12,7 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* This subcommand is used to view the subcommands.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -26,40 +28,27 @@ public class HelpCommand extends SubCommand {
|
||||
* @param command Current instance of PlanCommand
|
||||
*/
|
||||
public HelpCommand(Plan plugin, PlanCommand command) {
|
||||
super("help,?", "plan.?", Phrase.CMD_USG_HELP + "", CommandType.CONSOLE, "");
|
||||
super("help,?", Permissions.HELP, Phrase.CMD_USG_HELP + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
this.command = command;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
|
||||
public boolean onCommand(CommandSender sender, Command comd, String commandLabel, String[] args) {
|
||||
boolean isConsole = !(sender instanceof Player);
|
||||
ChatColor oColor = Phrase.COLOR_MAIN.color();
|
||||
ChatColor tColor = Phrase.COLOR_SEC.color();
|
||||
|
||||
// Header
|
||||
sender.sendMessage(Phrase.CMD_HELP_HEADER + "");
|
||||
// Help results
|
||||
for (SubCommand command : this.command.getCommands()) {
|
||||
if (command.getName().equalsIgnoreCase(getName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(sender instanceof Player) && command.getCommandType() == CommandType.PLAYER) {
|
||||
continue;
|
||||
}
|
||||
|
||||
sender.sendMessage(tColor + " " + Phrase.BALL.toString() + oColor
|
||||
+ " /plan " + command.getFirstName() + " " + command.getArguments() + tColor + " - " + command.getUsage());
|
||||
}
|
||||
// Footer
|
||||
|
||||
this.command.getCommands().stream()
|
||||
.filter(cmd -> !cmd.getName().equalsIgnoreCase(getName()))
|
||||
.filter(cmd -> cmd.getPermission().userHasThisPermission(sender))
|
||||
.filter(cmd -> !(isConsole && cmd.getCommandType() == CommandType.PLAYER))
|
||||
.map(cmd -> tColor + " " + Phrase.BALL.toString() + oColor + " /plan " + cmd.getFirstName() + " " + cmd.getArguments() + tColor + " - " + cmd.getUsage())
|
||||
.forEach(msg -> sender.sendMessage(msg));
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -10,7 +11,8 @@ import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
*
|
||||
* This subcommand is used to view the version & the database type in use.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class InfoCommand extends SubCommand {
|
||||
@ -23,7 +25,7 @@ public class InfoCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public InfoCommand(Plan plugin) {
|
||||
super("info", "plan.info", Phrase.CMD_USG_INFO + "", CommandType.CONSOLE, "");
|
||||
super("info", Permissions.INFO, Phrase.CMD_USG_INFO + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
@ -19,6 +20,7 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This command is used to cache UserData to InspectCache and display the link.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -33,7 +35,7 @@ public class InspectCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public InspectCommand(Plan plugin) {
|
||||
super("inspect", "plan.inspect", Phrase.CMD_USG_INSPECT + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + "");
|
||||
super("inspect", Permissions.INSPECT, Phrase.CMD_USG_INSPECT + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
@ -42,11 +44,9 @@ public class InspectCommand extends SubCommand {
|
||||
/**
|
||||
* Subcommand inspect.
|
||||
*
|
||||
* Adds player's data from DataCache/DB to the InspectCache for amount of
|
||||
* time specified in the config, and clears the data from Cache with a timer
|
||||
* task.
|
||||
* Adds player's data from DataCache/DB to the InspectCache
|
||||
*
|
||||
* @param sender
|
||||
* @param sender args is empty, can not be Console.
|
||||
* @param cmd
|
||||
* @param commandLabel
|
||||
* @param args Player's name or nothing - if empty sender's name is used.
|
||||
@ -66,7 +66,7 @@ public class InspectCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
String playerName = MiscUtils.getPlayerDisplayname(args, sender);
|
||||
String playerName = MiscUtils.getPlayerName(args, sender);
|
||||
BukkitTask inspectTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -27,7 +28,7 @@ public class ManageCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageCommand(Plan plugin) {
|
||||
super("manage, m", "plan.manage", Phrase.CMD_USG_MANAGE+"", CommandType.CONSOLE, "");
|
||||
super("manage, m", Permissions.MANAGE, Phrase.CMD_USG_MANAGE+"", CommandType.CONSOLE, "");
|
||||
this.plugin = plugin;
|
||||
commands = new ArrayList<>();
|
||||
commands.add(new ManageHelpCommand(plugin, this));
|
||||
@ -98,7 +99,7 @@ public class ManageCommand extends SubCommand {
|
||||
|
||||
boolean console = !(sender instanceof Player);
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
sender.sendMessage("" + Phrase.COMMAND_NO_PERMISSION);
|
||||
return true;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -21,7 +22,7 @@ public class ReloadCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ReloadCommand(Plan plugin) {
|
||||
super("reload", "plan.reload", Phrase.CMD_USG_RELOAD + "", CommandType.CONSOLE, "");
|
||||
super("reload", Permissions.MANAGE, Phrase.CMD_USG_RELOAD + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
@ -35,7 +36,7 @@ public class SearchCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public SearchCommand(Plan plugin) {
|
||||
super("search", "plan.search", Phrase.CMD_USG_SEARCH + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_SEARCH + "");
|
||||
super("search", Permissions.SEARCH, Phrase.CMD_USG_SEARCH + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_SEARCH + "");
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
}
|
||||
@ -103,10 +104,16 @@ public class SearchCommand extends SubCommand {
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"Click Me\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
BukkitTask link = new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"Click Me\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
}
|
||||
}.runTask(plugin);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -24,7 +25,7 @@ public class ManageBackupCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageBackupCommand(Plan plugin) {
|
||||
super("backup", "plan.manage", Phrase.CMD_USG_MANAGE_BACKUP + "", CommandType.CONSOLE, "<DB>");
|
||||
super("backup", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_BACKUP + "", CommandType.CONSOLE, "<DB>");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -25,7 +26,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageClearCommand(Plan plugin) {
|
||||
super("clear", "plan.manage", Phrase.CMD_USG_MANAGE_CLEAR + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB> [-a]");
|
||||
super("clear", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_CLEAR + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB> [-a]");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -26,7 +27,7 @@ public class ManageHelpCommand extends SubCommand {
|
||||
* @param command Current instance of PlanCommand
|
||||
*/
|
||||
public ManageHelpCommand(Plan plugin, ManageCommand command) {
|
||||
super("help,?", "plan.manage", Phrase.CMD_USG_MANAGE_HELP + "", CommandType.CONSOLE, "");
|
||||
super("help,?", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_HELP + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
this.command = command;
|
||||
@ -47,7 +48,7 @@ public class ManageHelpCommand extends SubCommand {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!sender.hasPermission(command.getPermission())) {
|
||||
if (!command.getPermission().userHasThisPermission(sender)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -23,7 +24,7 @@ public class ManageHotswapCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageHotswapCommand(Plan plugin) {
|
||||
super("hotswap", "plan.manage", Phrase.CMD_USG_MANAGE_HOTSWAP + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB>");
|
||||
super("hotswap", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_HOTSWAP + "", CommandType.CONSOLE_WITH_ARGUMENTS, "<DB>");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -6,11 +6,11 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.importing.Importer;
|
||||
import main.java.com.djrapitops.plan.data.importing.OnTimeImporter;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
@ -35,7 +35,7 @@ public class ManageImportCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageImportCommand(Plan plugin) {
|
||||
super("import", "plan.manage", Phrase.CMD_USG_MANAGE_IMPORT + "", CommandType.CONSOLE, Phrase.ARG_IMPORT + "");
|
||||
super("import", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_IMPORT + "", CommandType.CONSOLE, Phrase.ARG_IMPORT + "");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@ -86,12 +86,11 @@ public class ManageImportCommand extends SubCommand {
|
||||
uuids.add(p.getUniqueId());
|
||||
}
|
||||
HashMap<UUID, Long> numbericData = importPlugins.get(importFromPlugin).grabNumericData(uuids);
|
||||
DataCacheHandler handler = plugin.getHandler();
|
||||
BukkitTask asyncImportTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (importFromPlugin.equals("ontime")) {
|
||||
if (ManageUtils.importOnTime(numbericData, handler)) {
|
||||
if (ManageUtils.importOnTime(numbericData, plugin)) {
|
||||
sender.sendMessage(Phrase.MANAGE_SUCCESS + "");
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -27,7 +28,7 @@ public class ManageMoveCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageMoveCommand(Plan plugin) {
|
||||
super("move", "plan.manage", Phrase.CMD_USG_MANAGE_MOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_MOVE + "");
|
||||
super("move", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_MOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_MOVE + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -3,17 +3,18 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.UUIDFetcher;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -29,7 +30,7 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageRemoveCommand(Plan plugin) {
|
||||
super("remove", "plan.manage", Phrase.CMD_USG_MANAGE_REMOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + " [-a]");
|
||||
super("remove", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_REMOVE + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + " [-a]");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
@ -54,7 +55,7 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
String playerName = MiscUtils.getPlayerDisplayname(args, sender);
|
||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE);
|
||||
|
||||
UUID uuid;
|
||||
try {
|
||||
|
@ -4,6 +4,7 @@ import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -30,7 +31,7 @@ public class ManageRestoreCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageRestoreCommand(Plan plugin) {
|
||||
super("restore", "plan.restore", Phrase.CMD_USG_MANAGE_RESTORE + "", CommandType.CONSOLE, Phrase.ARG_RESTORE + "");
|
||||
super("restore", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_RESTORE + "", CommandType.CONSOLE, Phrase.ARG_RESTORE + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
@ -22,7 +23,7 @@ public class ManageStatusCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public ManageStatusCommand(Plan plugin) {
|
||||
super("status", "plan.manage", Phrase.CMD_USG_MANAGE_STATUS + "", CommandType.CONSOLE, "");
|
||||
super("status", Permissions.MANAGE, Phrase.CMD_USG_MANAGE_STATUS + "", CommandType.CONSOLE, "");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
@ -182,26 +182,50 @@ public class AnalysisData {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getGeomapCountries() {
|
||||
return geomapCountries;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param geomapCountries
|
||||
*/
|
||||
public void setGeomapCountries(String geomapCountries) {
|
||||
this.geomapCountries = geomapCountries;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getGeomapZ() {
|
||||
return geomapZ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param geomapZ
|
||||
*/
|
||||
public void setGeomapZ(String geomapZ) {
|
||||
this.geomapZ = geomapZ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getGeomapCodes() {
|
||||
return geomapCodes;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param geomapCodes
|
||||
*/
|
||||
public void setGeomapCodes(String geomapCodes) {
|
||||
this.geomapCodes = geomapCodes;
|
||||
}
|
||||
@ -644,10 +668,18 @@ public class AnalysisData {
|
||||
this.sessionAverage = sessionAverage;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int[] getGenderData() {
|
||||
return genderData;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param genderData
|
||||
*/
|
||||
public void setGenderData(int[] genderData) {
|
||||
this.genderData = genderData;
|
||||
}
|
||||
|
@ -63,6 +63,10 @@ public class RawAnalysisData {
|
||||
genders = new int[]{0, 0, 0};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param country
|
||||
*/
|
||||
public void addGeoloc(String country) {
|
||||
if (geolocations.get(country) == null) {
|
||||
return;
|
||||
@ -70,6 +74,9 @@ public class RawAnalysisData {
|
||||
geolocations.put(country, geolocations.get(country) + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void fillGeolocations() {
|
||||
String[] countries = new String[]{"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas, The", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burma", "Burundi", "Cabo Verde", "Cambodia", "Cameroon", "Canada", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Colombia", "Comoros", "Congo, Democratic Republic of the", "Congo, Republic of the", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Curacao", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands (Islas Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Polynesia", "Gabon", "Gambia, The", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guam", "Guatemala", "Guernsey", "Guinea-Bissau", "Guinea", "Guyana", "Haiti", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, North", "Korea, South", "Kosovo", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", "Micronesia, Federated States of", "Moldova", "Monaco", "Mongolia", "Montenegro", "Morocco", "Mozambique", "Namibia", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Nigeria", "Niger", "Niue", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Poland", "Portugal", "Puerto Rico", "Qatar", "Romania", "Russia", "Rwanda", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Timor-Leste", "Togo", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "Virgin Islands", "West Bank", "Yemen", "Zambia", "Zimbabwe"};
|
||||
String[] codes = new String[]{"AFG", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHM", "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BTN", "BOL", "BIH", "BWA", "BRA", "VGB", "BRN", "BGR", "BFA", "MMR", "BDI", "CPV", "KHM", "CMR", "CAN", "CYM", "CAF", "TCD", "CHL", "CHN", "COL", "COM", "COD", "COG", "COK", "CRI", "CIV", "HRV", "CUB", "CUW", "CYP", "CZE", "DNK", "DJI", "DMA", "DOM", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "ETH", "FLK", "FRO", "FJI", "FIN", "FRA", "PYF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GUM", "GTM", "GGY", "GNB", "GIN", "GUY", "HTI", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "IMN", "ISR", "ITA", "JAM", "JPN", "JEY", "JOR", "KAZ", "KEN", "KIR", "KOR", "PRK", "KSV", "KWT", "KGZ", "LAO", "LVA", "LBN", "LSO", "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MKD", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MRT", "MUS", "MEX", "FSM", "MDA", "MCO", "MNG", "MNE", "MAR", "MOZ", "NAM", "NPL", "NLD", "NCL", "NZL", "NIC", "NGA", "NER", "NIU", "MNP", "NOR", "OMN", "PAK", "PLW", "PAN", "PNG", "PRY", "PER", "PHL", "POL", "PRT", "PRI", "QAT", "ROU", "RUS", "RWA", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SLE", "SGP", "SXM", "SVK", "SVN", "SLB", "SOM", "ZAF", "SSD", "ESP", "LKA", "SDN", "SUR", "SWZ", "SWE", "CHE", "SYR", "TWN", "TJK", "TZA", "THA", "TLS", "TGO", "TON", "TTO", "TUN", "TUR", "TKM", "TUV", "UGA", "UKR", "ARE", "GBR", "USA", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "WBG", "YEM", "ZMB", "ZWE"};
|
||||
@ -84,10 +91,18 @@ public class RawAnalysisData {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Integer> getGeolocations() {
|
||||
return geolocations;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> getGeocodes() {
|
||||
return geocodes;
|
||||
}
|
||||
@ -372,14 +387,27 @@ public class RawAnalysisData {
|
||||
return registered;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int[] getGenders() {
|
||||
return genders;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param gender
|
||||
*/
|
||||
public void setGenders(int[] gender) {
|
||||
this.genders = gender;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param i
|
||||
* @param amount
|
||||
*/
|
||||
public void addToGender(int i, int amount) {
|
||||
this.genders[i] = this.genders[i] + amount;
|
||||
}
|
||||
|
@ -52,6 +52,10 @@ public class SessionData {
|
||||
return sessionEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public long getLength() {
|
||||
return sessionEnd-sessionStart;
|
||||
}
|
||||
@ -61,7 +65,34 @@ public class SessionData {
|
||||
return "s:" + sessionStart + " e:" + sessionEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isValid() {
|
||||
return sessionStart <= sessionEnd;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final SessionData other = (SessionData) obj;
|
||||
if (this.sessionStart != other.sessionStart) {
|
||||
return false;
|
||||
}
|
||||
if (this.sessionEnd != other.sessionEnd) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -52,6 +52,17 @@ public class UserData {
|
||||
private SessionData currentSession;
|
||||
private List<SessionData> sessions;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param reg
|
||||
* @param loc
|
||||
* @param op
|
||||
* @param lastGM
|
||||
* @param demData
|
||||
* @param name
|
||||
* @param online
|
||||
*/
|
||||
public UserData(UUID uuid, long reg, Location loc, boolean op, GameMode lastGM, DemographicsData demData, String name, boolean online) {
|
||||
accessing = 0;
|
||||
this.uuid = uuid;
|
||||
@ -211,6 +222,7 @@ public class UserData {
|
||||
if (nick != null) {
|
||||
if (!nick.isEmpty()) {
|
||||
nicknames.add(nick);
|
||||
lastNick = nick;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -273,7 +285,7 @@ public class UserData {
|
||||
* @param sessions
|
||||
*/
|
||||
public void addSessions(Collection<SessionData> sessions) {
|
||||
Collection<SessionData> filteredSessions = sessions.parallelStream()
|
||||
Collection<SessionData> filteredSessions = sessions.stream()
|
||||
.filter(session -> session != null)
|
||||
.filter(session -> session.isValid())
|
||||
.collect(Collectors.toList());
|
||||
@ -288,6 +300,10 @@ public class UserData {
|
||||
currentSession = session;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public SessionData getCurrentSession() {
|
||||
return currentSession;
|
||||
}
|
||||
@ -408,6 +424,9 @@ public class UserData {
|
||||
* @return
|
||||
*/
|
||||
public HashMap<GameMode, Long> getGmTimes() {
|
||||
if (gmTimes == null) {
|
||||
gmTimes = new HashMap<>();
|
||||
}
|
||||
return gmTimes;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@ -10,11 +11,19 @@ import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.*;
|
||||
import main.java.com.djrapitops.plan.data.handlers.*;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheClearQueue;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheGetQueue;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheProcessQueue;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheSaveQueue;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.ReloadInfo;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import main.java.com.djrapitops.plan.utilities.comparators.HandlingInfoTimeComparator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
@ -22,7 +31,7 @@ import org.bukkit.scheduler.BukkitTask;
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DataCacheHandler {
|
||||
public class DataCacheHandler extends LocationCache {
|
||||
|
||||
// Cache
|
||||
private final HashMap<UUID, UserData> dataCache;
|
||||
@ -32,20 +41,10 @@ public class DataCacheHandler {
|
||||
private final Plan plugin;
|
||||
private final Database db;
|
||||
|
||||
// Handlers
|
||||
private final ActivityHandler activityHandler;
|
||||
private final GamemodeTimesHandler gamemodeTimesHandler;
|
||||
private final LocationHandler locationHandler;
|
||||
private final DemographicsHandler demographicsHandler;
|
||||
private final BasicInfoHandler basicInfoHandler;
|
||||
private final RuleBreakingHandler ruleBreakingHandler;
|
||||
private CommandUseHandler commandUseHandler;
|
||||
private final KillHandler killHandler;
|
||||
private final SessionHandler sessionHandler;
|
||||
|
||||
// Queues
|
||||
private DataCacheSaveQueue saveTask;
|
||||
private DataCacheClearQueue clearTask;
|
||||
private DataCacheProcessQueue processTask;
|
||||
private DataCacheGetQueue getTask;
|
||||
|
||||
// Variables
|
||||
@ -61,33 +60,55 @@ public class DataCacheHandler {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public DataCacheHandler(Plan plugin) {
|
||||
super();
|
||||
this.plugin = plugin;
|
||||
db = plugin.getDB();
|
||||
dataCache = new HashMap<>();
|
||||
activityHandler = new ActivityHandler(plugin, this);
|
||||
gamemodeTimesHandler = new GamemodeTimesHandler(plugin, this);
|
||||
locationHandler = new LocationHandler(plugin);
|
||||
demographicsHandler = new DemographicsHandler(plugin, this);
|
||||
basicInfoHandler = new BasicInfoHandler(plugin, this);
|
||||
ruleBreakingHandler = new RuleBreakingHandler(plugin, this);
|
||||
|
||||
killHandler = new KillHandler(plugin);
|
||||
sessionHandler = new SessionHandler(plugin);
|
||||
|
||||
getTask = new DataCacheGetQueue(plugin);
|
||||
clearTask = new DataCacheClearQueue(plugin, this);
|
||||
saveTask = new DataCacheSaveQueue(plugin);
|
||||
startQueues();
|
||||
|
||||
timesSaved = 0;
|
||||
maxPlayers = plugin.getServer().getMaxPlayers();
|
||||
try {
|
||||
commandUse = db.getCommandUse();
|
||||
commandUseHandler = new CommandUseHandler(commandUse);
|
||||
} catch (SQLException e) {
|
||||
plugin.toLog(this.getClass().getName(), e);
|
||||
|
||||
commandUse = new HashMap<>();
|
||||
if (!getCommandUseFromDb()) {
|
||||
plugin.logError(Phrase.DB_FAILURE_DISABLE + "");
|
||||
plugin.getServer().getPluginManager().disablePlugin(plugin);
|
||||
return;
|
||||
}
|
||||
startAsyncPeriodicSaveTask();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean getCommandUseFromDb() {
|
||||
try {
|
||||
commandUse = db.getCommandUse();
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
plugin.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void startQueues() {
|
||||
getTask = new DataCacheGetQueue(plugin);
|
||||
clearTask = new DataCacheClearQueue(plugin, this);
|
||||
processTask = new DataCacheProcessQueue(this);
|
||||
saveTask = new DataCacheSaveQueue(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* @throws IllegalStateException
|
||||
*/
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
int minutes = Settings.SAVE_CACHE_MIN.getNumber();
|
||||
if (minutes <= 0) {
|
||||
minutes = 5;
|
||||
@ -102,7 +123,7 @@ public class DataCacheHandler {
|
||||
BukkitTask asyncPeriodicCacheSaveTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
DataCacheHandler handler = plugin.getHandler();
|
||||
DataCacheHandler handler = getPlugin(Plan.class).getHandler();
|
||||
handler.saveHandlerDataToCache();
|
||||
handler.saveCachedUserData();
|
||||
if (timesSaved % clearAfterXsaves == 0) {
|
||||
@ -173,6 +194,14 @@ public class DataCacheHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param i
|
||||
*/
|
||||
public void addToPool(HandlingInfo i) {
|
||||
processTask.addToPool(i);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves all data in the cache to Database and closes the database down.
|
||||
* Closes save clear and get tasks.
|
||||
@ -181,11 +210,16 @@ public class DataCacheHandler {
|
||||
saveTask.stop();
|
||||
getTask.stop();
|
||||
clearTask.stop();
|
||||
List<HandlingInfo> toProcess = processTask.stop();
|
||||
Collections.sort(toProcess, new HandlingInfoTimeComparator());
|
||||
processUnprocessedHandlingInfo(toProcess);
|
||||
List<UserData> data = new ArrayList<>();
|
||||
data.addAll(dataCache.values());
|
||||
data.parallelStream().forEach((userData) -> {
|
||||
sessionHandler.endSession(userData);
|
||||
});
|
||||
data.parallelStream()
|
||||
.forEach((userData) -> {
|
||||
endSession(userData.getUuid());
|
||||
addSession(userData);
|
||||
});
|
||||
try {
|
||||
db.saveMultipleUserData(data);
|
||||
db.saveCommandUse(commandUse);
|
||||
@ -195,16 +229,45 @@ public class DataCacheHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private void processUnprocessedHandlingInfo(List<HandlingInfo> toProcess) {
|
||||
for (HandlingInfo i : toProcess) {
|
||||
UserData uData = dataCache.get(i.getUuid());
|
||||
if (uData == null) {
|
||||
DBCallableProcessor p = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
i.process(data);
|
||||
}
|
||||
};
|
||||
try {
|
||||
db.giveUserDataToProcessors(i.getUuid(), p);
|
||||
} catch (SQLException ex) {
|
||||
plugin.toLog(this.getClass().getName(), ex);
|
||||
}
|
||||
} else {
|
||||
i.process(uData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the cached data of matching Player if it is in the cache
|
||||
*
|
||||
* @param uuid Player's UUID
|
||||
*/
|
||||
public void saveCachedData(UUID uuid) {
|
||||
UserData data = dataCache.get(uuid);
|
||||
if (data != null) {
|
||||
saveTask.scheduleForSave(data);
|
||||
}
|
||||
DBCallableProcessor saveProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
data.addLocations(getLocationsForSaving(uuid));
|
||||
clearLocations(uuid);
|
||||
// addSession(data);
|
||||
data.access();
|
||||
saveTask.scheduleForSave(data);
|
||||
scheludeForClear(uuid);
|
||||
}
|
||||
};
|
||||
getTask.scheduleForGet(uuid, saveProcessor);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -219,7 +282,6 @@ public class DataCacheHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// Should only be called from Async thread
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -229,16 +291,10 @@ public class DataCacheHandler {
|
||||
});
|
||||
}
|
||||
|
||||
// Should only be called from Async thread
|
||||
private void saveHandlerDataToCache(Player p) {
|
||||
DBCallableProcessor cacheUpdater = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
activityHandler.saveToCache(data);
|
||||
gamemodeTimesHandler.saveToCache(p.getGameMode(), data);
|
||||
}
|
||||
};
|
||||
getUserDataForProcessing(cacheUpdater, p.getUniqueId());
|
||||
private void saveHandlerDataToCache(Player player) {
|
||||
long time = new Date().getTime();
|
||||
UUID uuid = player.getUniqueId();
|
||||
addToPool(new ReloadInfo(uuid, time, player.getAddress().getAddress(), player.isBanned(), player.getDisplayName(), player.getGameMode()));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -273,10 +329,7 @@ public class DataCacheHandler {
|
||||
*/
|
||||
public boolean isDataAccessed(UUID uuid) {
|
||||
UserData userData = dataCache.get(uuid);
|
||||
if (userData != null) {
|
||||
return userData.isAccessed();
|
||||
}
|
||||
return false;
|
||||
return (userData != null && userData.isAccessed()) || saveTask.containsUUID(uuid) || processTask.containsUUID(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -285,7 +338,7 @@ public class DataCacheHandler {
|
||||
* @param player Player the new UserData is created for
|
||||
*/
|
||||
public void newPlayer(Player player) {
|
||||
saveTask.scheduleNewPlayer(NewPlayerCreator.createNewPlayer(player));
|
||||
newPlayer(NewPlayerCreator.createNewPlayer(player));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -293,7 +346,15 @@ public class DataCacheHandler {
|
||||
* @param player
|
||||
*/
|
||||
public void newPlayer(OfflinePlayer player) {
|
||||
saveTask.scheduleNewPlayer(NewPlayerCreator.createNewPlayer(player));
|
||||
newPlayer(NewPlayerCreator.createNewPlayer(player));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
public void newPlayer(UserData data) {
|
||||
saveTask.scheduleNewPlayer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -303,54 +364,11 @@ public class DataCacheHandler {
|
||||
return dataCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the ActivityHandler
|
||||
*/
|
||||
public ActivityHandler getActivityHandler() {
|
||||
return activityHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the LocationHandler
|
||||
*/
|
||||
public LocationHandler getLocationHandler() {
|
||||
return locationHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the DemographicsHandler
|
||||
*/
|
||||
public DemographicsHandler getDemographicsHandler() {
|
||||
return demographicsHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the BasicInfoHandler
|
||||
*/
|
||||
public BasicInfoHandler getBasicInfoHandler() {
|
||||
return basicInfoHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the RuleBreakingHandler
|
||||
*/
|
||||
public RuleBreakingHandler getRuleBreakingHandler() {
|
||||
return ruleBreakingHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of the GamemodeTimesHandler
|
||||
*/
|
||||
public GamemodeTimesHandler getGamemodeTimesHandler() {
|
||||
return gamemodeTimesHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public KillHandler getKillHandler() {
|
||||
return killHandler;
|
||||
public LocationCache getLocationHandler() {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -361,19 +379,12 @@ public class DataCacheHandler {
|
||||
return commandUse;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current instance of ServerDataHandler
|
||||
*/
|
||||
public CommandUseHandler getCommandUseHandler() {
|
||||
return commandUseHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public SessionHandler getSessionHandler() {
|
||||
return sessionHandler;
|
||||
public SessionCache getSessionCache() {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -387,20 +398,12 @@ public class DataCacheHandler {
|
||||
public void run() {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
UUID uuid = player.getUniqueId();
|
||||
boolean isNewPlayer = activityHandler.isFirstTimeJoin(uuid);
|
||||
boolean isNewPlayer = !db.wasSeenBefore(uuid);
|
||||
if (isNewPlayer) {
|
||||
newPlayer(player);
|
||||
}
|
||||
DBCallableProcessor cacheUpdater = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
activityHandler.handleReload(data);
|
||||
basicInfoHandler.handleReload(player.getDisplayName(), player.getAddress().getAddress(), data);
|
||||
gamemodeTimesHandler.handleReload(player.getGameMode(), data);
|
||||
saveCachedUserData();
|
||||
}
|
||||
};
|
||||
getUserDataForProcessing(cacheUpdater, player.getUniqueId());
|
||||
startSession(uuid);
|
||||
saveHandlerDataToCache(player);
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
@ -415,4 +418,15 @@ public class DataCacheHandler {
|
||||
public int getMaxPlayers() {
|
||||
return maxPlayers;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param command
|
||||
*/
|
||||
public void handleCommand(String command) {
|
||||
if (!commandUse.containsKey(command)) {
|
||||
commandUse.put(command, 0);
|
||||
}
|
||||
commandUse.put(command, commandUse.get(command) + 1);
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,9 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -18,7 +14,6 @@ public class InspectCacheHandler {
|
||||
private DataCacheHandler handler;
|
||||
private Plan plugin;
|
||||
private HashMap<UUID, UserData> cache;
|
||||
private HashMap<UUID, Long> clearTimes;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
@ -29,29 +24,13 @@ public class InspectCacheHandler {
|
||||
this.handler = plugin.getHandler();
|
||||
this.plugin = plugin;
|
||||
this.cache = new HashMap<>();
|
||||
this.clearTimes = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Caches the UserData of user to the HashMap for X minutes. Data is removed
|
||||
* from the cache automatically after 5 minutes with a BukkitRunnable
|
||||
*
|
||||
* @param uuid UUID of the player
|
||||
*/
|
||||
public void cache(UUID uuid) {
|
||||
int minutes = Settings.CLEAR_INSPECT_CACHE.getNumber();
|
||||
if (minutes <= 0) {
|
||||
minutes = 3;
|
||||
}
|
||||
cache(uuid, minutes);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param minutes
|
||||
*/
|
||||
public void cache(UUID uuid, int minutes) {
|
||||
public void cache(UUID uuid) {
|
||||
DBCallableProcessor cacher = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
@ -59,33 +38,6 @@ public class InspectCacheHandler {
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(cacher, uuid, false);
|
||||
long clearTime = new Date().toInstant().getEpochSecond() + (long) 60 * (long) minutes;
|
||||
if (clearTimes.get(uuid) == null) {
|
||||
clearTimes.put(uuid, (long) 0);
|
||||
}
|
||||
if (clearTimes.get(uuid) < clearTime) {
|
||||
clearTimes.put(uuid, clearTime);
|
||||
BukkitTask timedInspectCacheClearTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (new Date().toInstant().getEpochSecond() - clearTimes.get(uuid) < 30) {
|
||||
UserData uData = cache.get(uuid);
|
||||
if (uData == null) {
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
if (!uData.isAccessed()) {
|
||||
clearFomCache(uuid);
|
||||
}
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskLater(plugin, 60 * 20 * minutes);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearFomCache(UUID uuid) {
|
||||
cache.remove(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,37 +1,33 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import org.bukkit.Location;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LocationHandler {
|
||||
public class LocationCache extends SessionCache{
|
||||
|
||||
private Plan plugin;
|
||||
private HashMap<UUID, List<Location>> locations;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public LocationHandler(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
public LocationCache() {
|
||||
super();
|
||||
locations = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds location to the UserData if it is not being saved.
|
||||
*
|
||||
* @param uuid UUID of player
|
||||
* @param loc Location from the MoveEvent listener.
|
||||
* @param uuid
|
||||
* @param loc
|
||||
*/
|
||||
public void addLocation(UUID uuid, Location loc) {
|
||||
if (!locations.containsKey(uuid)) {
|
||||
@ -41,10 +37,9 @@ public class LocationHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds multiple locaitons to the UserData.
|
||||
*
|
||||
* @param uuid UUID of player
|
||||
* @param locs The Locations that are added.
|
||||
* @param uuid
|
||||
* @param locs
|
||||
*/
|
||||
public void addLocations(UUID uuid, Collection<Location> locs) {
|
||||
if (!locations.containsKey(uuid)) {
|
||||
@ -64,7 +59,7 @@ public class LocationHandler {
|
||||
}
|
||||
return locations.get(uuid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
@ -1,56 +1,75 @@
|
||||
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class SessionHandler {
|
||||
public class SessionCache {
|
||||
private final HashMap<UUID, SessionData> activeSessions;
|
||||
private final DataCacheHandler handler;
|
||||
private final Plan plugin;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param plugin
|
||||
*/
|
||||
public SessionHandler(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
this.handler = plugin.getHandler();
|
||||
public SessionCache() {
|
||||
this.activeSessions = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param uuid
|
||||
*/
|
||||
public void startSession(UserData data) {
|
||||
public void startSession(UUID uuid) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
SessionData session = new SessionData(now);
|
||||
activeSessions.put(data.getUuid(), session);
|
||||
data.setCurrentSession(session);
|
||||
activeSessions.put(uuid, session);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
*/
|
||||
public void endSession(UUID uuid) {
|
||||
SessionData currentSession = activeSessions.get(uuid);
|
||||
if (currentSession != null) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
currentSession.endSession(now);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public SessionData getSession(UUID uuid) {
|
||||
return activeSessions.get(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
public void endSession (UserData data) {
|
||||
public void addSession(UserData data) {
|
||||
UUID uuid = data.getUuid();
|
||||
SessionData currentSession = activeSessions.get(uuid);
|
||||
if (currentSession != null) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
currentSession.endSession(now);
|
||||
if (currentSession != null && currentSession.isValid() && !data.getSessions().contains(currentSession)) {
|
||||
data.addSession(currentSession);
|
||||
activeSessions.remove(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public HashMap<UUID, SessionData> getActiveSessions() {
|
||||
return activeSessions;
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
@ -7,6 +7,7 @@ import java.util.concurrent.BlockingQueue;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
@ -11,6 +11,7 @@ import java.util.concurrent.BlockingQueue;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
135
Plan/src/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueue.java
vendored
Normal file
135
Plan/src/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueue.java
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DataCacheProcessQueue {
|
||||
|
||||
private BlockingQueue<HandlingInfo> q;
|
||||
private DataCacheHandler h;
|
||||
private ProcessSetup s;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param handler
|
||||
*/
|
||||
public DataCacheProcessQueue(DataCacheHandler handler) {
|
||||
h = handler;
|
||||
q = new ArrayBlockingQueue(20000);
|
||||
s = new ProcessSetup();
|
||||
s.go(q, h);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param info
|
||||
*/
|
||||
public void addToPool(HandlingInfo info) {
|
||||
try {
|
||||
q.add(info);
|
||||
} catch (IllegalStateException e) {
|
||||
// getPlugin(Plan.class).logError(Phrase.ERROR_TOO_SMALL_QUEUE.parse("Save Queue", Settings.PROCESS_SAVE_LIMIT.getNumber() + ""));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param info
|
||||
*/
|
||||
public void addToPool(Collection<HandlingInfo> info) {
|
||||
try {
|
||||
q.addAll(info);
|
||||
} catch (IllegalStateException e) {
|
||||
// getPlugin(Plan.class).logError(Phrase.ERROR_TOO_SMALL_QUEUE.parse("Save Queue", Settings.PROCESS_SAVE_LIMIT.getNumber() + ""));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public boolean containsUUID(UUID uuid) {
|
||||
return new ArrayList<>(q).stream().map(d -> d.getUuid()).collect(Collectors.toList()).contains(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<HandlingInfo> stop() {
|
||||
return s.stop();
|
||||
}
|
||||
}
|
||||
|
||||
class ProcessConsumer implements Runnable {
|
||||
|
||||
private final BlockingQueue<HandlingInfo> queue;
|
||||
private final DataCacheHandler handler;
|
||||
private boolean run;
|
||||
|
||||
ProcessConsumer(BlockingQueue q, DataCacheHandler h) {
|
||||
handler = h;
|
||||
queue = q;
|
||||
run = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (run) {
|
||||
consume(queue.take());
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
}
|
||||
}
|
||||
|
||||
void consume(HandlingInfo info) {
|
||||
DBCallableProcessor p = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
if (!info.process(data)) {
|
||||
System.out.println("Attempted to process data for wrong uuid: W:"+data.getUuid()+" | R:"+info.getUuid()+" Type:"+info.getType().name());
|
||||
}
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(p, info.getUuid());
|
||||
}
|
||||
|
||||
Collection<HandlingInfo> stop() {
|
||||
run = false;
|
||||
return queue;
|
||||
}
|
||||
}
|
||||
|
||||
class ProcessSetup {
|
||||
|
||||
private ProcessConsumer one;
|
||||
private ProcessConsumer two;
|
||||
|
||||
void go(BlockingQueue<HandlingInfo> q, DataCacheHandler h) {
|
||||
one = new ProcessConsumer(q, h);
|
||||
two = new ProcessConsumer(q, h);
|
||||
new Thread(one).start();
|
||||
new Thread(two).start();
|
||||
}
|
||||
|
||||
List<HandlingInfo> stop() {
|
||||
List<HandlingInfo> i = new ArrayList<>(one.stop());
|
||||
i.addAll(two.stop());
|
||||
return i;
|
||||
}
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
@ -65,6 +68,15 @@ public class DataCacheSaveQueue {
|
||||
getPlugin(Plan.class).logError(Phrase.ERROR_TOO_SMALL_QUEUE.parse("Save Queue", Settings.PROCESS_SAVE_LIMIT.getNumber() + ""));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public boolean containsUUID(UUID uuid) {
|
||||
return new ArrayList<>(q).stream().map(d -> d.getUuid()).collect(Collectors.toList()).contains(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@ -98,7 +110,9 @@ class SaveConsumer implements Runnable {
|
||||
|
||||
void consume(UserData data) {
|
||||
try {
|
||||
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
data.stopAccessing();
|
||||
} catch (SQLException ex) {
|
||||
getPlugin(Plan.class).toLog(this.getClass().getName(), ex);
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class ActivityHandler {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
* @param h Current instance of DataCacheHandler
|
||||
*/
|
||||
public ActivityHandler(Plan plugin, DataCacheHandler h) {
|
||||
this.plugin = plugin;
|
||||
this.handler = h;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks from Database if the player's data is present.
|
||||
*
|
||||
* @param uuid Player's UUID
|
||||
* @return true if data is not found.
|
||||
*/
|
||||
public boolean isFirstTimeJoin(UUID uuid) {
|
||||
return !plugin.getDB().wasSeenBefore(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves current PlayTime timer and sets lastPlayed.
|
||||
*
|
||||
* lastPlayed is set to long matching current Date.
|
||||
*
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void saveToCache(UserData data) {
|
||||
long timeNow = new Date().getTime();
|
||||
data.setPlayTime(data.getPlayTime() + (timeNow - data.getLastPlayed()));
|
||||
data.setLastPlayed(timeNow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates UserData about activity related things on Login.
|
||||
*
|
||||
* Updates if player is banned or not, Adds one to login times, Adds current
|
||||
* location to location list.
|
||||
*
|
||||
* @param isBanned is the player banned?
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleLogin(boolean isBanned, UserData data) {
|
||||
data.setLastPlayed(new Date().getTime());
|
||||
data.updateBanned(isBanned);
|
||||
data.setLoginTimes(data.getLoginTimes() + 1);
|
||||
handler.getSessionHandler().startSession(data);
|
||||
// handler.getLocationHandler().addLocation(player.getUniqueId(), player.getLocation());
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates UserData about activity related things on Logout.
|
||||
*
|
||||
* Saves PlayTime, Set's LastPlayed value to long matching current Date
|
||||
*
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleLogOut(UserData data) {
|
||||
Date now = new Date();
|
||||
long timeNow = now.getTime();
|
||||
data.setPlayTime(data.getPlayTime() + (timeNow - data.getLastPlayed()));
|
||||
data.setLastPlayed(timeNow);
|
||||
handler.getSessionHandler().endSession(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates UserData about activity related things on /reload.
|
||||
*
|
||||
* Updates PlayTime, Sets LastPlayed value to long matching current Date
|
||||
*
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleReload(UserData data) {
|
||||
Date now = new Date();
|
||||
long timeNow = now.getTime();
|
||||
data.setPlayTime(data.getPlayTime() + (timeNow - data.getLastPlayed()));
|
||||
data.setLastPlayed(timeNow);
|
||||
handler.getSessionHandler().startSession(data);
|
||||
}
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class BasicInfoHandler {
|
||||
|
||||
private DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
* Class Constructor
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
* @param h Current instance of DataCacheHandler
|
||||
*/
|
||||
public BasicInfoHandler(Plan plugin, DataCacheHandler h) {
|
||||
this.handler = h;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds new nicknames and IPs to UserData
|
||||
*
|
||||
* @param nickname Displayname of player
|
||||
* @param ip IP of player
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleLogin(String nickname, InetAddress ip, UserData data) {
|
||||
addNickname(nickname, data);
|
||||
data.addIpAddress(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds new nicknames and IPs to UserData in case of /reload
|
||||
*
|
||||
* @param nickname Displayname of player
|
||||
* @param ip IP of player
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleReload(String nickname, InetAddress ip, UserData data) {
|
||||
addNickname(nickname, data);
|
||||
data.addIpAddress(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param nickname
|
||||
* @param data
|
||||
*/
|
||||
public void addNickname(String nickname, UserData data) {
|
||||
if (!nickname.isEmpty()) {
|
||||
if (data.addNickname(nickname)) {
|
||||
data.setLastNick(nickname);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class CommandUseHandler {
|
||||
|
||||
private HashMap<String, Integer> commandUse;
|
||||
|
||||
/**
|
||||
* Class constructor.
|
||||
*
|
||||
* @param serverData ServerData in the DataCacheHandler.
|
||||
*/
|
||||
public CommandUseHandler(HashMap<String, Integer> serverData) {
|
||||
this.commandUse = serverData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds command to the command usage.
|
||||
* @param command Used command, first part (eg. /plan)
|
||||
*/
|
||||
public void handleCommand(String command) {
|
||||
if (!commandUse.containsKey(command)) {
|
||||
commandUse.put(command, 0);
|
||||
}
|
||||
commandUse.put(command, commandUse.get(command) + 1);
|
||||
}
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DemographicsHandler {
|
||||
|
||||
private final DataCacheHandler handler;
|
||||
private final Plan plugin;
|
||||
|
||||
/**
|
||||
* Class Constructor
|
||||
*
|
||||
* @param plugin Current instance of Plan.class
|
||||
* @param h Current instance of DataCacheHandler h
|
||||
*/
|
||||
public DemographicsHandler(Plan plugin, DataCacheHandler h) {
|
||||
this.handler = h;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the message for Demographics relevant data
|
||||
*
|
||||
* If message contains triggerwords and words that define data important,
|
||||
* informatino will be saved in the DemographicsData of UserData provided
|
||||
*
|
||||
* @param message Chat Message
|
||||
* @param data UserData corresponding to player of this event.
|
||||
*/
|
||||
public void handleChatEvent(String message, UserData data) {
|
||||
List<String> triggers = Arrays.asList(Settings.DEM_TRIGGERS.toString().split(", "));
|
||||
List<String> female = Arrays.asList(Settings.DEM_FEMALE.toString().split(", "));
|
||||
List<String> male = Arrays.asList(Settings.DEM_MALE.toString().split(", "));
|
||||
List<String> ignore = Arrays.asList(Settings.DEM_IGNORE.toString().split(", "));
|
||||
|
||||
String[] messageA = message.toLowerCase().split("\\s+");
|
||||
|
||||
boolean trigger = false;
|
||||
boolean gender = false;
|
||||
|
||||
// Does message contain important data?
|
||||
for (String string : messageA) {
|
||||
if (ignore.contains(string)) {
|
||||
trigger = false;
|
||||
break;
|
||||
}
|
||||
if (triggers.contains(string)) {
|
||||
trigger = true;
|
||||
}
|
||||
if (female.contains(string) || male.contains(string)) {
|
||||
gender = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if not end
|
||||
if (!trigger) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Manage important data
|
||||
int ageNum = -1;
|
||||
for (String string : messageA) {
|
||||
try {
|
||||
ageNum = Integer.parseInt(string);
|
||||
if (ageNum != -1) {
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (ageNum != -1 && ageNum < 100) {
|
||||
data.getDemData().setAge(ageNum);
|
||||
}
|
||||
if (gender) {
|
||||
for (String string : messageA) {
|
||||
if (female.contains(string)) {
|
||||
data.getDemData().setGender(Gender.FEMALE);
|
||||
} else if (male.contains(string)) {
|
||||
data.getDemData().setGender(Gender.MALE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Locates the player upon login
|
||||
*
|
||||
* Uses ip-api.com to locate the IP address If too many calls are made to
|
||||
* the API the IP will be blocked from further calls.
|
||||
*
|
||||
* @param ip Player's IP address
|
||||
* @param data UserData corresponding the player
|
||||
*/
|
||||
public void handleLogin(InetAddress ip, UserData data) {
|
||||
DemographicsData demData = data.getDemData();
|
||||
try {
|
||||
String result = "";
|
||||
URL url = new URL("http://freegeoip.net/csv/" + ip.getHostAddress());
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
|
||||
|
||||
String resultline;
|
||||
while ((resultline = in.readLine()) != null) {
|
||||
result += resultline + ",";
|
||||
}
|
||||
in.close();
|
||||
|
||||
String[] results = result.split(",");
|
||||
if (!results[2].isEmpty()) {
|
||||
demData.setGeoLocation(results[2]);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
demData.setGeoLocation(Phrase.DEM_UNKNOWN + "");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.util.HashMap;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class GamemodeTimesHandler {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
* @param h Current instance of DataCacheHandler
|
||||
*/
|
||||
public GamemodeTimesHandler(Plan plugin, DataCacheHandler h) {
|
||||
this.plugin = plugin;
|
||||
handler = h;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates lastGamemode to current gamemode on Login
|
||||
*
|
||||
* @param gm Gamemode upon login
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleLogin(GameMode gm, UserData data) {
|
||||
handleChangeEvent(gm, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the GameModeTimes HashMap.
|
||||
*
|
||||
* Updates GMTimes with new values and sets lastSwap and lastGM.
|
||||
*
|
||||
* @param newGM the GameMode player changed to
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void handleChangeEvent(GameMode newGM, UserData data) {
|
||||
if (newGM == null) {
|
||||
return;
|
||||
}
|
||||
if (data.getLastGamemode() == null) {
|
||||
data.setLastGamemode(GameMode.SURVIVAL);
|
||||
}
|
||||
GameMode oldGM = data.getLastGamemode();
|
||||
HashMap<GameMode, Long> times = data.getGmTimes();
|
||||
Long currentGMTime = times.get(oldGM);
|
||||
if (currentGMTime == null) {
|
||||
currentGMTime = 0L;
|
||||
}
|
||||
handler.getActivityHandler().saveToCache(data);
|
||||
long lastSwap = data.getLastGmSwapTime();
|
||||
long playTime = data.getPlayTime();
|
||||
data.setGMTime(oldGM, currentGMTime + (playTime - lastSwap));
|
||||
data.setLastGamemode(newGM);
|
||||
data.setLastGmSwapTime(playTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates GMTimes with new values and saves it to cache.
|
||||
*
|
||||
* @param currentGM Current Gamemode of the Player
|
||||
* @param data UserData matching the Player
|
||||
*/
|
||||
public void saveToCache(GameMode currentGM, UserData data) {
|
||||
if (currentGM == null) {
|
||||
return;
|
||||
}
|
||||
HashMap<GameMode, Long> times = data.getGmTimes();
|
||||
handler.getActivityHandler().saveToCache(data);
|
||||
Long currentGMTime = times.get(currentGM);
|
||||
if (currentGMTime == null) {
|
||||
currentGMTime = 0L;
|
||||
}
|
||||
long lastSwap = data.getLastGmSwapTime();
|
||||
long playtime = data.getPlayTime();
|
||||
data.setGMTime(currentGM, currentGMTime + (playtime - lastSwap));
|
||||
data.setLastGmSwapTime(playtime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates GMTImes for player who is online when /reload is run.
|
||||
*
|
||||
* @param currentGM Gamemode if online during reload
|
||||
* @param data UserData matching Player
|
||||
*/
|
||||
public void handleReload(GameMode currentGM, UserData data) {
|
||||
saveToCache(currentGM, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates GMTimes on Logout.
|
||||
*
|
||||
* @param currentGM Current gamemode at logout
|
||||
* @param data UserData matching Player
|
||||
*/
|
||||
public void handleLogOut(GameMode currentGM, UserData data) {
|
||||
saveToCache(currentGM, data);
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.KillData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class KillHandler {
|
||||
|
||||
private Plan plugin;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param plugin
|
||||
*/
|
||||
public KillHandler(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param killerData
|
||||
* @param victimUUID
|
||||
* @param weapon
|
||||
*/
|
||||
public void handlePlayerKill(UserData killerData, UUID victimUUID, String weapon) {
|
||||
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
|
||||
int victimID;
|
||||
try {
|
||||
victimID = plugin.getDB().getUserId(victimUUID + "");
|
||||
} catch (SQLException e) {
|
||||
plugin.toLog(this.getClass().getName(), e);
|
||||
return;
|
||||
}
|
||||
killerData.addPlayerKill(new KillData(victimUUID, victimID, weapon, now));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
public void handlePlayerDeath(UserData data) {
|
||||
data.setDeaths(data.getDeaths() + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
public void handleMobKill(UserData data) {
|
||||
data.setMobKills(data.getMobKills() + 1);
|
||||
}
|
||||
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package main.java.com.djrapitops.plan.data.handlers;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class RuleBreakingHandler {
|
||||
|
||||
private final DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
* @param h Current instance of DataCacheHandler
|
||||
*/
|
||||
public RuleBreakingHandler(Plan plugin, DataCacheHandler h) {
|
||||
this.handler = h;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update if player is banned or not on logout.
|
||||
*
|
||||
* @param isBanned
|
||||
* @param data UserData matching Player
|
||||
*/
|
||||
public void handleLogout(boolean isBanned, UserData data) {
|
||||
data.updateBanned(isBanned);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update if player is banned or not on kick.
|
||||
*
|
||||
* @param data UserData matching Player
|
||||
*/
|
||||
public void handleKick(UserData data) {
|
||||
data.setTimesKicked(data.getTimesKicked() + 1);
|
||||
handler.getActivityHandler().handleLogOut(data);
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class ChatHandling {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param nickname
|
||||
* @param msg
|
||||
*/
|
||||
public static void processChatInfo(UserData data, String nickname, String msg) {
|
||||
data.addNickname(nickname);
|
||||
updateDemographicInformation(msg, data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param msg
|
||||
* @param data
|
||||
*/
|
||||
public static void updateDemographicInformation(String msg, UserData data) {
|
||||
List<String> triggers = Arrays.asList(Settings.DEM_TRIGGERS.toString().split(", "));
|
||||
List<String> female = Arrays.asList(Settings.DEM_FEMALE.toString().split(", "));
|
||||
List<String> male = Arrays.asList(Settings.DEM_MALE.toString().split(", "));
|
||||
List<String> ignore = Arrays.asList(Settings.DEM_IGNORE.toString().split(", "));
|
||||
String[] messageA = msg.toLowerCase().split("\\s+");
|
||||
boolean trigger = false;
|
||||
boolean gender = false;
|
||||
for (String string : messageA) {
|
||||
if (ignore.contains(string)) {
|
||||
trigger = false;
|
||||
break;
|
||||
}
|
||||
if (triggers.contains(string)) {
|
||||
trigger = true;
|
||||
}
|
||||
if (female.contains(string) || male.contains(string)) {
|
||||
gender = true;
|
||||
}
|
||||
}
|
||||
if (!trigger) {
|
||||
return;
|
||||
}
|
||||
int ageNum = -1;
|
||||
for (String string : messageA) {
|
||||
try {
|
||||
ageNum = Integer.parseInt(string);
|
||||
if (ageNum != -1) {
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (ageNum != -1 && ageNum < 100) {
|
||||
data.getDemData().setAge(ageNum);
|
||||
}
|
||||
if (gender) {
|
||||
for (String string : messageA) {
|
||||
if (female.contains(string)) {
|
||||
data.getDemData().setGender(Gender.FEMALE);
|
||||
} else if (male.contains(string)) {
|
||||
data.getDemData().setGender(Gender.MALE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.util.HashMap;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class GamemodeHandling {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param time
|
||||
* @param newGM
|
||||
*/
|
||||
public static void processGamemodeInfo(UserData data, long time, GameMode newGM) {
|
||||
if (newGM == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
GameMode lastGamemode = data.getLastGamemode();
|
||||
if (lastGamemode == null) {
|
||||
data.setLastGamemode(newGM);
|
||||
}
|
||||
lastGamemode = data.getLastGamemode();
|
||||
HashMap<GameMode, Long> times = data.getGmTimes();
|
||||
Long currentGMTime = times.get(lastGamemode);
|
||||
if (currentGMTime == null) {
|
||||
currentGMTime = 0L;
|
||||
}
|
||||
data.setPlayTime(data.getPlayTime() + (time - data.getLastPlayed()));
|
||||
data.setLastPlayed(time);
|
||||
long lastSwap = data.getLastGmSwapTime();
|
||||
long playtime = data.getPlayTime();
|
||||
data.setGMTime(lastGamemode, currentGMTime + (playtime - lastSwap));
|
||||
data.setLastGmSwapTime(playtime);
|
||||
data.setLastGamemode(newGM);
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.KillData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class KillHandling {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param time
|
||||
* @param dead
|
||||
* @param weaponName
|
||||
*/
|
||||
public static void processKillInfo(UserData data, long time, LivingEntity dead, String weaponName) {
|
||||
Plan plugin = getPlugin(Plan.class);
|
||||
if (dead instanceof Player) {
|
||||
Player deadPlayer = (Player) dead;
|
||||
int victimID;
|
||||
try {
|
||||
UUID victimUUID = deadPlayer.getUniqueId();
|
||||
victimID = plugin.getDB().getUserId(victimUUID + "");
|
||||
if (victimID == -1) {
|
||||
return;
|
||||
}
|
||||
data.addPlayerKill(new KillData(victimUUID, victimID, weaponName, time));
|
||||
} catch (SQLException e) {
|
||||
plugin.toLog("main.java.com.djrapitops.plan.KillHandling", e);
|
||||
}
|
||||
} else {
|
||||
data.setMobKills(data.getMobKills() + 1);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URL;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LoginHandling {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param time
|
||||
* @param ip
|
||||
* @param banned
|
||||
* @param nickname
|
||||
* @param loginTimes
|
||||
*/
|
||||
public static void processLoginInfo(UserData data, long time, InetAddress ip, boolean banned, String nickname, int loginTimes) {
|
||||
data.setLastPlayed(time);
|
||||
data.updateBanned(banned);
|
||||
data.setLoginTimes(data.getLoginTimes() + loginTimes);
|
||||
data.addNickname(nickname);
|
||||
data.addIpAddress(ip);
|
||||
updateGeolocation(ip, data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ip
|
||||
* @param data
|
||||
*/
|
||||
public static void updateGeolocation(InetAddress ip, UserData data) {
|
||||
DemographicsData demData = data.getDemData();
|
||||
try {
|
||||
String result = "";
|
||||
URL url = new URL("http://freegeoip.net/csv/" + ip.getHostAddress());
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
|
||||
|
||||
String resultline;
|
||||
while ((resultline = in.readLine()) != null) {
|
||||
result += resultline + ",";
|
||||
}
|
||||
in.close();
|
||||
|
||||
String[] results = result.split(",");
|
||||
if (!results[2].isEmpty()) {
|
||||
demData.setGeoLocation(results[2]);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
demData.setGeoLocation(Phrase.DEM_UNKNOWN + "");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LogoutHandling {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @param time
|
||||
* @param banned
|
||||
*/
|
||||
public static void processLogoutInfo(UserData data, long time, boolean banned) {
|
||||
data.setPlayTime(data.getPlayTime() + (time - data.getLastPlayed()));
|
||||
data.setLastPlayed(time);
|
||||
data.updateBanned(banned);
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.ChatHandling;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class ChatInfo extends HandlingInfo {
|
||||
private String nickname;
|
||||
private String message;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param nickname
|
||||
* @param message
|
||||
*/
|
||||
public ChatInfo(UUID uuid, String nickname, String message) {
|
||||
super(uuid, InfoType.CHAT, 0L);
|
||||
this.nickname = nickname;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getNickname() {
|
||||
return nickname;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
ChatHandling.processChatInfo(uData, nickname, message);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class DeathInfo extends HandlingInfo{
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
*/
|
||||
public DeathInfo(UUID uuid) {
|
||||
super(uuid, InfoType.DEATH, 0L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.setDeaths(uData.getDeaths()+1);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.GamemodeHandling;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class GamemodeInfo extends HandlingInfo{
|
||||
private GameMode currentGamemode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param gm
|
||||
*/
|
||||
public GamemodeInfo(UUID uuid, long time, GameMode gm) {
|
||||
super(uuid, InfoType.GM, time);
|
||||
currentGamemode = gm;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (currentGamemode == null) {
|
||||
return false;
|
||||
}
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
GamemodeHandling.processGamemodeInfo(uData, time, currentGamemode);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public abstract class HandlingInfo {
|
||||
|
||||
UUID uuid;
|
||||
InfoType type;
|
||||
long time;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param type
|
||||
* @param time
|
||||
*/
|
||||
public HandlingInfo(UUID uuid, InfoType type, long time) {
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public InfoType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public long getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean process(UserData uData);
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public enum InfoType {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
CHAT,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
DEATH,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
KILL,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GM,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
LOGIN,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
LOGOUT,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
KICK,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
RELOAD
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class KickInfo extends HandlingInfo {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
*/
|
||||
public KickInfo(UUID uuid) {
|
||||
super(uuid, InfoType.KICK, 0L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.setTimesKicked(uData.getTimesKicked()+1);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.KillHandling;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class KillInfo extends HandlingInfo {
|
||||
|
||||
private LivingEntity dead;
|
||||
private String weaponName;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param dead
|
||||
* @param weaponName
|
||||
*/
|
||||
public KillInfo(UUID uuid, long time, LivingEntity dead, String weaponName) {
|
||||
super(uuid, InfoType.KILL, time);
|
||||
this.dead = dead;
|
||||
this.weaponName = weaponName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
KillHandling.processKillInfo(uData, time, dead, weaponName);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LoginHandling;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LoginInfo extends HandlingInfo{
|
||||
private InetAddress ip;
|
||||
private boolean banned;
|
||||
private String nickname;
|
||||
private GamemodeInfo gmInfo;
|
||||
private int loginTimes;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param ip
|
||||
* @param banned
|
||||
* @param nickname
|
||||
* @param gm
|
||||
* @param loginTimes
|
||||
*/
|
||||
public LoginInfo(UUID uuid, long time, InetAddress ip, boolean banned, String nickname, GameMode gm, int loginTimes) {
|
||||
super(uuid, InfoType.LOGIN, time);
|
||||
this.ip = ip;
|
||||
this.banned = banned;
|
||||
this.nickname = nickname;
|
||||
this.gmInfo = new GamemodeInfo(uuid, time, gm);
|
||||
this.loginTimes = loginTimes;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param ip
|
||||
* @param banned
|
||||
* @param nickname
|
||||
* @param gm
|
||||
*/
|
||||
public LoginInfo(UUID uuid, long time, InetAddress ip, boolean banned, String nickname, GameMode gm) {
|
||||
this(uuid, time, ip, banned, nickname, gm, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
LoginHandling.processLoginInfo(uData, getTime(), ip, banned, nickname, loginTimes);
|
||||
gmInfo.process(uData);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LogoutHandling;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LogoutInfo extends HandlingInfo {
|
||||
|
||||
private boolean banned;
|
||||
private SessionData sData;
|
||||
private GamemodeInfo gmInfo;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param banned
|
||||
* @param gm
|
||||
* @param sData
|
||||
*/
|
||||
public LogoutInfo(UUID uuid, long time, boolean banned, GameMode gm, SessionData sData) {
|
||||
super(uuid, InfoType.LOGOUT, time);
|
||||
this.banned = banned;
|
||||
this.sData = sData;
|
||||
this.gmInfo = new GamemodeInfo(uuid, time, gm);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
uData.addSession(sData);
|
||||
LogoutHandling.processLogoutInfo(uData, time, banned);
|
||||
gmInfo.process(uData);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import org.bukkit.GameMode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class ReloadInfo extends HandlingInfo {
|
||||
|
||||
private LoginInfo info;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @param time
|
||||
* @param ip
|
||||
* @param banned
|
||||
* @param nickname
|
||||
* @param gm
|
||||
*/
|
||||
public ReloadInfo(UUID uuid, long time, InetAddress ip, boolean banned, String nickname, GameMode gm) {
|
||||
super(uuid, InfoType.RELOAD, time);
|
||||
info = new LoginInfo(uuid, time, ip, banned, nickname, gm);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uData
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
if (!uData.getUuid().equals(uuid)) {
|
||||
return false;
|
||||
}
|
||||
return info.process(uData);
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,8 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.BasicInfoHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.DemographicsHandler;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.ChatInfo;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -20,8 +17,6 @@ public class PlanChatListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final DemographicsHandler demographicsHandler;
|
||||
private final BasicInfoHandler basicInfoH;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
@ -31,8 +26,6 @@ public class PlanChatListener implements Listener {
|
||||
public PlanChatListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
handler = plugin.getHandler();
|
||||
demographicsHandler = handler.getDemographicsHandler();
|
||||
basicInfoH = handler.getBasicInfoHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,13 +39,6 @@ public class PlanChatListener implements Listener {
|
||||
return;
|
||||
}
|
||||
Player p = event.getPlayer();
|
||||
DBCallableProcessor chatProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
basicInfoH.addNickname(p.getDisplayName(), data);
|
||||
demographicsHandler.handleChatEvent(event.getMessage(), data);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(chatProcessor, p.getUniqueId());
|
||||
handler.addToPool(new ChatInfo(p.getUniqueId(), p.getDisplayName(), event.getMessage()));
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.CommandUseHandler;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
@ -16,7 +16,6 @@ public class PlanCommandPreprocessListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final CommandUseHandler serverH;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
@ -26,7 +25,6 @@ public class PlanCommandPreprocessListener implements Listener {
|
||||
public PlanCommandPreprocessListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
handler = plugin.getHandler();
|
||||
serverH = handler.getCommandUseHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -39,9 +37,9 @@ public class PlanCommandPreprocessListener implements Listener {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
if (event.getPlayer().hasPermission("plan.ignore.commanduse")) {
|
||||
if (Permissions.IGNORE_COMMANDUSE.userHasThisPermission(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
serverH.handleCommand(event.getMessage().split(" ")[0]);
|
||||
handler.handleCommand(event.getMessage().split(" ")[0]);
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.KillHandler;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.DeathInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.KillInfo;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -20,7 +20,6 @@ public class PlanDeathEventListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final KillHandler kH;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -29,7 +28,6 @@ public class PlanDeathEventListener implements Listener {
|
||||
public PlanDeathEventListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
this.handler = plugin.getHandler();
|
||||
this.kH = this.handler.getKillHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -39,45 +37,15 @@ public class PlanDeathEventListener implements Listener {
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onDeath(EntityDeathEvent event) {
|
||||
long time = new Date().getTime();
|
||||
LivingEntity dead = event.getEntity();
|
||||
Player killer = dead.getKiller();
|
||||
boolean killerIsPlayer = killer != null;
|
||||
if (killerIsPlayer) {
|
||||
DBCallableProcessor deathProcess = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData killersData) {
|
||||
continueProcessing(dead, killerIsPlayer, killer, killersData);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(deathProcess, killer.getUniqueId());
|
||||
} else {
|
||||
continueProcessing(dead, false, null, null);
|
||||
handler.addToPool(new KillInfo(killer.getUniqueId(), time, dead, killer.getInventory().getItemInMainHand().getType().name()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param dead
|
||||
* @param killerIsPlayer
|
||||
* @param killer
|
||||
* @param killersData
|
||||
*/
|
||||
public void continueProcessing(LivingEntity dead, boolean killerIsPlayer, Player killer, UserData killersData) {
|
||||
if (dead instanceof Player) {
|
||||
Player killed = (Player) dead;
|
||||
DBCallableProcessor deathProcess = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData killedsData) {
|
||||
if (killerIsPlayer) {
|
||||
String weaponName = killer.getInventory().getItemInMainHand().getType().name();
|
||||
kH.handlePlayerKill(killersData, killed.getUniqueId(), weaponName);
|
||||
}
|
||||
kH.handlePlayerDeath(killedsData);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(deathProcess, killed.getUniqueId());
|
||||
} else if (killerIsPlayer) {
|
||||
kH.handleMobKill(killersData);
|
||||
handler.addToPool(new DeathInfo(((Player) dead).getUniqueId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.GamemodeTimesHandler;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.GamemodeInfo;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -19,7 +18,6 @@ public class PlanGamemodeChangeListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final GamemodeTimesHandler gmTimesH;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
@ -29,7 +27,7 @@ public class PlanGamemodeChangeListener implements Listener {
|
||||
public PlanGamemodeChangeListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
handler = plugin.getHandler();
|
||||
gmTimesH = handler.getGamemodeTimesHandler();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,12 +41,6 @@ public class PlanGamemodeChangeListener implements Listener {
|
||||
return;
|
||||
}
|
||||
Player p = event.getPlayer();
|
||||
DBCallableProcessor gmProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
gmTimesH.handleChangeEvent(event.getNewGameMode(), data);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(gmProcessor, p.getUniqueId());
|
||||
handler.addToPool(new GamemodeInfo(p.getUniqueId(), new Date().getTime(), event.getNewGameMode()));
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.*;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.KickInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.LoginInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.LogoutInfo;
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -25,12 +27,6 @@ public class PlanPlayerListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final ActivityHandler activityH;
|
||||
private final BasicInfoHandler basicInfoH;
|
||||
private final GamemodeTimesHandler gmTimesH;
|
||||
private final DemographicsHandler demographicH;
|
||||
private final RuleBreakingHandler rulebreakH;
|
||||
private final LocationHandler locationH;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
@ -43,12 +39,6 @@ public class PlanPlayerListener implements Listener {
|
||||
public PlanPlayerListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
handler = plugin.getHandler();
|
||||
activityH = handler.getActivityHandler();
|
||||
basicInfoH = handler.getBasicInfoHandler();
|
||||
gmTimesH = handler.getGamemodeTimesHandler();
|
||||
demographicH = handler.getDemographicsHandler();
|
||||
rulebreakH = handler.getRuleBreakingHandler();
|
||||
locationH = handler.getLocationHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,25 +53,19 @@ public class PlanPlayerListener implements Listener {
|
||||
public void onPlayerLogin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
BukkitTask asyncLoginSaveTask = (new BukkitRunnable() {
|
||||
handler.startSession(uuid);
|
||||
BukkitTask asyncNewPlayerCheckTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
boolean isNewPlayer = activityH.isFirstTimeJoin(uuid);
|
||||
LoginInfo loginInfo = new LoginInfo(uuid, new Date().getTime(), player.getAddress().getAddress(), player.isBanned(), player.getDisplayName(), player.getGameMode(), 1);
|
||||
boolean isNewPlayer = !plugin.getDB().wasSeenBefore(uuid);
|
||||
if (isNewPlayer) {
|
||||
handler.newPlayer(player);
|
||||
}
|
||||
DBCallableProcessor loginProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
activityH.handleLogin(player.isBanned(), data);
|
||||
InetAddress ip = player.getAddress().getAddress();
|
||||
basicInfoH.handleLogin(player.getDisplayName(), ip, data);
|
||||
gmTimesH.handleLogin(player.getGameMode(), data);
|
||||
demographicH.handleLogin(ip, data);
|
||||
handler.saveCachedData(uuid);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(loginProcessor, uuid);
|
||||
UserData newUserData = NewPlayerCreator.createNewPlayer(player);
|
||||
loginInfo.process(newUserData);
|
||||
handler.newPlayer(newUserData);
|
||||
} else {
|
||||
handler.addToPool(loginInfo);
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
@ -99,17 +83,9 @@ public class PlanPlayerListener implements Listener {
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
DBCallableProcessor logoutProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
activityH.handleLogOut(data);
|
||||
gmTimesH.handleLogOut(player.getGameMode(), data);
|
||||
data.addLocations(locationH.getLocationsForSaving(uuid));
|
||||
handler.saveCachedData(uuid);
|
||||
locationH.clearLocations(uuid);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(logoutProcessor, uuid);
|
||||
handler.endSession(uuid);
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode(), handler.getSession(uuid)));
|
||||
handler.saveCachedData(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -124,17 +100,11 @@ public class PlanPlayerListener implements Listener {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
DBCallableProcessor kickProcessor = new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
rulebreakH.handleKick(data);
|
||||
data.addLocations(locationH.getLocationsForSaving(uuid));
|
||||
handler.saveCachedData(uuid);
|
||||
locationH.clearLocations(uuid);
|
||||
handler.scheludeForClear(uuid);
|
||||
}
|
||||
};
|
||||
handler.getUserDataForProcessing(kickProcessor, uuid);
|
||||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
handler.endSession(uuid);
|
||||
handler.addToPool(new LogoutInfo(uuid, new Date().getTime(), player.isBanned(), player.getGameMode(), handler.getSession(uuid)));
|
||||
handler.addToPool(new KickInfo(uuid));
|
||||
handler.saveCachedData(uuid);
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package main.java.com.djrapitops.plan.data.listeners;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.handlers.LocationHandler;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -18,7 +17,6 @@ public class PlanPlayerMoveListener implements Listener {
|
||||
|
||||
private final Plan plugin;
|
||||
private final DataCacheHandler handler;
|
||||
private final LocationHandler locationH;
|
||||
|
||||
/**
|
||||
* Class Consturctor.
|
||||
@ -28,7 +26,6 @@ public class PlanPlayerMoveListener implements Listener {
|
||||
public PlanPlayerMoveListener(Plan plugin) {
|
||||
this.plugin = plugin;
|
||||
handler = plugin.getHandler();
|
||||
locationH = handler.getLocationHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -50,6 +47,6 @@ public class PlanPlayerMoveListener implements Listener {
|
||||
}
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
Location savedLocation = to.getBlock().getLocation();
|
||||
locationH.addLocation(uuid, savedLocation);
|
||||
handler.addLocation(uuid, savedLocation);
|
||||
}
|
||||
}
|
||||
|
@ -166,5 +166,13 @@ public abstract class Database {
|
||||
* @throws SQLException
|
||||
*/
|
||||
public abstract int getUserId(String uuid) throws SQLException;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param userId
|
||||
* @param worlds
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public abstract List<Location> getLocations(String userId, HashMap<String, World> worlds) throws SQLException;
|
||||
}
|
||||
|
@ -19,11 +19,11 @@ import main.java.com.djrapitops.plan.data.*;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.UUIDFetcher;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -161,6 +161,16 @@ public abstract class SQLDB extends Database {
|
||||
|
||||
versionName = "plan_version";
|
||||
|
||||
startConnectionPingTask(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param plugin
|
||||
* @throws IllegalArgumentException
|
||||
* @throws IllegalStateException
|
||||
*/
|
||||
public void startConnectionPingTask(Plan plugin) throws IllegalArgumentException, IllegalStateException {
|
||||
// Maintains Connection.
|
||||
(new BukkitRunnable() {
|
||||
@Override
|
||||
@ -711,6 +721,13 @@ public abstract class SQLDB extends Database {
|
||||
return nicknames;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param userId
|
||||
* @param worlds
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
@Override
|
||||
public List<Location> getLocations(String userId, HashMap<String, World> worlds) throws SQLException {
|
||||
PreparedStatement statement;
|
||||
|
@ -14,80 +14,379 @@ import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
*/
|
||||
public enum Html {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
REPLACE0("REPLACE0"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
REPLACE1("REPLACE1"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
WARN_INACCURATE("<div class=\"warn\">Data might be inaccurate, player has just registered.</div>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_0("<span class=\"black\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_1("<span class=\"darkblue\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_2("<span class=\"darkgreen\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_3("<span class=\"darkaqua\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_4("<span class=\"darkred\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_5("<span class=\"darkpurple\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_6("<span class=\"gold\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_7("<span class=\"gray\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_8("<span class=\"darkgray\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_9("<span class=\"blue\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_a("<span class=\"green\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_b("<span class=\"aqua\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_c("<span class=\"red\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_d("<span class=\"pink\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_e("<span class=\"yellow\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
COLOR_f("<span class=\"white\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
SPAN("" + REPLACE0 + "</span>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
BUTTON("<a class=\"button\" href=\"" + REPLACE0 + "\">" + REPLACE1 + "</a>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
BUTTON_CLASS("class=\"button\""),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
LINK("<a class=\"link\" href=\"" + REPLACE0 + "\">" + REPLACE1 + "</a>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
LINK_CLASS("class=\"link\""),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
IMG("<img src=\"" + REPLACE0 + "\">"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOP_TOWNS("<p><b>Top 20 Towns</b></p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOP_FACTIONS("<p><b>Top 20 Factions</b></p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOTAL_BALANCE("<p>Server Total Balance: " + REPLACE0 + "</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOTAL_VOTES("<p>Players have voted total of " + REPLACE0 + " times.</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PLOT_OPTIONS("<p>Plot options: " + REPLACE0 + "</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
FRIENDS("<p>Friends with " + REPLACE0 + "</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
BALANCE("<p>Balance: " + REPLACE0 + "</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
BANNED("| " + SPAN.parse(COLOR_4.parse() + "Banned")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
OPERATOR(", Operator (Op)"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ONLINE("| " + SPAN.parse(COLOR_2.parse() + "Online")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
OFFLINE("| " + SPAN.parse(COLOR_4.parse() + "Offline")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ACTIVE("Player is Active"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
INACTIVE("Player is inactive"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ERROR_LIST("Error Creating List</p>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
HIDDEN("Hidden (config)"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ERROR_NOT_SET("Error: Replace rule was not set"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
FACTION_NOT_FOUND("Faction not found"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
FACTION_NO_LEADER("No leader"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
FACTION_NO_FACTIONS("No Factions"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
WARPS("<br/>Warps: " + REPLACE0),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ACHIEVEMENTS("<br/>Achievements: " + REPLACE0 + "/" + REPLACE1),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
JAILED("| Jailed"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
MUTED("| Muted"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
VOTES("<br/>Has voted " + REPLACE0 + "times"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
FACTION("<br/>Faction: " + REPLACE0 + " | Power: " + REPLACE1 + "/REPLACE2"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOWN("<br/>Town: " + REPLACE0),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TOWN_NO_TOWNS("No Towns"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_BANNED("Banned"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_UNKNOWN("Unknown"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_INACTIVE("Inactive"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_ACTIVE("Active"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_ONLINE("Players Online"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_PLAYERS("Players"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GRAPH_DATE("Date"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_START_3("<table class=\"sortable table\"><thead><tr><th>REPLACE0</th><th>REPLACE1</th><th>REPLACE2</th></tr></thead><tbody>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_START_4("<table class=\"sortable table\"><thead><tr><th>REPLACE0</th><th>REPLACE1</th><th>REPLACE2</th><th>REPLACE3</th></tr></thead><tbody>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_SESSIONS_START(TABLE_START_3.parse("Session Started", "Session Ended", "Session Length")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_KILLS_START(TABLE_START_3.parse("Date", "Killed", "With")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_FACTIONS_START(TABLE_START_4.parse("Faction", "Power", "Land", "Leader")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_TOWNS_START(TABLE_START_4.parse("Town", "Residents", "Land", "Mayor")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_2("<tr><td><b>" + REPLACE0 + "</b></td><td>" + REPLACE1 + "</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_3("<tr><td><b>" + REPLACE0 + "</b></td><td>" + REPLACE1 + "</td><td>REPLACE2</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_4("<tr><td><b>" + REPLACE0 + "</b></td><td>" + REPLACE1 + "</td><td>REPLACE2</td><td>REPLACE3</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_PLAYERS("<tr><td>REPLACE0</td><td>REPLACE1</td><td sorttable_customkey=\"REPLACE2\">REPLACE3</td><td>REPLACE4</td><td sorttable_customkey=\"REPLACE5\">REPLACE6</td>" + "<td sorttable_customkey=\"REPLACE7\">REPLACE8</td><td>REPLACE9</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_3_CUSTOMKEY("<tr><td sorttable_customkey=\"REPLACE0\">REPLACE1</td><td sorttable_customkey=\"REPLACE2\">REPLACE3</td><td sorttable_customkey=\"REPLACE4\">REPLACE5</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLELINE_3_CUSTOMKEY_1("<tr><td sorttable_customkey=\"REPLACE0\">REPLACE1</td><td>REPLACE2</td><td>REPLACE3</td></tr>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ERROR_TABLE_2(TABLELINE_2.parse("No data", "No data")),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
TABLE_END("</tbody></table>"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
SESSIONDATA_NONE("No Session Data available"),
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
KILLDATA_NONE("No Kills"),;
|
||||
|
||||
private String html;
|
||||
@ -96,10 +395,19 @@ public enum Html {
|
||||
this.html = html;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String parse() {
|
||||
return html;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param p
|
||||
* @return
|
||||
*/
|
||||
public String parse(String... p) {
|
||||
String returnValue = this.html;
|
||||
for (int i = 0; i < p.length; i++) {
|
||||
@ -108,10 +416,18 @@ public enum Html {
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param html
|
||||
*/
|
||||
public void setHtml(String html) {
|
||||
this.html = html;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param localeFile
|
||||
*/
|
||||
public static void loadLocale(File localeFile) {
|
||||
try {
|
||||
Scanner localeScanner = new Scanner(localeFile, "UTF-8");
|
||||
|
@ -5,8 +5,8 @@ import main.java.com.djrapitops.plan.data.KillData;
|
||||
import main.java.com.djrapitops.plan.ui.Html;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -24,10 +24,10 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.ui.Html;
|
||||
import main.java.com.djrapitops.plan.ui.RecentPlayersButtonsCreator;
|
||||
import main.java.com.djrapitops.plan.ui.graphs.PlayerActivityGraphCreator;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -110,7 +110,7 @@ public class Analysis {
|
||||
return false;
|
||||
}
|
||||
uuids.stream().forEach((uuid) -> {
|
||||
inspectCache.cache(uuid, 15);
|
||||
inspectCache.cache(uuid);
|
||||
});
|
||||
log(Phrase.ANALYSIS_FETCH_DATA + "");
|
||||
while (rawData.size() != uuids.size()) {
|
||||
@ -134,6 +134,13 @@ public class Analysis {
|
||||
return analyzeData(rawData, uuids, analysisCache);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param rawData
|
||||
* @param uuids
|
||||
* @param analysisCache
|
||||
* @return
|
||||
*/
|
||||
public boolean analyzeData(List<UserData> rawData, List<UUID> uuids, AnalysisCacheHandler analysisCache) {
|
||||
// Create empty Dataset
|
||||
final RawAnalysisData sorted = new RawAnalysisData();
|
||||
|
@ -48,6 +48,13 @@ public class AnalysisUtils {
|
||||
return SortablePlayersTableCreator.createSortablePlayersTable(data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param registered
|
||||
* @param scale
|
||||
* @param now
|
||||
* @return
|
||||
*/
|
||||
public static int getNewPlayers(List<Long> registered, long scale, long now) {
|
||||
int newPlayers = 0;
|
||||
if (!registered.isEmpty()) {
|
||||
@ -61,6 +68,11 @@ public class AnalysisUtils {
|
||||
return newPlayers;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
public static List<Long> transformSessionDataToLengths(Collection<SessionData> data) {
|
||||
List<Long> list = data.stream()
|
||||
.filter(session -> session != null)
|
||||
@ -70,6 +82,11 @@ public class AnalysisUtils {
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public static long average(Collection<Long> list) {
|
||||
if (list.isEmpty()) {
|
||||
return 0;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package main.java.com.djrapitops.plan.utilities;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.ui.Html;
|
||||
|
@ -81,6 +81,11 @@ public class HtmlUtils {
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string
|
||||
* @return
|
||||
*/
|
||||
public static String removeXSS(String string) {
|
||||
return string.replace("<!--", "")
|
||||
.replace("-->", "")
|
||||
|
@ -15,10 +15,10 @@ import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -50,13 +50,15 @@ public class ManageUtils {
|
||||
* cache.
|
||||
*
|
||||
* @param onTimeData PlayTime data of Ontime
|
||||
* @param handler Cache the data will be cached to.
|
||||
* @param plugin Current instance of Plan
|
||||
* @return success?
|
||||
*/
|
||||
public static boolean importOnTime(HashMap<UUID, Long> onTimeData, DataCacheHandler handler) {
|
||||
public static boolean importOnTime(HashMap<UUID, Long> onTimeData, Plan plugin) {
|
||||
DataCacheHandler handler = plugin.getHandler();
|
||||
for (UUID uuid : onTimeData.keySet()) {
|
||||
OfflinePlayer player = getOfflinePlayer(uuid);
|
||||
if (handler.getActivityHandler().isFirstTimeJoin(uuid)) {
|
||||
if (!plugin.getDB().wasSeenBefore(uuid)) {
|
||||
|
||||
handler.newPlayer(player);
|
||||
}
|
||||
DBCallableProcessor importer = new DBCallableProcessor() {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.utilities;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -9,6 +8,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
import java.util.Set;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -37,7 +37,7 @@ public class MiscUtils {
|
||||
} catch (IOException | NumberFormatException e) {
|
||||
getPlugin(Plan.class).logError(Phrase.VERSION_CHECK_ERROR + "");
|
||||
}
|
||||
return Phrase.VERSION_FAIL+"";
|
||||
return Phrase.VERSION_FAIL + "";
|
||||
}
|
||||
|
||||
private static String getGitVersion() throws IOException {
|
||||
@ -54,6 +54,13 @@ public class MiscUtils {
|
||||
return lineWithVersion.split(": ")[1];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param currentVersion
|
||||
* @param gitVersion
|
||||
* @return
|
||||
* @throws NumberFormatException
|
||||
*/
|
||||
public static String checkVersion(String currentVersion, String gitVersion) throws NumberFormatException {
|
||||
int newestVersionNumber = FormatUtils.parseVersionNumber(gitVersion);
|
||||
int currentVersionNumber = FormatUtils.parseVersionNumber(currentVersion);
|
||||
@ -64,21 +71,30 @@ public class MiscUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param args
|
||||
* @param sender
|
||||
* @return
|
||||
*/
|
||||
public static String getPlayerName(String[] args, CommandSender sender) {
|
||||
return getPlayerName(args, sender, Permissions.INSPECT_OTHER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by the inspect command.
|
||||
*
|
||||
* @param args Arguments of the inspect command
|
||||
* @param args Arguments of a command, must be > 0 if console sender.
|
||||
* @param sender Command sender
|
||||
* @return The name of the player searched for, if the arguments are empty
|
||||
* player's own name is returned.
|
||||
* @return The name of the player (first argument or sender)
|
||||
*/
|
||||
public static String getPlayerDisplayname(String[] args, CommandSender sender) {
|
||||
public static String getPlayerName(String[] args, CommandSender sender, Permissions perm) {
|
||||
String playerName = "";
|
||||
Plan plugin = getPlugin(Plan.class);
|
||||
boolean isConsole = !(sender instanceof Player);
|
||||
if (args.length > 0) {
|
||||
if (sender.hasPermission("plan.inspect.other")
|
||||
|| isConsole) {
|
||||
if (isConsole) {
|
||||
playerName = args[0];
|
||||
} else if (args.length > 0) {
|
||||
if (perm.userHasThisPermission(sender)) {
|
||||
playerName = args[0];
|
||||
} else if (args[0].toLowerCase().equals(sender.getName().toLowerCase())) {
|
||||
playerName = sender.getName();
|
||||
@ -86,12 +102,7 @@ public class MiscUtils {
|
||||
sender.sendMessage(Phrase.COMMAND_NO_PERMISSION.toString());
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Player player = plugin.getServer().getPlayer(UUIDFetcher.getUUIDOf(sender.getName()));
|
||||
playerName = player.getName();
|
||||
} catch (Exception e) {
|
||||
plugin.logError(Phrase.ERROR_CONSOLE_PLAYER.parse(Arrays.toString(args), isConsole + ""));
|
||||
}
|
||||
playerName = sender.getName();
|
||||
}
|
||||
return playerName;
|
||||
}
|
||||
@ -107,8 +118,8 @@ public class MiscUtils {
|
||||
players.addAll(Arrays.asList(Bukkit.getOfflinePlayers()));
|
||||
Set<OfflinePlayer> matches = new HashSet<>();
|
||||
players.parallelStream()
|
||||
.filter((OfflinePlayer player) -> (player.getName().toLowerCase().contains(search.toLowerCase())))
|
||||
.forEach((OfflinePlayer player) -> {
|
||||
.filter(player -> (player.getName().toLowerCase().contains(search.toLowerCase())))
|
||||
.forEach(player -> {
|
||||
matches.add(player);
|
||||
});
|
||||
return matches;
|
||||
|
@ -33,6 +33,10 @@ import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
|
||||
private static final double PROFILES_PER_REQUEST = 100;
|
||||
@ -41,11 +45,20 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
private final List<String> names;
|
||||
private final boolean rateLimiting;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param names
|
||||
* @param rateLimiting
|
||||
*/
|
||||
public UUIDFetcher(List<String> names, boolean rateLimiting) {
|
||||
this.names = ImmutableList.copyOf(names);
|
||||
this.rateLimiting = rateLimiting;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param names
|
||||
*/
|
||||
public UUIDFetcher(List<String> names) {
|
||||
this(names, true);
|
||||
}
|
||||
@ -97,6 +110,11 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uuid
|
||||
* @return
|
||||
*/
|
||||
public static byte[] toBytes(UUID uuid) {
|
||||
ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]);
|
||||
byteBuffer.putLong(uuid.getMostSignificantBits());
|
||||
@ -104,6 +122,11 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
return byteBuffer.array();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array
|
||||
* @return
|
||||
*/
|
||||
public static UUID fromBytes(byte[] array) {
|
||||
if (array.length != 16) {
|
||||
throw new IllegalArgumentException("Illegal byte array length: " + array.length);
|
||||
@ -114,6 +137,12 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
return new UUID(mostSignificant, leastSignificant);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param name
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static UUID getUUIDOf(String name) throws Exception {
|
||||
return new UUIDFetcher(Arrays.asList(name)).call().get(name);
|
||||
}
|
||||
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.utilities.comparators;
|
||||
|
||||
import java.util.Comparator;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class HandlingInfoTimeComparator implements Comparator<HandlingInfo> {
|
||||
|
||||
@Override
|
||||
public int compare(HandlingInfo o1, HandlingInfo o2) {
|
||||
return ((Long) o1.getTime()).compareTo((Long) o2.getTime());
|
||||
}
|
||||
|
||||
}
|
@ -8,21 +8,20 @@ package test.java.main.java.com.djrapitops.plan;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
@ -30,9 +29,15 @@ public class PhraseTest {
|
||||
|
||||
private Plan plan;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public PhraseTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
@ -46,6 +51,9 @@ public class PhraseTest {
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testToString() {
|
||||
Phrase instance = Phrase.REPLACE0;
|
||||
@ -55,6 +63,9 @@ public class PhraseTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse_0args() {
|
||||
Phrase instance = Phrase.DEM_UNKNOWN;
|
||||
@ -63,6 +74,9 @@ public class PhraseTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse_StringArr() {
|
||||
Phrase instance = Phrase.REPLACE0;
|
||||
@ -71,6 +85,9 @@ public class PhraseTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testColor() {
|
||||
Phrase instance = Phrase.COLOR_MAIN;
|
||||
@ -80,6 +97,9 @@ public class PhraseTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetText() {
|
||||
Phrase instance = Phrase.REPLACE0;
|
||||
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class SettingsTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public SettingsTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testIsTrue() {
|
||||
assertTrue("Webserver supposed to be enabled by default", Settings.WEBSERVER_ENABLED.isTrue());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testToString() {
|
||||
assertEquals("sqlite",Settings.DB_TYPE.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetNumber() {
|
||||
assertEquals(8804,Settings.WEBSERVER_PORT.getNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetPath() {
|
||||
assertEquals("Settings.WebServer.Enabled", Settings.WEBSERVER_ENABLED.getPath());
|
||||
}
|
||||
|
||||
}
|
@ -6,18 +6,24 @@
|
||||
package test.java.main.java.com.djrapitops.plan.api;
|
||||
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class GenderTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public GenderTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse() {
|
||||
String name = "male";
|
||||
@ -26,6 +32,9 @@ public class GenderTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse2() {
|
||||
String name = "female";
|
||||
@ -34,6 +43,9 @@ public class GenderTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse3() {
|
||||
String name = "other";
|
||||
@ -42,6 +54,9 @@ public class GenderTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testParse4() {
|
||||
String name = "noeanroe";
|
||||
|
@ -9,13 +9,11 @@ import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
@ -24,15 +22,21 @@ import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class DemographicsDataTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DemographicsDataTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
@ -46,6 +50,9 @@ public class DemographicsDataTest {
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetAge() {
|
||||
DemographicsData instance = new DemographicsData();
|
||||
@ -54,6 +61,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetAge2() {
|
||||
DemographicsData instance = new DemographicsData(10, Gender.OTHER, "None");
|
||||
@ -62,6 +72,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetGender() {
|
||||
DemographicsData instance = new DemographicsData();
|
||||
@ -70,6 +83,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetGender2() {
|
||||
DemographicsData instance = new DemographicsData(10, Gender.OTHER, "None");
|
||||
@ -78,6 +94,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetGeoLocation() {
|
||||
DemographicsData instance = new DemographicsData();
|
||||
@ -86,6 +105,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetGeoLocation2() {
|
||||
DemographicsData instance = new DemographicsData(10, Gender.OTHER, "None");
|
||||
@ -94,6 +116,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetAge() {
|
||||
int age = 10;
|
||||
@ -103,6 +128,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(age, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetGender() {
|
||||
Gender gender = Gender.MALE;
|
||||
@ -112,6 +140,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(gender, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetGeoLocation() {
|
||||
String geoLocation = "None";
|
||||
@ -121,6 +152,9 @@ public class DemographicsDataTest {
|
||||
assertEquals(geoLocation, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testToString() {
|
||||
DemographicsData instance = new DemographicsData();
|
||||
|
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.KillData;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class KillDataTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public KillDataTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetVictim() {
|
||||
UUID uuid = UUID.fromString("71cfb6f0-c3ef-4954-8abe-13fa07afc340");
|
||||
KillData k = new KillData(uuid, 1, "TestWeapon", 100L);
|
||||
assertEquals(k.getVictim(), uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetDate() {
|
||||
UUID uuid = UUID.fromString("71cfb6f0-c3ef-4954-8abe-13fa07afc340");
|
||||
KillData k = new KillData(uuid, 1, "TestWeapon", 100L);
|
||||
assertEquals(k.getDate(), 100L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetWeapon() {
|
||||
UUID uuid = UUID.fromString("71cfb6f0-c3ef-4954-8abe-13fa07afc340");
|
||||
KillData k = new KillData(uuid, 1, "TestWeapon", 100L);
|
||||
assertEquals(k.getWeapon(), "TestWeapon");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetVictimUserID() {
|
||||
UUID uuid = UUID.fromString("71cfb6f0-c3ef-4954-8abe-13fa07afc340");
|
||||
KillData k = new KillData(uuid, 1, "TestWeapon", 100L);
|
||||
assertEquals(k.getVictimUserID(), 1);
|
||||
}
|
||||
|
||||
}
|
@ -7,47 +7,68 @@ package test.java.main.java.com.djrapitops.plan.data;
|
||||
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Test;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class SessionDataTest {
|
||||
|
||||
private SessionData test;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public SessionDataTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
test = new SessionData(0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEndSession() {
|
||||
test.endSession(1L);
|
||||
assertTrue("End not 1", test.getSessionEnd() == 1L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetSessionStart() {
|
||||
assertTrue("Start not 0", test.getSessionStart() == 0L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testIsValid() {
|
||||
test.endSession(1L);
|
||||
assertTrue("Supposed to be valid.", test.isValid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testInvalid() {
|
||||
assertTrue("Supposed to be invalid.", !test.isValid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testInvalid2() {
|
||||
test = new SessionData(3);
|
||||
@ -55,6 +76,9 @@ public class SessionDataTest {
|
||||
assertTrue("Supposed to be invalid.", !test.isValid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testValid2() {
|
||||
test = new SessionData(3);
|
||||
@ -62,6 +86,9 @@ public class SessionDataTest {
|
||||
assertTrue("Supposed to be valid.", test.isValid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testToString() {
|
||||
String exp = "s:0 e:-1";
|
||||
@ -69,6 +96,9 @@ public class SessionDataTest {
|
||||
assertEquals(exp, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetLength() {
|
||||
long exp = 5L;
|
||||
@ -76,4 +106,16 @@ public class SessionDataTest {
|
||||
long result = test.getLength();
|
||||
assertEquals(exp, result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetLength2() {
|
||||
long exp = 5L;
|
||||
test = new SessionData(5L);
|
||||
test.endSession(10L);
|
||||
long result = test.getLength();
|
||||
assertEquals(exp, result);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
@ -19,13 +18,14 @@ import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Test;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
@ -35,7 +35,7 @@ import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Risto
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
@ -44,9 +44,15 @@ public class UserDataTest {
|
||||
private UserData test;
|
||||
private Plan plan;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public UserDataTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
@ -63,6 +69,10 @@ public class UserDataTest {
|
||||
test = new UserData(UUID.fromString("7f8149a0-b5a5-4fcd-80b5-6cff083a99f1"), 0, null, true, GameMode.CREATIVE, demData, "Testname", true);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws UnknownHostException
|
||||
*/
|
||||
@Test
|
||||
public void testAddIpAddress() throws UnknownHostException {
|
||||
InetAddress ip = InetAddress.getByName("247.183.163.155");
|
||||
@ -77,6 +87,10 @@ public class UserDataTest {
|
||||
assertTrue("Added multiples", test.getIps().size() == 2);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws UnknownHostException
|
||||
*/
|
||||
@Test
|
||||
public void testAddIpAddresses() throws UnknownHostException {
|
||||
List<InetAddress> ips = new ArrayList<>();
|
||||
@ -93,6 +107,9 @@ public class UserDataTest {
|
||||
assertTrue("Added multiples", test.getIps().size() == 2);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddIpAddressesEmpty() {
|
||||
List<InetAddress> ips = new ArrayList<>();
|
||||
@ -100,6 +117,9 @@ public class UserDataTest {
|
||||
assertTrue("Added something", test.getIps().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddLocation() {
|
||||
World mockWorld = MockUtils.mockWorld();
|
||||
@ -108,12 +128,18 @@ public class UserDataTest {
|
||||
assertTrue("Didn't add location", !test.getLocations().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddNullLocation() {
|
||||
test.addLocation(null);
|
||||
assertTrue("Added location", test.getLocations().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddLocations() {
|
||||
World mockWorld = MockUtils.mockWorld();
|
||||
@ -130,13 +156,16 @@ public class UserDataTest {
|
||||
assertTrue("Added null", !locations.contains(null));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddNickname() {
|
||||
String one = "Test1";
|
||||
String two = "Test2";
|
||||
boolean n = test.addNickname(one);
|
||||
boolean n1 = test.addNickname(two);
|
||||
boolean n2 = test.addNickname(two);
|
||||
boolean n = test.addNickname(one);
|
||||
test.addNickname(null);
|
||||
assertTrue("Didn't add 1", test.getNicknames().contains(one));
|
||||
assertTrue("Didn't add 2", test.getNicknames().contains(two));
|
||||
@ -145,8 +174,12 @@ public class UserDataTest {
|
||||
assertTrue("2 is not new", !n2);
|
||||
assertTrue("Added null", !test.getNicknames().contains(null));
|
||||
assertTrue("Added multiples", test.getNicknames().size() == 2);
|
||||
assertTrue("Last nickname was not one", test.getLastNick().equals(one));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddNicknames() {
|
||||
String one = "Test1";
|
||||
@ -163,6 +196,9 @@ public class UserDataTest {
|
||||
assertTrue("Added multiples", test.getNicknames().size() == 2);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddNicknamesEmpty() {
|
||||
List<String> o = new ArrayList<>();
|
||||
@ -170,12 +206,18 @@ public class UserDataTest {
|
||||
assertTrue("Added something", test.getNicknames().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetGMTime() {
|
||||
test.setGMTime(GameMode.SURVIVAL, 1L);
|
||||
assertTrue("" + test.getGmTimes().get(GameMode.SURVIVAL), test.getGmTimes().get(GameMode.SURVIVAL) == 1L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetGMTimeWhenGMTimesNull() {
|
||||
test.setGmTimes(null);
|
||||
@ -183,12 +225,18 @@ public class UserDataTest {
|
||||
assertTrue("" + test.getGmTimes().get(GameMode.SURVIVAL), test.getGmTimes().get(GameMode.SURVIVAL) == 1L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetGMTimeNull() {
|
||||
test.setGMTime(null, 0L);
|
||||
assertTrue("Added null", !test.getGmTimes().containsKey(null));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetAllGMTimes() {
|
||||
HashMap<GameMode, Long> gmTimes = new HashMap<>();
|
||||
@ -203,6 +251,9 @@ public class UserDataTest {
|
||||
assertTrue("Not equal 3", times.get(GameMode.SPECTATOR) == 4L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSession() {
|
||||
SessionData correct = new SessionData(0, 1);
|
||||
@ -210,6 +261,9 @@ public class UserDataTest {
|
||||
assertTrue("Didn't add correct one", test.getSessions().contains(correct));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSessionIncorrect() {
|
||||
SessionData incorrect = new SessionData(0);
|
||||
@ -217,6 +271,9 @@ public class UserDataTest {
|
||||
assertTrue("Added incorrect one", !test.getSessions().contains(incorrect));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSessionNull() {
|
||||
SessionData incorrect = null;
|
||||
@ -224,6 +281,9 @@ public class UserDataTest {
|
||||
assertTrue("Added null", !test.getSessions().contains(incorrect));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSessions() {
|
||||
SessionData correct = new SessionData(0, 1);
|
||||
@ -238,6 +298,9 @@ public class UserDataTest {
|
||||
assertTrue("Added null", !test.getSessions().contains(incorrect));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSessionsEmpty() {
|
||||
List<SessionData> o = new ArrayList<>();
|
||||
@ -245,6 +308,9 @@ public class UserDataTest {
|
||||
assertTrue("Added something", test.getSessions().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSetCurrentSession() {
|
||||
SessionData s = new SessionData(0);
|
||||
@ -252,6 +318,9 @@ public class UserDataTest {
|
||||
assertEquals(test.getCurrentSession(), s);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateBanned() {
|
||||
test.updateBanned(true);
|
||||
@ -260,6 +329,9 @@ public class UserDataTest {
|
||||
assertTrue("True", !test.isBanned());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testIsAccessed() {
|
||||
test.access();
|
||||
@ -271,12 +343,18 @@ public class UserDataTest {
|
||||
assertTrue("Accessed, even though not accessing", !test.isAccessed());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAccess() {
|
||||
test.access();
|
||||
assertTrue("Not accessed, even though accessing", test.isAccessed());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testStopAccessing() {
|
||||
test.access();
|
||||
@ -284,29 +362,44 @@ public class UserDataTest {
|
||||
assertTrue("Accessed, even though not accessing", !test.isAccessed());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEquals() {
|
||||
assertTrue("Not Equals!", test.equals(new UserData(UUID.fromString("7f8149a0-b5a5-4fcd-80b5-6cff083a99f1"), 0, null, true, GameMode.CREATIVE, null, "Testname", true)));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEqualsNot() {
|
||||
UserData notEqual = new UserData(UUID.fromString("7f8149a0-b5a5-4fcd-80b5-6cff083a99f1"), 0, null, true, GameMode.CREATIVE, null, "WRONG", true);
|
||||
assertTrue("Equals!", !notEqual.equals(test));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEqualsNot2() {
|
||||
Object o = "NOT";
|
||||
assertTrue("Equals!", !test.equals(o));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testCopyConstructor() {
|
||||
UserData copy = new UserData(test);
|
||||
assertTrue("Not copied properly", test.equals(copy));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testPlayerConstructor() {
|
||||
test = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
@ -315,6 +408,10 @@ public class UserDataTest {
|
||||
assertTrue("Not equal!", test.equals(expected));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
@Test
|
||||
public void testPlayerConstructorBrokenBanned() throws IOException {
|
||||
test = new UserData(MockUtils.mockBrokenPlayer(), new DemographicsData());
|
||||
@ -323,6 +420,9 @@ public class UserDataTest {
|
||||
assertTrue("Not equal!", test.equals(expected));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testOfflinePlayerConstructor() {
|
||||
test = new UserData((OfflinePlayer) MockUtils.mockPlayer(), new DemographicsData());
|
||||
@ -331,6 +431,10 @@ public class UserDataTest {
|
||||
assertTrue("Not equal!", test.equals(expected));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
@Test
|
||||
public void testOfflinePlayerConstructorBrokenBanned() throws IOException {
|
||||
test = new UserData((OfflinePlayer) MockUtils.mockBrokenPlayer(), new DemographicsData());
|
||||
@ -339,6 +443,9 @@ public class UserDataTest {
|
||||
assertTrue("Not equal!", test.equals(expected));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetUUID() {
|
||||
assertEquals(test.getUuid(), UUID.fromString("7f8149a0-b5a5-4fcd-80b5-6cff083a99f1"));
|
||||
|
325
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/DataCacheHandlerTest.java
vendored
Normal file
325
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/DataCacheHandlerTest.java
vendored
Normal file
@ -0,0 +1,325 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.easymock.EasyMock.anyString;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import static org.powermock.api.mockito.PowerMockito.when;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class DataCacheHandlerTest {
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private DataCacheHandler handler;
|
||||
private boolean calledSaveCommandUse;
|
||||
private boolean calledSaveUserData;
|
||||
private boolean calledSaveMultiple;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheHandlerTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
calledSaveCommandUse = false;
|
||||
calledSaveUserData = false;
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<String, Integer> getCommandUse() {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveUserDataToProcessors(UUID uuid, Collection<DBCallableProcessor> processors) {
|
||||
if (uuid.equals(MockUtils.getPlayerUUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor p : processors) {
|
||||
p.process(d);
|
||||
}
|
||||
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor p : processors) {
|
||||
p.process(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveCommandUse(HashMap<String, Integer> c) {
|
||||
calledSaveCommandUse = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUserData(UUID uuid, UserData data) throws SQLException {
|
||||
calledSaveUserData = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveMultipleUserData(List<UserData> data) throws SQLException {
|
||||
calledSaveMultiple = true;
|
||||
}
|
||||
};
|
||||
when(plan.getDB()).thenReturn(db);
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
handler = new DataCacheHandler(plan) {
|
||||
@Override
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@After
|
||||
public void tearDown() throws SQLException {
|
||||
// db.close();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetUserDataForProcessingCache() throws SQLException, InterruptedException {
|
||||
// db.init();
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
handler.getUserDataForProcessing(new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData d) {
|
||||
assertTrue(d.equals(data));
|
||||
}
|
||||
}, data.getUuid());
|
||||
Thread.sleep(1000);
|
||||
assertTrue(handler.getDataCache().containsKey(data.getUuid()));
|
||||
assertTrue(handler.getDataCache().get(data.getUuid()).equals(data));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testGetUserDataForProcessingDontCache() throws SQLException, InterruptedException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
db.saveUserData(data.getUuid(), data);
|
||||
handler.getUserDataForProcessing(new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData d) {
|
||||
assertTrue(d.equals(data));
|
||||
}
|
||||
}, data.getUuid(), false);
|
||||
Thread.sleep(1000);
|
||||
assertTrue(!handler.getDataCache().containsKey(data.getUuid()));
|
||||
assertTrue(handler.getDataCache().get(data.getUuid()) == null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSaveCachedUserData() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
handler.getDataCache().put(data.getUuid(), data);
|
||||
handler.saveCachedUserData();
|
||||
assertTrue("Didn't call saveMultiple", calledSaveMultiple);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testAddToPool() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testSaveCacheOnDisable() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
handler.getDataCache().put(data.getUuid(), data);
|
||||
handler.startSession(data.getUuid());
|
||||
handler.saveCacheOnDisable();
|
||||
assertTrue(calledSaveMultiple);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testSaveCachedData() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testSaveCommandUse() {
|
||||
handler.saveCommandUse();
|
||||
assertTrue("Didn't call saveCMDUse for db", calledSaveCommandUse);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testSaveHandlerDataToCache() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testClearCache() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore("mock log")
|
||||
@Test
|
||||
public void testClearFromCache() {
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
handler.getDataCache().put(uuid, null);
|
||||
handler.clearFromCache(uuid);
|
||||
assertTrue("Found uuid", !handler.getDataCache().containsKey(uuid));
|
||||
assertTrue("Not empty", handler.getDataCache().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testScheludeForClear() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testIsDataAccessed() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testNewPlayer_Player() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testNewPlayer_OfflinePlayer() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testNewPlayer_UserData() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetDataCache() {
|
||||
assertTrue("Cache was null", handler.getDataCache() != null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testHandleReload() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetMaxPlayers() {
|
||||
assertEquals(20, handler.getMaxPlayers());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testHandleCommand() {
|
||||
handler.handleCommand("/plan");
|
||||
assertEquals((Integer) 1, handler.getCommandUse().get("/plan"));
|
||||
}
|
||||
|
||||
}
|
77
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/LocationCacheTest.java
vendored
Normal file
77
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/LocationCacheTest.java
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.cache.LocationCache;
|
||||
import org.bukkit.Location;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import test.java.utils.MockUtils;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class LocationCacheTest {
|
||||
|
||||
private LocationCache test;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public LocationCacheTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
test = new LocationCache();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddLocation() {
|
||||
Location loc = new Location(MockUtils.mockWorld(), 0, 0, 0);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
test.addLocation(uuid, loc);
|
||||
assertTrue("Didn't contain location", test.getLocationsForSaving(uuid).contains(loc));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddLocations() {
|
||||
Location loc = new Location(MockUtils.mockWorld(), 0, 0, 0);
|
||||
Location loc2 = new Location(MockUtils.mockWorld(), 1, 1, 1);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
test.addLocations(uuid, Arrays.asList(new Location[]{loc, loc2}));
|
||||
List<Location> result = test.getLocationsForSaving(uuid);
|
||||
assertTrue("Didn't contain location", result.contains(loc));
|
||||
assertTrue("Didn't contain location", result.contains(loc2));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testClearLocations() {
|
||||
Location loc = new Location(MockUtils.mockWorld(), 0, 0, 0);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
test.addLocation(uuid, loc);
|
||||
test.clearLocations(uuid);
|
||||
assertTrue("contains location", !test.getLocationsForSaving(uuid).contains(loc));
|
||||
}
|
||||
|
||||
}
|
95
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/SessionCacheTest.java
vendored
Normal file
95
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/SessionCacheTest.java
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.SessionData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.SessionCache;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class SessionCacheTest {
|
||||
|
||||
private SessionCache test;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public SessionCacheTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
test = new SessionCache();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testStartSession() {
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
test.startSession(uuid);
|
||||
assertTrue("Didn't contain new session", test.getActiveSessions().containsKey(uuid));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEndSession() {
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
test.getActiveSessions().put(uuid, new SessionData(0));
|
||||
test.endSession(uuid);
|
||||
SessionData testSession = test.getActiveSessions().get(uuid);
|
||||
assertTrue("Didn't end session", testSession.getSessionEnd() != -1);
|
||||
assertTrue("Session length not positive", testSession.getLength() > 0L);
|
||||
assertTrue("Session not valid", testSession.isValid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testAddSession() {
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
test.getActiveSessions().put(uuid, new SessionData(0));
|
||||
test.endSession(uuid);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
test.addSession(data);
|
||||
assertTrue("Didn't add session to data", data.getSessions().size() == 1);
|
||||
}
|
||||
|
||||
}
|
101
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheClearQueueTest.java
vendored
Normal file
101
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheClearQueueTest.java
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.io.File;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheClearQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheClearQueueTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
handler = new DataCacheHandler(plan) {
|
||||
@Override
|
||||
public boolean getCommandUseFromDb() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startQueues() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleForClear_UUID() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleForClear_Collection() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testStop() {
|
||||
}
|
||||
|
||||
}
|
151
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java
vendored
Normal file
151
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheGetQueue;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class, Bukkit.class})
|
||||
public class DataCacheGetQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private int rows;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheGetQueueTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws IOException
|
||||
* @throws Exception
|
||||
*/
|
||||
@Before
|
||||
public void setUp() throws IOException, Exception {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveUserDataToProcessors(UUID uuid, DBCallableProcessor... processors) {
|
||||
if (uuid.equals(MockUtils.getPlayerUUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor processor : processors) {
|
||||
processor.process(d);
|
||||
}
|
||||
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
for (DBCallableProcessor processor : processors) {
|
||||
processor.process(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
rows = 0;
|
||||
if (f.exists()) {
|
||||
rows = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws IOException
|
||||
* @throws SQLException
|
||||
*/
|
||||
@After
|
||||
public void tearDown() throws IOException, SQLException {
|
||||
db.close();
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
int rowsAgain = 0;
|
||||
if (f.exists()) {
|
||||
rowsAgain = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size();
|
||||
}
|
||||
assertTrue("Errors were caught.", rows == rowsAgain);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleForGet() {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData exp = new UserData(op, new DemographicsData());
|
||||
|
||||
DataCacheGetQueue instance = new DataCacheGetQueue(plan);
|
||||
instance.scheduleForGet(exp.getUuid(), new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
assertTrue(data.equals(exp));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testStop() {
|
||||
DataCacheGetQueue instance = new DataCacheGetQueue(plan);
|
||||
instance.stop();
|
||||
instance.scheduleForGet(MockUtils.getPlayerUUID(), new DBCallableProcessor() {
|
||||
@Override
|
||||
public void process(UserData data) {
|
||||
fail("Called get process after stop.");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
166
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueueTest.java
vendored
Normal file
166
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueueTest.java
vendored
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
|
||||
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheProcessQueue;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheProcessQueueTest {
|
||||
|
||||
private DataCacheHandler handler;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheProcessQueueTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
handler = new DataCacheHandler(plan) {
|
||||
@Override
|
||||
public boolean getCommandUseFromDb() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startQueues() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUserDataForProcessing(DBCallableProcessor p, UUID uuid) {
|
||||
if (uuid.equals(MockUtils.getPlayerUUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
p.process(d);
|
||||
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
|
||||
OfflinePlayer op = MockUtils.mockPlayer2();
|
||||
UserData d = new UserData(op, new DemographicsData());
|
||||
p.process(d);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testAddToPool_HandlingInfo() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
q.addToPool(new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
});
|
||||
Thread.sleep(1000);
|
||||
assertTrue(q.stop().isEmpty());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testAddToPool_Collection() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
List<HandlingInfo> l = new ArrayList<>();
|
||||
l.add(h);
|
||||
l.add(h);
|
||||
l.add(h);
|
||||
q.addToPool(l);
|
||||
Thread.sleep(1000);
|
||||
assertTrue(q.stop().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Ignore @Test
|
||||
public void testContainsUUID() throws InterruptedException {
|
||||
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
|
||||
UUID uuid = MockUtils.getPlayerUUID();
|
||||
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
|
||||
@Override
|
||||
public boolean process(UserData uData) {
|
||||
assertEquals(uuid, uData.getUuid());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
q.stop();
|
||||
Thread.sleep(2000);
|
||||
q.addToPool(h);
|
||||
assertTrue(q.containsUUID(uuid));
|
||||
}
|
||||
}
|
164
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheSaveQueueTest.java
vendored
Normal file
164
Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheSaveQueueTest.java
vendored
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheSaveQueue;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import static org.powermock.api.mockito.PowerMockito.when;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheSaveQueueTest {
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private boolean calledSaveUserData;
|
||||
private boolean calledSaveUserData2;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheSaveQueueTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
calledSaveUserData = false;
|
||||
calledSaveUserData2 = false;
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUserData(UUID uuid, UserData data) throws SQLException {
|
||||
if (calledSaveUserData) {
|
||||
calledSaveUserData2 = true;
|
||||
}
|
||||
calledSaveUserData = true;
|
||||
|
||||
}
|
||||
};
|
||||
when(plan.getDB()).thenReturn(db);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleForSave_UserData() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.scheduleForSave(data);
|
||||
Thread.sleep(500);
|
||||
assertTrue(calledSaveUserData);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleForSave_Collection() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
UserData data2 = new UserData(MockUtils.mockPlayer2(), new DemographicsData());
|
||||
List<UserData> l = new ArrayList<>();
|
||||
l.add(data);
|
||||
l.add(data2);
|
||||
q.scheduleForSave(l);
|
||||
Thread.sleep(1000);
|
||||
assertTrue(calledSaveUserData);
|
||||
assertTrue(calledSaveUserData2);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testScheduleNewPlayer() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.scheduleNewPlayer(data);
|
||||
Thread.sleep(500);
|
||||
assertTrue(calledSaveUserData);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testContainsUUID() {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.stop();
|
||||
q.scheduleNewPlayer(data);
|
||||
assertTrue(q.containsUUID(data.getUuid()));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Ignore @Test
|
||||
public void testStop() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
q.stop();
|
||||
Thread.sleep(2000);
|
||||
q.scheduleNewPlayer(data);
|
||||
assertTrue(!calledSaveUserData);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.ChatHandling;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class ChatHandlingTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ChatHandlingTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessChatInfoAddedNickname() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
String expected = "TestNicknameChatHandling";
|
||||
ChatHandling.processChatInfo(data, expected, "");
|
||||
assertTrue("Didn't add nickname", data.getNicknames().contains(expected));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformationMale() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("I'm male", data);
|
||||
assertTrue("Didn't update gender", data.getDemData().getGender() == Gender.MALE);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformationNoInfo() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("I'm serious", data);
|
||||
assertTrue("Updated gender", data.getDemData().getGender() == Gender.UNKNOWN);
|
||||
assertTrue("Updated age", data.getDemData().getAge() == -1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformation100Age() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("I'm 100", data);
|
||||
assertTrue("Updated age", data.getDemData().getAge() == -1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformationNoTrigger() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("18 male", data);
|
||||
assertTrue("Updated gender", data.getDemData().getGender() == Gender.UNKNOWN);
|
||||
assertTrue("Updated age", data.getDemData().getAge() == -1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformationIgnore() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("im sure you're male", data);
|
||||
assertTrue("Updated gender", data.getDemData().getGender() == Gender.UNKNOWN);
|
||||
assertTrue("Updated age", data.getDemData().getAge() == -1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateDemographicInformationAge() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
ChatHandling.updateDemographicInformation("im 18", data);
|
||||
assertTrue("Didn't update age", data.getDemData().getAge() == 18);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,176 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.GamemodeHandling;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class GamemodeHandlingTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public GamemodeHandlingTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGamemodeInfo() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.CREATIVE);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeHandling.processGamemodeInfo(data, time, GameMode.SURVIVAL);
|
||||
Long result = data.getGmTimes().get(GameMode.CREATIVE);
|
||||
assertTrue("Gamemode time was "+result, result == 1050L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 1100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 2000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 1100L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGamemodeInfoSameGM() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.SURVIVAL);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeHandling.processGamemodeInfo(data, time, GameMode.SURVIVAL);
|
||||
Long result = data.getGmTimes().get(GameMode.SURVIVAL);
|
||||
assertTrue("Gamemode time was "+result, result == 1050L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 1100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 2000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 1100L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGamemodeInfoNullNewGM() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.SURVIVAL);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeHandling.processGamemodeInfo(data, time, null);
|
||||
Long result = data.getGmTimes().get(GameMode.SURVIVAL);
|
||||
assertTrue("Gamemode time was "+result, result == 0L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 1000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 50L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGamemodeInfoNullOldGM() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(null);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeHandling.processGamemodeInfo(data, time, GameMode.SURVIVAL);
|
||||
Long result = data.getGmTimes().get(GameMode.SURVIVAL);
|
||||
assertTrue("Gamemode time was "+result, result == 1050L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 1100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 2000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 1100L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGamemodeInfoNullGMTimes() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setGmTimes(null);
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(null);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeHandling.processGamemodeInfo(data, time, GameMode.SURVIVAL);
|
||||
Long result = data.getGmTimes().get(GameMode.SURVIVAL);
|
||||
assertTrue("Gamemode time was "+result, result == 1050L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 1100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 2000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 1100L);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.KillData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.KillHandling;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import static org.powermock.api.mockito.PowerMockito.when;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class KillHandlingTest {
|
||||
|
||||
private Database db;
|
||||
private Plan plan;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public KillHandlingTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
plan = t.getPlanMock();
|
||||
db = new SQLiteDB(plan, "debug" + new Date().getTime()) {
|
||||
@Override
|
||||
public void startConnectionPingTask(Plan plugin) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUserId(String uuid) {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
when(plan.getDB()).thenReturn(db);
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws SQLException
|
||||
*/
|
||||
@After
|
||||
public void tearDown() throws SQLException {
|
||||
db.close();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws SQLException
|
||||
*/
|
||||
@Test
|
||||
public void testProcessKillInfoPlayer() throws SQLException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
Player dead = MockUtils.mockPlayer2();
|
||||
// db.saveUserData(dead.getUniqueId(), new UserData(dead, new DemographicsData()));
|
||||
KillHandling.processKillInfo(data, 10L, dead, "TestWeapon");
|
||||
KillData expected = new KillData(dead.getUniqueId(), 1, "TestWeapon", 10L);
|
||||
assertTrue("Didn't add the kill", data.getPlayerKills().size() == 1);
|
||||
KillData result = data.getPlayerKills().get(0);
|
||||
assertEquals(expected.getDate(), result.getDate());
|
||||
assertEquals(expected.getVictim(), result.getVictim());
|
||||
assertEquals(expected.getVictimUserID(), result.getVictimUserID());
|
||||
assertEquals(expected.getWeapon(), result.getWeapon());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws SQLException
|
||||
* @throws IOException
|
||||
*/
|
||||
@Ignore
|
||||
@Test
|
||||
public void testProcessKillInfoException() throws SQLException, IOException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
Player dead = MockUtils.mockPlayer2();
|
||||
KillHandling.processKillInfo(data, 10L, dead, "TestWeapon");
|
||||
assertTrue("Added the kill", data.getPlayerKills().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws SQLException
|
||||
*/
|
||||
@Test
|
||||
public void testProcessKillInfoMob() throws SQLException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
int mobKills = data.getMobKills();
|
||||
int exp = mobKills + 1;
|
||||
KillHandling.processKillInfo(data, 10L, null, "TestWeapon");
|
||||
int result = data.getMobKills();
|
||||
assertEquals(exp, result);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LoginHandling;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class LoginHandlingTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public LoginHandlingTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws UnknownHostException
|
||||
*/
|
||||
@Test
|
||||
public void testProcessLoginInfo() throws UnknownHostException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.updateBanned(false);
|
||||
InetAddress ip = InetAddress.getByName("137.19.188.146");
|
||||
long time = 10L;
|
||||
int loginTimes = data.getLoginTimes();
|
||||
String nick = "TestProcessLoginInfo";
|
||||
LoginHandling.processLoginInfo(data, time, ip, true, nick, 1);
|
||||
assertTrue("Not Banned", data.isBanned());
|
||||
assertTrue("LastPlayed wrong", data.getLastPlayed() == time);
|
||||
assertTrue("Ip not added", data.getIps().contains(ip));
|
||||
assertTrue("Logintimes not +1", data.getLoginTimes() == loginTimes + 1);
|
||||
assertTrue("Nick not added", data.getNicknames().contains(nick));
|
||||
assertTrue("Nick not last nick", data.getLastNick().equals(nick));
|
||||
String geo = data.getDemData().getGeoLocation();
|
||||
assertTrue("Wrong location " + geo, geo.equals("United States"));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws UnknownHostException
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateGeolocation() throws UnknownHostException {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
InetAddress ip = InetAddress.getByName("137.19.188.146");
|
||||
LoginHandling.updateGeolocation(ip, data);
|
||||
String result = data.getDemData().getGeoLocation();
|
||||
assertTrue("Wrong location " + result, result.equals("United States"));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.LogoutHandling;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class LogoutHandlingTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public LogoutHandlingTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessLogoutInfo() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setLastPlayed(10L);
|
||||
data.updateBanned(false);
|
||||
long time = 20L;
|
||||
LogoutHandling.processLogoutInfo(data, time, true);
|
||||
assertTrue("Last Played wrong", data.getLastPlayed() == 20L);
|
||||
assertTrue("Playtime wrong", data.getPlayTime() == 10L);
|
||||
assertTrue("Banned wrong", data.isBanned());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.api.Gender;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.ChatInfo;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class ChatInfoTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public ChatInfoTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetNickname() {
|
||||
ChatInfo i = new ChatInfo(null, "Test", "Message");
|
||||
assertTrue("Nick get wrong", i.getNickname().equals("Test"));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetMessage() {
|
||||
ChatInfo i = new ChatInfo(null, "Test", "Message");
|
||||
assertTrue("Message get wrong", i.getMessage().equals("Message"));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessNick() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
String expected = "TestNicknameChatInfo";
|
||||
ChatInfo i = new ChatInfo(data.getUuid(), expected, "im 18 male");
|
||||
assertTrue("Didn't succeed", i.process(data));
|
||||
assertTrue("Didn't add nickname", data.getNicknames().contains(expected));
|
||||
assertTrue("Didn't update gender", data.getDemData().getGender() == Gender.MALE);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessAge() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
String expected = "TestNicknameChatInfo";
|
||||
ChatInfo i = new ChatInfo(data.getUuid(), expected, "im 18 male");
|
||||
assertTrue("Didn't succeed", i.process(data));
|
||||
assertTrue("Didn't update age", data.getDemData().getAge() == 18);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessGender() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
String expected = "TestNicknameChatInfo";
|
||||
ChatInfo i = new ChatInfo(data.getUuid(), expected, "im 18 male");
|
||||
assertTrue("Didn't succeed", i.process(data));
|
||||
assertTrue("Didn't update gender", data.getDemData().getGender() == Gender.MALE);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessWrongUUID() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
String expected = "TestNicknameChatInfo";
|
||||
ChatInfo i = new ChatInfo(null, expected, "im 18 male");
|
||||
assertTrue("Succeeded.", !i.process(data));
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.DeathInfo;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class DeathInfoTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DeathInfoTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcess() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
DeathInfo i = new DeathInfo(data.getUuid());
|
||||
assertTrue(i.process(data));
|
||||
assertEquals(1, data.getDeaths());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessWrongUUID() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
DeathInfo i = new DeathInfo(null);
|
||||
assertTrue(!i.process(data));
|
||||
assertEquals(0, data.getDeaths());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,130 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.DemographicsData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.GamemodeInfo;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.easymock.EasyMock;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.api.easymock.PowerMock;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import test.java.utils.MockUtils;
|
||||
import test.java.utils.TestInit;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest(JavaPlugin.class)
|
||||
public class GamemodeInfoTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public GamemodeInfoTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestInit t = new TestInit();
|
||||
assertTrue("Not set up", t.setUp());
|
||||
Plan plan = t.getPlanMock();
|
||||
PowerMock.mockStatic(JavaPlugin.class);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcess() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.CREATIVE);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeInfo i = new GamemodeInfo(data.getUuid(), time, GameMode.SURVIVAL);
|
||||
assertTrue(i.process(data));
|
||||
Long result = data.getGmTimes().get(GameMode.CREATIVE);
|
||||
assertTrue("Gamemode time was "+result, result == 1050L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 1100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 2000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.SURVIVAL);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 1100L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessWrongUUID() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.CREATIVE);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeInfo i = new GamemodeInfo(null, time, GameMode.SURVIVAL);
|
||||
assertTrue(!i.process(data));
|
||||
Long result = data.getGmTimes().get(GameMode.CREATIVE);
|
||||
assertTrue("Gamemode time was "+result, result == 0L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 1000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.CREATIVE);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 50L);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testProcessNullGM() {
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
data.setPlayTime(100L);
|
||||
data.setLastGamemode(GameMode.CREATIVE);
|
||||
data.setLastGmSwapTime(50L);
|
||||
data.setLastPlayed(1000L);
|
||||
long time = 2000L;
|
||||
GamemodeInfo i = new GamemodeInfo(data.getUuid(), time, null);
|
||||
assertTrue(!i.process(data));
|
||||
Long result = data.getGmTimes().get(GameMode.CREATIVE);
|
||||
assertTrue("Gamemode time was "+result, result == 0L);
|
||||
result = data.getPlayTime();
|
||||
assertTrue("Playtime was"+result, result == 100L);
|
||||
result = data.getLastPlayed();
|
||||
assertTrue("Last Played was"+result, result == 1000L);
|
||||
GameMode lastGM = data.getLastGamemode();
|
||||
assertTrue("Last gm not Survival", lastGM == GameMode.CREATIVE);
|
||||
result = data.getLastGmSwapTime();
|
||||
assertTrue("Last swaptime was "+result, result == 50L);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package test.java.main.java.com.djrapitops.plan.data.handling.info;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class HandlingInfoTest {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public HandlingInfoTest() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetUuid() {
|
||||
UUID uuid = UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db");
|
||||
HandlingInfo i = new HandlingInfo(uuid, InfoType.CHAT, 10L ) {
|
||||
@Override
|
||||
public boolean process(UserData data) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
assertEquals(uuid,i.getUuid());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetType() {
|
||||
UUID uuid = UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db");
|
||||
HandlingInfo i = new HandlingInfo(uuid, InfoType.CHAT, 10L ) {
|
||||
@Override
|
||||
public boolean process(UserData data) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
assertEquals(InfoType.CHAT,i.getType());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testGetTime() {
|
||||
UUID uuid = UUID.fromString("45b0dfdb-f71d-4cf3-8c21-27c9d4c651db");
|
||||
HandlingInfo i = new HandlingInfo(uuid, InfoType.CHAT, 10L ) {
|
||||
@Override
|
||||
public boolean process(UserData data) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
assertEquals(10L,i.getTime());
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user