mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-28 20:17:42 +01:00
Fixed some method calls
This commit is contained in:
parent
0aed988e22
commit
902c7c2470
@ -19,7 +19,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan;
|
package com.djrapitops.plan;
|
||||||
|
|
||||||
import com.djrapitops.plan.api.API;
|
|
||||||
import com.djrapitops.plan.api.exceptions.EnableException;
|
import com.djrapitops.plan.api.exceptions.EnableException;
|
||||||
import com.djrapitops.plan.command.PlanCommand;
|
import com.djrapitops.plan.command.PlanCommand;
|
||||||
import com.djrapitops.plan.data.plugin.HookHandler;
|
import com.djrapitops.plan.data.plugin.HookHandler;
|
||||||
@ -31,11 +30,10 @@ import com.djrapitops.plan.system.BukkitSystem;
|
|||||||
import com.djrapitops.plan.system.database.DBSystem;
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.system.file.FileSystem;
|
import com.djrapitops.plan.system.file.FileSystem;
|
||||||
import com.djrapitops.plan.system.processing.ProcessingQueue;
|
|
||||||
import com.djrapitops.plan.system.processing.processors.Processor;
|
|
||||||
import com.djrapitops.plan.system.processing.processors.importing.importers.OfflinePlayerImporter;
|
import com.djrapitops.plan.system.processing.processors.importing.importers.OfflinePlayerImporter;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
import com.djrapitops.plan.system.settings.config.ConfigSystem;
|
import com.djrapitops.plan.system.settings.config.ConfigSystem;
|
||||||
|
import com.djrapitops.plan.system.tasks.TaskSystem;
|
||||||
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
||||||
import com.djrapitops.plan.system.webserver.WebServer;
|
import com.djrapitops.plan.system.webserver.WebServer;
|
||||||
import com.djrapitops.plan.system.webserver.WebServerSystem;
|
import com.djrapitops.plan.system.webserver.WebServerSystem;
|
||||||
@ -47,25 +45,21 @@ import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
|||||||
import com.djrapitops.plan.systems.info.ImporterManager;
|
import com.djrapitops.plan.systems.info.ImporterManager;
|
||||||
import com.djrapitops.plan.systems.info.InformationManager;
|
import com.djrapitops.plan.systems.info.InformationManager;
|
||||||
import com.djrapitops.plan.systems.info.server.BukkitServerInfoManager;
|
import com.djrapitops.plan.systems.info.server.BukkitServerInfoManager;
|
||||||
import com.djrapitops.plan.system.tasks.TaskSystem;
|
|
||||||
import com.djrapitops.plan.utilities.file.export.HtmlExport;
|
import com.djrapitops.plan.utilities.file.export.HtmlExport;
|
||||||
import com.djrapitops.plan.utilities.metrics.BStats;
|
import com.djrapitops.plan.utilities.metrics.BStats;
|
||||||
import com.djrapitops.plugin.BukkitPlugin;
|
import com.djrapitops.plugin.BukkitPlugin;
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
import com.djrapitops.plugin.api.Benchmark;
|
import com.djrapitops.plugin.api.Benchmark;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
|
||||||
import com.djrapitops.plugin.api.config.Config;
|
import com.djrapitops.plugin.api.config.Config;
|
||||||
import com.djrapitops.plugin.api.systems.TaskCenter;
|
import com.djrapitops.plugin.api.systems.TaskCenter;
|
||||||
import com.djrapitops.plugin.api.utility.log.DebugLog;
|
import com.djrapitops.plugin.api.utility.log.DebugLog;
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
import com.djrapitops.plugin.settings.ColorScheme;
|
import com.djrapitops.plugin.settings.ColorScheme;
|
||||||
import com.djrapitops.plugin.task.AbsRunnable;
|
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,11 +73,10 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
public class Plan extends BukkitPlugin implements PlanPlugin {
|
public class Plan extends BukkitPlugin implements PlanPlugin {
|
||||||
|
|
||||||
private API api;
|
private BukkitSystem system;
|
||||||
|
|
||||||
private Systems systems;
|
private Systems systems;
|
||||||
|
|
||||||
private ProcessingQueue processingQueue;
|
|
||||||
private HookHandler hookHandler; // Manages 3rd party data sources
|
private HookHandler hookHandler; // Manages 3rd party data sources
|
||||||
|
|
||||||
private BukkitInformationManager infoManager;
|
private BukkitInformationManager infoManager;
|
||||||
@ -91,22 +84,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
|
|
||||||
private ServerVariableHolder serverVariableHolder;
|
private ServerVariableHolder serverVariableHolder;
|
||||||
|
|
||||||
/**
|
|
||||||
* Used to get the PlanAPI. @see API
|
|
||||||
*
|
|
||||||
* @return API of the current instance of Plan.
|
|
||||||
* @throws IllegalStateException If onEnable method has not been called on
|
|
||||||
* Plan and the instance is null.
|
|
||||||
* @throws NoClassDefFoundError If Plan is not installed.
|
|
||||||
*/
|
|
||||||
public static API getPlanAPI() throws NoClassDefFoundError {
|
|
||||||
Plan instance = getInstance();
|
|
||||||
if (instance == null) {
|
|
||||||
throw new IllegalStateException("Plugin not enabled properly, Singleton instance is null.");
|
|
||||||
}
|
|
||||||
return instance.getApi();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to get the plugin-instance singleton.
|
* Used to get the plugin-instance singleton.
|
||||||
*
|
*
|
||||||
@ -162,7 +139,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
DBSystem.getInstance().enable();
|
DBSystem.getInstance().enable();
|
||||||
|
|
||||||
Benchmark.start("WebServer Initialization");
|
Benchmark.start("WebServer Initialization");
|
||||||
processingQueue = new ProcessingQueue();
|
|
||||||
|
|
||||||
serverInfoManager = new BukkitServerInfoManager(this);
|
serverInfoManager = new BukkitServerInfoManager(this);
|
||||||
infoManager = new BukkitInformationManager(this);
|
infoManager = new BukkitInformationManager(this);
|
||||||
@ -182,8 +158,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
|
|
||||||
TaskSystem.getInstance().enable();
|
TaskSystem.getInstance().enable();
|
||||||
|
|
||||||
this.api = new API(this);
|
|
||||||
|
|
||||||
boolean usingBungeeWebServer = infoManager.isUsingAnotherWebServer();
|
boolean usingBungeeWebServer = infoManager.isUsingAnotherWebServer();
|
||||||
boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
||||||
|
|
||||||
@ -234,25 +208,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
//Clears the page cache
|
//Clears the page cache
|
||||||
ResponseCache.clearCache();
|
ResponseCache.clearCache();
|
||||||
|
|
||||||
// Processes unprocessed processors
|
|
||||||
if (processingQueue != null) {
|
|
||||||
List<Processor> processors = processingQueue.stopAndReturnLeftovers();
|
|
||||||
if (!reloading) {
|
|
||||||
Log.info("Processing unprocessed processors. (" + processors.size() + ")"); // TODO Move to Locale
|
|
||||||
for (Processor processor : processors) {
|
|
||||||
processor.process();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
RunnableFactory.createNew("Re-Add processors", new AbsRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
addToProcessQueue(processors.toArray(new Processor[processors.size()]));
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}).runTaskLaterAsynchronously(TimeAmount.SECOND.ticks() * 5L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
systems.close();
|
systems.close();
|
||||||
|
|
||||||
Log.info(Locale.get(Msg.DISABLED).toString());
|
Log.info(Locale.get(Msg.DISABLED).toString());
|
||||||
@ -329,29 +284,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
return serverInfoManager;
|
return serverInfoManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProcessingQueue getProcessingQueue() {
|
|
||||||
return processingQueue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addToProcessQueue(Processor... processors) {
|
|
||||||
if (!reloading) {
|
|
||||||
for (Processor processor : processors) {
|
|
||||||
if (processor == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
processingQueue.addToQueue(processor);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
RunnableFactory.createNew("Re-Add processors", new AbsRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
addToProcessQueue(processors);
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}).runTaskLaterAsynchronously(TimeAmount.SECOND.ticks() * 5L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Config getMainConfig() {
|
public Config getMainConfig() {
|
||||||
return ConfigSystem.getInstance().getConfig();
|
return ConfigSystem.getInstance().getConfig();
|
||||||
@ -402,20 +334,6 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
|
|||||||
throw new IllegalStateException("This method should be used on this plugin.");
|
throw new IllegalStateException("This method should be used on this plugin.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method for getting the API.
|
|
||||||
* <p>
|
|
||||||
* Created due to necessity for testing, but can be used.
|
|
||||||
* For direct API getter use {@code Plan.getPlanAPI()}.
|
|
||||||
* <p>
|
|
||||||
* If Plan is reloaded a new API instance is created.
|
|
||||||
*
|
|
||||||
* @return Plan API instance.
|
|
||||||
*/
|
|
||||||
public API getApi() {
|
|
||||||
return api;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Systems getSystems() {
|
public Systems getSystems() {
|
||||||
return systems;
|
return systems;
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,6 @@ import com.djrapitops.plan.system.BungeeSystem;
|
|||||||
import com.djrapitops.plan.system.database.DBSystem;
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.system.file.FileSystem;
|
import com.djrapitops.plan.system.file.FileSystem;
|
||||||
import com.djrapitops.plan.system.processing.ProcessingQueue;
|
|
||||||
import com.djrapitops.plan.system.processing.processors.Processor;
|
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
import com.djrapitops.plan.system.settings.config.ConfigSystem;
|
import com.djrapitops.plan.system.settings.config.ConfigSystem;
|
||||||
import com.djrapitops.plan.system.tasks.TaskSystem;
|
import com.djrapitops.plan.system.tasks.TaskSystem;
|
||||||
@ -52,8 +50,7 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
private BungeeInformationManager infoManager;
|
private BungeeInformationManager infoManager;
|
||||||
private ServerVariableHolder variableHolder;
|
private ServerVariableHolder variableHolder;
|
||||||
|
|
||||||
private ProcessingQueue processingQueue;
|
@Deprecated
|
||||||
|
|
||||||
private boolean setupAllowed = false;
|
private boolean setupAllowed = false;
|
||||||
private BungeeSystem system;
|
private BungeeSystem system;
|
||||||
|
|
||||||
@ -93,8 +90,6 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
|
|
||||||
TaskSystem.getInstance().enable();
|
TaskSystem.getInstance().enable();
|
||||||
|
|
||||||
processingQueue = new ProcessingQueue();
|
|
||||||
|
|
||||||
Log.logDebug("Enable", "WebServer Initialization");
|
Log.logDebug("Enable", "WebServer Initialization");
|
||||||
Log.info(Locale.get(Msg.ENABLED).toString());
|
Log.info(Locale.get(Msg.ENABLED).toString());
|
||||||
if (Settings.ANALYSIS_EXPORT.isTrue()) {
|
if (Settings.ANALYSIS_EXPORT.isTrue()) {
|
||||||
@ -113,13 +108,6 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
if (processingQueue != null) {
|
|
||||||
try {
|
|
||||||
processingQueue.stop();
|
|
||||||
} catch (IllegalArgumentException ignored) {
|
|
||||||
/*ignored*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
systems.close();
|
systems.close();
|
||||||
Log.info(Locale.get(Msg.DISABLED).toString());
|
Log.info(Locale.get(Msg.DISABLED).toString());
|
||||||
Benchmark.pluginDisabled(PlanBungee.class);
|
Benchmark.pluginDisabled(PlanBungee.class);
|
||||||
@ -134,7 +122,6 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReload() {
|
public void onReload() {
|
||||||
ConfigSystem.reload();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -158,19 +145,6 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
return WebServerSystem.getInstance().getWebServer();
|
return WebServerSystem.getInstance().getWebServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ProcessingQueue getProcessingQueue() {
|
|
||||||
return processingQueue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addToProcessQueue(Processor... processors) {
|
|
||||||
for (Processor processor : processors) {
|
|
||||||
processingQueue.addToQueue(processor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InputStream getResource(String resource) {
|
public InputStream getResource(String resource) {
|
||||||
return getResourceAsStream(resource);
|
return getResourceAsStream(resource);
|
||||||
@ -215,4 +189,9 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
|
|||||||
public BungeeSystem getSystem() {
|
public BungeeSystem getSystem() {
|
||||||
return system;
|
return system;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isReloading() {
|
||||||
|
return reloading;
|
||||||
|
}
|
||||||
}
|
}
|
@ -28,27 +28,34 @@ public interface PlanPlugin extends IPlugin {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
Database getDB();
|
Database getDB();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
ServerVariableHolder getVariable();
|
ServerVariableHolder getVariable();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
UUID getServerUuid();
|
UUID getServerUuid();
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
InformationManager getInfoManager();
|
InformationManager getInfoManager();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
WebServer getWebServer();
|
WebServer getWebServer();
|
||||||
|
|
||||||
File getDataFolder();
|
File getDataFolder();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
ProcessingQueue getProcessingQueue();
|
ProcessingQueue getProcessingQueue();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
void addToProcessQueue(Processor... processors);
|
void addToProcessQueue(Processor... processors);
|
||||||
|
|
||||||
InputStream getResource(String resource);
|
InputStream getResource(String resource);
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
Config getMainConfig();
|
Config getMainConfig();
|
||||||
|
|
||||||
ColorScheme getColorScheme();
|
ColorScheme getColorScheme();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
Systems getSystems();
|
Systems getSystems();
|
||||||
|
|
||||||
boolean isReloading();
|
boolean isReloading();
|
||||||
|
@ -21,9 +21,15 @@ public interface PlanAPI {
|
|||||||
throw new IllegalAccessError("Not yet implemented"); // TODO
|
throw new IllegalAccessError("Not yet implemented"); // TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerPluginData(PluginData pluginData);
|
void addPluginDataSource(PluginData pluginData);
|
||||||
|
|
||||||
Map<UUID, String> getKnownUsernames();
|
String getPlayerInspectPageLink(String playerName);
|
||||||
|
|
||||||
|
String getPlayerName(UUID uuid);
|
||||||
|
|
||||||
|
UUID playerNameToUUID(String playerName);
|
||||||
|
|
||||||
|
Map<UUID, String> getKnownPlayerNames();
|
||||||
|
|
||||||
FetchOperations fetchFromPlanDB();
|
FetchOperations fetchFromPlanDB();
|
||||||
}
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.djrapitops.plan.api.exceptions;
|
||||||
|
|
||||||
|
public class PassEncryptException extends Exception {
|
||||||
|
|
||||||
|
public PassEncryptException() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public PassEncryptException(String s) {
|
||||||
|
super(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PassEncryptException(String s, Throwable throwable) {
|
||||||
|
super(s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PassEncryptException(Throwable throwable) {
|
||||||
|
super(throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PassEncryptException(String s, Throwable throwable, boolean b, boolean b1) {
|
||||||
|
super(s, throwable, b, b1);
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,6 @@ package com.djrapitops.plan.data.plugin;
|
|||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
import com.djrapitops.pluginbridge.plan.Bridge;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -29,7 +28,7 @@ public class HookHandler {
|
|||||||
additionalDataSources = new ArrayList<>();
|
additionalDataSources = new ArrayList<>();
|
||||||
configHandler = new PluginsConfigSection();
|
configHandler = new PluginsConfigSection();
|
||||||
try {
|
try {
|
||||||
Bridge.hook(this);
|
// Bridge.hook(this);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.toLog(this.getClass().getName(), e);
|
Log.toLog(this.getClass().getName(), e);
|
||||||
Log.error("Plan Plugin Bridge not included in the plugin jar.");
|
Log.error("Plan Plugin Bridge not included in the plugin jar.");
|
||||||
|
@ -3,10 +3,7 @@ package com.djrapitops.plan.system.database.databases;
|
|||||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||||
import com.djrapitops.plan.system.database.DBSystem;
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.BackupOperations;
|
import com.djrapitops.plan.system.database.databases.operation.*;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
|
||||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
|
||||||
import com.djrapitops.plan.system.database.databases.operation.RemoveOperations;
|
|
||||||
import com.djrapitops.plan.utilities.NullCheck;
|
import com.djrapitops.plan.utilities.NullCheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,4 +59,8 @@ public abstract class Database {
|
|||||||
public boolean isOpen() {
|
public boolean isOpen() {
|
||||||
return open;
|
return open;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract SearchOperations search();
|
||||||
|
|
||||||
|
public abstract CountOperations count();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.djrapitops.plan.system.database.databases.operation;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface CountOperations {
|
||||||
|
|
||||||
|
int serverPlayerCount(UUID server) throws DBException;
|
||||||
|
|
||||||
|
}
|
@ -3,17 +3,23 @@ package com.djrapitops.plan.system.database.databases.operation;
|
|||||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.data.PlayerProfile;
|
import com.djrapitops.plan.data.PlayerProfile;
|
||||||
import com.djrapitops.plan.data.ServerProfile;
|
import com.djrapitops.plan.data.ServerProfile;
|
||||||
|
import com.djrapitops.plan.data.WebUser;
|
||||||
|
import com.djrapitops.plan.data.container.TPS;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public interface FetchOperations {
|
public interface FetchOperations {
|
||||||
|
|
||||||
|
// Profiles
|
||||||
|
|
||||||
ServerProfile getServerProfile(UUID serverUUID) throws DBException;
|
ServerProfile getServerProfile(UUID serverUUID) throws DBException;
|
||||||
|
|
||||||
List<PlayerProfile> getPlayers(UUID serverUUID) throws DBException;
|
List<PlayerProfile> getPlayers(UUID serverUUID) throws DBException;
|
||||||
|
|
||||||
PlayerProfile getPlayerProfile(UUID uuid) throws DBException;
|
PlayerProfile getPlayerProfile(UUID uuid) throws DBException;
|
||||||
|
|
||||||
|
// UUIDs
|
||||||
|
|
||||||
Set<UUID> getSavedUUIDs() throws DBException;
|
Set<UUID> getSavedUUIDs() throws DBException;
|
||||||
|
|
||||||
Set<UUID> getSavedUUIDs(UUID server) throws DBException;
|
Set<UUID> getSavedUUIDs(UUID server) throws DBException;
|
||||||
@ -21,4 +27,14 @@ public interface FetchOperations {
|
|||||||
Map<UUID, String> getServerNames() throws DBException;
|
Map<UUID, String> getServerNames() throws DBException;
|
||||||
|
|
||||||
Optional<UUID> getServerUUID(String serverName) throws DBException;
|
Optional<UUID> getServerUUID(String serverName) throws DBException;
|
||||||
|
|
||||||
|
UUID getUuidOf(String playerName) throws DBException;
|
||||||
|
|
||||||
|
// WebUsers
|
||||||
|
|
||||||
|
WebUser getWebUser(String username) throws DBException;
|
||||||
|
|
||||||
|
// Raw Data
|
||||||
|
|
||||||
|
List<TPS> getTPSData(UUID serverUUID) throws DBException;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.djrapitops.plan.system.database.databases.operation;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface SearchOperations {
|
||||||
|
|
||||||
|
List<String> matchingNames(String search) throws DBException;
|
||||||
|
|
||||||
|
}
|
@ -57,8 +57,12 @@ public class MySQLDB extends SQLDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws SQLException {
|
public void close() {
|
||||||
dataSource.close();
|
try {
|
||||||
|
dataSource.close();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass(), e);
|
||||||
|
}
|
||||||
super.close();
|
super.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,8 @@ package com.djrapitops.plan.system.database.databases.sql;
|
|||||||
|
|
||||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.BackupOperations;
|
import com.djrapitops.plan.system.database.databases.operation.*;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
import com.djrapitops.plan.system.database.databases.sql.operation.*;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
|
||||||
import com.djrapitops.plan.system.database.databases.operation.RemoveOperations;
|
|
||||||
import com.djrapitops.plan.system.database.databases.sql.operation.SQLBackupOps;
|
|
||||||
import com.djrapitops.plan.system.database.databases.sql.operation.SQLCheckOps;
|
|
||||||
import com.djrapitops.plan.system.database.databases.sql.operation.SQLFetchOps;
|
|
||||||
import com.djrapitops.plan.system.database.databases.sql.operation.SQLRemoveOps;
|
|
||||||
import com.djrapitops.plan.system.database.databases.sql.tables.*;
|
import com.djrapitops.plan.system.database.databases.sql.tables.*;
|
||||||
import com.djrapitops.plan.system.database.databases.sql.tables.move.Version8TransferTable;
|
import com.djrapitops.plan.system.database.databases.sql.tables.move.Version8TransferTable;
|
||||||
import com.djrapitops.plugin.api.Benchmark;
|
import com.djrapitops.plugin.api.Benchmark;
|
||||||
@ -50,6 +44,8 @@ public abstract class SQLDB extends Database {
|
|||||||
private final SQLCheckOps checkOps;
|
private final SQLCheckOps checkOps;
|
||||||
private final SQLFetchOps fetchOps;
|
private final SQLFetchOps fetchOps;
|
||||||
private final SQLRemoveOps removeOps;
|
private final SQLRemoveOps removeOps;
|
||||||
|
private final SQLSearchOps searchOps;
|
||||||
|
private final SQLCountOps countOps;
|
||||||
|
|
||||||
private final boolean usingMySQL;
|
private final boolean usingMySQL;
|
||||||
private boolean open = false;
|
private boolean open = false;
|
||||||
@ -79,6 +75,8 @@ public abstract class SQLDB extends Database {
|
|||||||
checkOps = new SQLCheckOps(this);
|
checkOps = new SQLCheckOps(this);
|
||||||
fetchOps = new SQLFetchOps(this);
|
fetchOps = new SQLFetchOps(this);
|
||||||
removeOps = new SQLRemoveOps(this);
|
removeOps = new SQLRemoveOps(this);
|
||||||
|
countOps = new SQLCountOps(this);
|
||||||
|
searchOps = new SQLSearchOps(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -151,7 +149,7 @@ public abstract class SQLDB extends Database {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
new Version8TransferTable(db, isUsingMySQL()).alterTablesToV10();
|
new Version8TransferTable(db).alterTablesToV10();
|
||||||
} catch (DBInitException | SQLException e) {
|
} catch (DBInitException | SQLException e) {
|
||||||
Log.toLog(this.getClass().getName(), e);
|
Log.toLog(this.getClass().getName(), e);
|
||||||
}
|
}
|
||||||
@ -368,4 +366,14 @@ public abstract class SQLDB extends Database {
|
|||||||
public RemoveOperations remove() {
|
public RemoveOperations remove() {
|
||||||
return removeOps;
|
return removeOps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchOperations search() {
|
||||||
|
return searchOps;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CountOperations count() {
|
||||||
|
return countOps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.djrapitops.plan.system.database.databases.sql.operation;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
|
import com.djrapitops.plan.system.database.databases.operation.CountOperations;
|
||||||
|
import com.djrapitops.plan.system.database.databases.sql.ErrorUtil;
|
||||||
|
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class SQLCountOps extends SQLOps implements CountOperations {
|
||||||
|
|
||||||
|
public SQLCountOps(SQLDB db) {
|
||||||
|
super(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int serverPlayerCount(UUID server) throws DBException {
|
||||||
|
try {
|
||||||
|
return userInfoTable.getServerUserCount(server);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package com.djrapitops.plan.system.database.databases.sql.operation;
|
|||||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.data.PlayerProfile;
|
import com.djrapitops.plan.data.PlayerProfile;
|
||||||
import com.djrapitops.plan.data.ServerProfile;
|
import com.djrapitops.plan.data.ServerProfile;
|
||||||
|
import com.djrapitops.plan.data.WebUser;
|
||||||
import com.djrapitops.plan.data.container.*;
|
import com.djrapitops.plan.data.container.*;
|
||||||
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
|
||||||
import com.djrapitops.plan.system.database.databases.sql.ErrorUtil;
|
import com.djrapitops.plan.system.database.databases.sql.ErrorUtil;
|
||||||
@ -171,4 +172,33 @@ public class SQLFetchOps extends SQLOps implements FetchOperations {
|
|||||||
throw ErrorUtil.getExceptionFor(e);
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UUID getUuidOf(String playerName) throws DBException {
|
||||||
|
try {
|
||||||
|
return usersTable.getUuidOf(playerName);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WebUser getWebUser(String username) throws DBException {
|
||||||
|
try {
|
||||||
|
return securityTable.getWebUser(username);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TPS> getTPSData(UUID serverUUID) throws DBException {
|
||||||
|
try {
|
||||||
|
return tpsTable.getTPSData(serverUUID);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.djrapitops.plan.system.database.databases.sql.operation;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
|
import com.djrapitops.plan.system.database.databases.operation.SearchOperations;
|
||||||
|
import com.djrapitops.plan.system.database.databases.sql.ErrorUtil;
|
||||||
|
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SQLSearchOps extends SQLOps implements SearchOperations {
|
||||||
|
|
||||||
|
public SQLSearchOps(SQLDB db) {
|
||||||
|
super(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> matchingNames(String search) throws DBException {
|
||||||
|
try {
|
||||||
|
return usersTable.getMatchingNames(search);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw ErrorUtil.getExceptionFor(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -16,7 +16,6 @@ import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
|||||||
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
import com.djrapitops.plan.system.database.databases.sql.statements.Sql;
|
||||||
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
import com.djrapitops.plan.system.database.databases.sql.statements.TableSqlParser;
|
||||||
import com.djrapitops.plan.system.database.databases.sql.statements.Update;
|
import com.djrapitops.plan.system.database.databases.sql.statements.Update;
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
import com.djrapitops.plugin.utilities.Verify;
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
@ -316,31 +315,26 @@ public class UserInfoTable extends UserIDTable {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getServerUserCount(UUID serverUUID) {
|
public int getServerUserCount(UUID serverUUID) throws SQLException {
|
||||||
try {
|
String sql = "SELECT " +
|
||||||
String sql = "SELECT " +
|
" COUNT(" + columnRegistered + ") as c" +
|
||||||
" COUNT(" + columnRegistered + ") as c" +
|
" FROM " + tableName +
|
||||||
" FROM " + tableName +
|
" WHERE " + columnServerID + "=" + serverTable.statementSelectServerID;
|
||||||
" WHERE " + columnServerID + "=" + serverTable.statementSelectServerID;
|
|
||||||
|
|
||||||
return query(new QueryStatement<Integer>(sql, 20000) {
|
return query(new QueryAllStatement<Integer>(sql, 20000) {
|
||||||
@Override
|
@Override
|
||||||
public void prepare(PreparedStatement statement) throws SQLException {
|
public void prepare(PreparedStatement statement) throws SQLException {
|
||||||
statement.setString(1, serverUUID.toString());
|
statement.setString(1, serverUUID.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer processResults(ResultSet set) throws SQLException {
|
public Integer processResults(ResultSet set) throws SQLException {
|
||||||
if (set.next()) {
|
if (set.next()) {
|
||||||
return set.getInt("c");
|
return set.getInt("c");
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
});
|
return 0;
|
||||||
} catch (SQLException e) {
|
}
|
||||||
Log.toLog(this.getClass().getName(), e);
|
});
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO improve performance of this method.
|
// TODO improve performance of this method.
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
public class Insert extends SqlParser {
|
|
||||||
|
|
||||||
public Insert(String table) {
|
|
||||||
super("INSERT INTO " + table);
|
|
||||||
addSpace();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String values(String table, String... columns) {
|
|
||||||
Insert parser = new Insert(table);
|
|
||||||
parser.append("(");
|
|
||||||
int size = columns.length;
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
if (size > 1 && i > 0) {
|
|
||||||
parser.append(", ");
|
|
||||||
}
|
|
||||||
parser.append(columns[i]);
|
|
||||||
}
|
|
||||||
parser.append(") VALUES (");
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
if (size > 1 && i > 0) {
|
|
||||||
parser.append(", ");
|
|
||||||
}
|
|
||||||
parser.append("?");
|
|
||||||
}
|
|
||||||
parser.append(")");
|
|
||||||
return parser.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
public class Select extends WhereParser {
|
|
||||||
|
|
||||||
public Select(String start) {
|
|
||||||
super(start);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Select from(String table, String... columns) {
|
|
||||||
Select parser = new Select("SELECT ");
|
|
||||||
int size = columns.length;
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
if (size > 1 && i > 0) {
|
|
||||||
parser.append(", ");
|
|
||||||
}
|
|
||||||
parser.append(columns[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
parser.append(" FROM ").append(table);
|
|
||||||
return parser;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Select all(String table) {
|
|
||||||
return new Select("SELECT * FROM " + table);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
public class Sql {
|
|
||||||
public static final String INT = "integer";
|
|
||||||
public static final String DOUBLE = "double";
|
|
||||||
public static final String LONG = "bigint";
|
|
||||||
public static final String BOOL = "boolean";
|
|
||||||
|
|
||||||
private Sql() {
|
|
||||||
throw new IllegalStateException("Variable Class");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String varchar(int length) {
|
|
||||||
return "varchar(" + length + ")";
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for parsing different SQL strings.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.7.0
|
|
||||||
*/
|
|
||||||
public class SqlParser {
|
|
||||||
|
|
||||||
private final StringBuilder s;
|
|
||||||
|
|
||||||
public SqlParser() {
|
|
||||||
s = new StringBuilder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SqlParser(String start) {
|
|
||||||
s = new StringBuilder(start);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SqlParser addSpace() {
|
|
||||||
s.append(" ");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SqlParser append(String string) {
|
|
||||||
s.append(string);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return s.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,118 +0,0 @@
|
|||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SqlParser Class for parsing table creation, removal and modification statements.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.7.0
|
|
||||||
*/
|
|
||||||
public class TableSqlParser extends SqlParser {
|
|
||||||
|
|
||||||
private int columns = 0;
|
|
||||||
|
|
||||||
public TableSqlParser(String start) {
|
|
||||||
super(start);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TableSqlParser createTable(String tableName) {
|
|
||||||
return new TableSqlParser("CREATE TABLE IF NOT EXISTS " + tableName + " (");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String dropTable(String tableName) {
|
|
||||||
return "DROP TABLE IF EXISTS " + tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used for ALTER TABLE sql statements.
|
|
||||||
*
|
|
||||||
* @param column column to modify
|
|
||||||
* @return TableSqlParser object
|
|
||||||
*/
|
|
||||||
public static TableSqlParser newColumn(String column, String type) {
|
|
||||||
return new TableSqlParser("").column(column, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser column(String column, String type) {
|
|
||||||
if (columns > 0) {
|
|
||||||
append(", ");
|
|
||||||
}
|
|
||||||
append(column).addSpace();
|
|
||||||
append(type);
|
|
||||||
|
|
||||||
columns++;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser foreignKey(String column, String refrencedTable, String referencedColumn) {
|
|
||||||
if (columns > 0) {
|
|
||||||
append(", ");
|
|
||||||
}
|
|
||||||
append("FOREIGN KEY(")
|
|
||||||
.append(column)
|
|
||||||
.append(") REFERENCES ")
|
|
||||||
.append(refrencedTable)
|
|
||||||
.append("(")
|
|
||||||
.append(referencedColumn)
|
|
||||||
.append(")");
|
|
||||||
columns++;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser notNull() {
|
|
||||||
addSpace();
|
|
||||||
append("NOT NULL");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser unique() {
|
|
||||||
addSpace();
|
|
||||||
append("UNIQUE");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser defaultValue(boolean value) {
|
|
||||||
return defaultValue(value ? "1" : "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser defaultValue(String value) {
|
|
||||||
addSpace();
|
|
||||||
append("DEFAULT ").append(value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser primaryKeyIDColumn(boolean mySQL, String column) {
|
|
||||||
if (columns > 0) {
|
|
||||||
append(", ");
|
|
||||||
}
|
|
||||||
append(column).addSpace();
|
|
||||||
append(Sql.INT).addSpace();
|
|
||||||
append((mySQL) ? "NOT NULL AUTO_INCREMENT" : "PRIMARY KEY");
|
|
||||||
columns++;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser primaryKey(boolean mySQL, String column) {
|
|
||||||
if (mySQL) {
|
|
||||||
if (columns > 0) {
|
|
||||||
append(", ");
|
|
||||||
}
|
|
||||||
append("PRIMARY KEY (").append(column).append(")");
|
|
||||||
columns++;
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TableSqlParser charSetUTF8(boolean mySQL) {
|
|
||||||
if (mySQL) {
|
|
||||||
addSpace();
|
|
||||||
append("CHARACTER SET utf8 COLLATE utf8mb4_general_ci");
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
append(")");
|
|
||||||
return super.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Licence is provided in the jar as license.yml also here:
|
|
||||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
|
||||||
*/
|
|
||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Fuzzlemann
|
|
||||||
*/
|
|
||||||
public class Update extends WhereParser {
|
|
||||||
|
|
||||||
public Update(String table) {
|
|
||||||
super("UPDATE " + table + " SET");
|
|
||||||
addSpace();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Update values(String table, String... values) {
|
|
||||||
Update parser = new Update(table);
|
|
||||||
|
|
||||||
int size = values.length;
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
if (size > 1 && i > 0) {
|
|
||||||
parser.append(", ");
|
|
||||||
}
|
|
||||||
parser.append(values[i] + "=?");
|
|
||||||
}
|
|
||||||
|
|
||||||
return parser;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Licence is provided in the jar as license.yml also here:
|
|
||||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
|
||||||
*/
|
|
||||||
package com.djrapitops.plan.system.database.sql;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Fuzzlemann
|
|
||||||
*/
|
|
||||||
public abstract class WhereParser extends SqlParser {
|
|
||||||
|
|
||||||
private int conditions = 0;
|
|
||||||
|
|
||||||
public WhereParser() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public WhereParser(String start) {
|
|
||||||
super(start);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WhereParser where(String... conditions) {
|
|
||||||
append(" WHERE ");
|
|
||||||
for (String condition : conditions) {
|
|
||||||
if (this.conditions > 0) {
|
|
||||||
append(" AND ");
|
|
||||||
}
|
|
||||||
append("(").append(condition).append(")");
|
|
||||||
this.conditions++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WhereParser and(String condition) {
|
|
||||||
append(" AND ");
|
|
||||||
append("(").append(condition).append(")");
|
|
||||||
this.conditions++;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WhereParser or(String condition) {
|
|
||||||
append(" OR ");
|
|
||||||
append("(").append(condition).append(")");
|
|
||||||
this.conditions++;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
@ -36,7 +36,7 @@ public class PlayerOnlineListener implements Listener {
|
|||||||
String name = player.getName();
|
String name = player.getName();
|
||||||
long now = MiscUtils.getTime();
|
long now = MiscUtils.getTime();
|
||||||
|
|
||||||
plugin.getProcessingQueue().addToQueue(new BungeePlayerRegisterProcessor(uuid, name, now));
|
plugin.getSystem().getProcessingQueue().addToQueue(new BungeePlayerRegisterProcessor(uuid, name, now));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.toLog(this.getClass(), e);
|
Log.toLog(this.getClass(), e);
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.webserver.auth;
|
package com.djrapitops.plan.system.webserver.auth;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanPlugin;
|
import com.djrapitops.plan.api.exceptions.PassEncryptException;
|
||||||
import com.djrapitops.plan.api.exceptions.WebUserAuthException;
|
import com.djrapitops.plan.api.exceptions.WebUserAuthException;
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.data.WebUser;
|
import com.djrapitops.plan.data.WebUser;
|
||||||
import com.djrapitops.plan.database.tables.SecurityTable;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.utilities.PassEncryptUtil;
|
import com.djrapitops.plan.utilities.PassEncryptUtil;
|
||||||
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
@ -28,15 +29,7 @@ public class BasicAuthentication implements Authentication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(String permission) throws WebUserAuthException {
|
public WebUser getWebUser() throws WebUserAuthException {
|
||||||
if (user == null) {
|
|
||||||
user = getUser();
|
|
||||||
return user.hasPermission(permission);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebUser getUser() throws WebUserAuthException {
|
|
||||||
Base64.Decoder decoder = Base64.getDecoder();
|
Base64.Decoder decoder = Base64.getDecoder();
|
||||||
byte[] decoded = decoder.decode(authenticationString);
|
byte[] decoded = decoder.decode(authenticationString);
|
||||||
String[] userInfo = new String(decoded).split(":");
|
String[] userInfo = new String(decoded).split(":");
|
||||||
@ -48,19 +41,20 @@ public class BasicAuthentication implements Authentication {
|
|||||||
String passwordRaw = userInfo[1];
|
String passwordRaw = userInfo[1];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SecurityTable securityTable = PlanPlugin.getInstance().getDB().getSecurityTable();
|
|
||||||
if (!securityTable.userExists(user)) {
|
Database database = Database.getActive();
|
||||||
|
if (!database.check().doesWebUserExists(user)) {
|
||||||
throw new WebUserAuthException(FailReason.USER_DOES_NOT_EXIST);
|
throw new WebUserAuthException(FailReason.USER_DOES_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebUser webUser = securityTable.getWebUser(user);
|
WebUser webUser = database.fetch().getWebUser(user);
|
||||||
|
|
||||||
boolean correctPass = PassEncryptUtil.verifyPassword(passwordRaw, webUser.getSaltedPassHash());
|
boolean correctPass = PassEncryptUtil.verifyPassword(passwordRaw, webUser.getSaltedPassHash());
|
||||||
if (!correctPass) {
|
if (!correctPass) {
|
||||||
throw new WebUserAuthException(FailReason.USER_PASS_MISMATCH);
|
throw new WebUserAuthException(FailReason.USER_PASS_MISMATCH);
|
||||||
}
|
}
|
||||||
return webUser;
|
return webUser;
|
||||||
} catch (Exception e) {
|
} catch (DBException | PassEncryptException e) {
|
||||||
throw new WebUserAuthException(e);
|
throw new WebUserAuthException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.djrapitops.plan.utilities;
|
|||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.PlanBungee;
|
import com.djrapitops.plan.PlanBungee;
|
||||||
import com.djrapitops.plan.PlanPlugin;
|
import com.djrapitops.plan.PlanPlugin;
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.settings.locale.Locale;
|
import com.djrapitops.plan.settings.locale.Locale;
|
||||||
import com.djrapitops.plan.settings.locale.Msg;
|
import com.djrapitops.plan.settings.locale.Msg;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
@ -16,7 +17,6 @@ import com.djrapitops.plugin.command.ISender;
|
|||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -99,9 +99,9 @@ public class MiscUtils {
|
|||||||
Database db = PlanPlugin.getInstance().getDB();
|
Database db = PlanPlugin.getInstance().getDB();
|
||||||
List<String> matches;
|
List<String> matches;
|
||||||
try {
|
try {
|
||||||
matches = db.getUsersTable().getMatchingNames(search);
|
matches = db.search().matchingPlayerNames(search);
|
||||||
} catch (SQLException e) {
|
} catch (DBException e) {
|
||||||
Log.toLog("MiscUtils.getMatchingPlayerNames", e);
|
Log.toLog(MiscUtils.class, e);
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
Collections.sort(matches);
|
Collections.sort(matches);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.djrapitops.plan.utilities;
|
package com.djrapitops.plan.utilities;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.PassEncryptException;
|
||||||
|
|
||||||
import javax.crypto.SecretKeyFactory;
|
import javax.crypto.SecretKeyFactory;
|
||||||
import javax.crypto.spec.PBEKeySpec;
|
import javax.crypto.spec.PBEKeySpec;
|
||||||
import javax.xml.bind.DatatypeConverter;
|
import javax.xml.bind.DatatypeConverter;
|
||||||
@ -167,7 +169,7 @@ public class PassEncryptUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public static class InvalidHashException extends Exception {
|
public static class InvalidHashException extends PassEncryptException {
|
||||||
|
|
||||||
InvalidHashException(String message) {
|
InvalidHashException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
@ -179,7 +181,7 @@ public class PassEncryptUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public static class CannotPerformOperationException extends Exception {
|
public static class CannotPerformOperationException extends PassEncryptException {
|
||||||
|
|
||||||
CannotPerformOperationException() {
|
CannotPerformOperationException() {
|
||||||
super("Unsupported hash type.");
|
super("Unsupported hash type.");
|
||||||
|
@ -9,15 +9,16 @@ import com.djrapitops.plan.data.plugin.BanData;
|
|||||||
import com.djrapitops.plan.data.plugin.PluginData;
|
import com.djrapitops.plan.data.plugin.PluginData;
|
||||||
import com.djrapitops.plan.settings.locale.Locale;
|
import com.djrapitops.plan.settings.locale.Locale;
|
||||||
import com.djrapitops.plan.settings.locale.Msg;
|
import com.djrapitops.plan.settings.locale.Msg;
|
||||||
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
|
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
|
||||||
|
import com.djrapitops.plan.system.tasks.TaskSystem;
|
||||||
import com.djrapitops.plan.system.webserver.response.errors.ErrorResponse;
|
import com.djrapitops.plan.system.webserver.response.errors.ErrorResponse;
|
||||||
import com.djrapitops.plan.system.webserver.response.errors.InternalErrorResponse;
|
import com.djrapitops.plan.system.webserver.response.errors.InternalErrorResponse;
|
||||||
import com.djrapitops.plan.systems.cache.DataCache;
|
import com.djrapitops.plan.systems.cache.DataCache;
|
||||||
import com.djrapitops.plan.systems.cache.SessionCache;
|
import com.djrapitops.plan.systems.cache.SessionCache;
|
||||||
import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
import com.djrapitops.plan.systems.info.BukkitInformationManager;
|
||||||
import com.djrapitops.plan.systems.info.InformationManager;
|
import com.djrapitops.plan.systems.info.InformationManager;
|
||||||
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
|
|
||||||
import com.djrapitops.plan.system.tasks.TaskSystem;
|
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
import com.djrapitops.plugin.api.Benchmark;
|
import com.djrapitops.plugin.api.Benchmark;
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
@ -114,7 +115,7 @@ public class Analysis {
|
|||||||
|
|
||||||
Benchmark.stop("Analysis", "Create Empty dataset");
|
Benchmark.stop("Analysis", "Create Empty dataset");
|
||||||
Benchmark.start("Fetch Phase");
|
Benchmark.start("Fetch Phase");
|
||||||
ServerProfile profile = db.getServerProfile(Plan.getServerUUID());
|
ServerProfile profile = db.fetch().getServerProfile(Plan.getServerUUID());
|
||||||
DataCache dataCache = plugin.getDataCache();
|
DataCache dataCache = plugin.getDataCache();
|
||||||
profile.addActiveSessions(new HashMap<>(SessionCache.getActiveSessions()));
|
profile.addActiveSessions(new HashMap<>(SessionCache.getActiveSessions()));
|
||||||
serverProfile = profile;
|
serverProfile = profile;
|
||||||
|
@ -6,6 +6,7 @@ package com.djrapitops.plan.utilities.html;
|
|||||||
|
|
||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.ServerVariableHolder;
|
import com.djrapitops.plan.ServerVariableHolder;
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
import com.djrapitops.plan.data.container.Session;
|
import com.djrapitops.plan.data.container.Session;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
@ -17,7 +18,6 @@ import com.djrapitops.plan.utilities.html.tables.SessionsTableCreator;
|
|||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
import com.djrapitops.plugin.utilities.Verify;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -122,11 +122,12 @@ public class HtmlStructure {
|
|||||||
UUID serverUUID = plugin.getServerUuid();
|
UUID serverUUID = plugin.getServerUuid();
|
||||||
String id = serverUUID.toString().replace("-", "");
|
String id = serverUUID.toString().replace("-", "");
|
||||||
|
|
||||||
int playerCount = db.getUserInfoTable().getServerUserCount(serverUUID);
|
int playerCount = 0;
|
||||||
String playerData = "[]";
|
String playerData = "[]";
|
||||||
try {
|
try {
|
||||||
playerData = PlayerActivityGraph.createSeries(db.getTpsTable().getTPSData(serverUUID));
|
playerCount = db.count().serverPlayerCount(serverUUID);
|
||||||
} catch (SQLException e) {
|
playerData = PlayerActivityGraph.createSeries(db.fetch().getTPSData(serverUUID));
|
||||||
|
} catch (DBException e) {
|
||||||
Log.toLog(HtmlStructure.class.getClass().getName(), e);
|
Log.toLog(HtmlStructure.class.getClass().getName(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,12 +6,13 @@
|
|||||||
package com.djrapitops.plan.utilities.uuid;
|
package com.djrapitops.plan.utilities.uuid;
|
||||||
|
|
||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.FatalDBException;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
import com.djrapitops.plugin.api.Check;
|
import com.djrapitops.plugin.api.Check;
|
||||||
import com.djrapitops.plugin.api.utility.UUIDFetcher;
|
import com.djrapitops.plugin.api.utility.UUIDFetcher;
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +35,7 @@ public class UUIDUtility {
|
|||||||
*/
|
*/
|
||||||
public static UUID getUUIDOf(String playerName) {
|
public static UUID getUUIDOf(String playerName) {
|
||||||
try {
|
try {
|
||||||
return getUUIDOf(playerName, PlanPlugin.getInstance().getDB());
|
return getUUIDOf(playerName, Database.getActive());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -47,7 +48,7 @@ public class UUIDUtility {
|
|||||||
* @param db Database to check from.
|
* @param db Database to check from.
|
||||||
* @return UUID of the player
|
* @return UUID of the player
|
||||||
*/
|
*/
|
||||||
public static UUID getUUIDOf(String playerName, Database db) {
|
private static UUID getUUIDOf(String playerName, Database db) {
|
||||||
UUID uuid = null;
|
UUID uuid = null;
|
||||||
if (Check.isBukkitAvailable()) {
|
if (Check.isBukkitAvailable()) {
|
||||||
UUID uuidOf = Plan.getInstance().getDataCache().getUUIDof(playerName);
|
UUID uuidOf = Plan.getInstance().getDataCache().getUUIDof(playerName);
|
||||||
@ -56,9 +57,11 @@ public class UUIDUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
uuid = db.getUsersTable().getUuidOf(playerName);
|
uuid = db.fetch().getUuidOf(playerName);
|
||||||
} catch (SQLException e) {
|
} catch (FatalDBException e) {
|
||||||
Log.toLog("UUIDUtility", e);
|
Log.toLog(UUIDUtility.class, e);
|
||||||
|
} catch (DBException e) {
|
||||||
|
/* Ignored */
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user