Theme and Config related things initialized by Dagger, module cleanup

This commit is contained in:
Rsl1122 2018-08-23 13:56:24 +03:00
parent 63b1419b12
commit 93aa208472
46 changed files with 587 additions and 872 deletions

View File

@ -22,14 +22,13 @@ package com.djrapitops.plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.command.PlanCommand;
import com.djrapitops.plan.modules.APFModule;
import com.djrapitops.plan.modules.common.LocaleModule;
import com.djrapitops.plan.modules.server.ServerAPIModule;
import com.djrapitops.plan.modules.server.ServerDataCacheModule;
import com.djrapitops.plan.modules.server.ServerInfoSystemModule;
import com.djrapitops.plan.modules.server.bukkit.BukkitConfigModule;
import com.djrapitops.plan.modules.server.bukkit.BukkitDatabaseModule;
import com.djrapitops.plan.modules.FileSystemModule;
import com.djrapitops.plan.modules.SuperClassBindingModule;
import com.djrapitops.plan.modules.SystemObjectBindingModule;
import com.djrapitops.plan.modules.server.ServerSuperClassBindingModule;
import com.djrapitops.plan.modules.server.bukkit.BukkitInfoModule;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.modules.server.bukkit.BukkitSuperClassBindingModule;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.lang.PluginLang;
import com.djrapitops.plan.system.processing.importing.ImporterManager;
@ -56,20 +55,19 @@ import java.util.logging.Logger;
@Singleton
@Component(modules = {
BukkitPlanModule.class,
SuperClassBindingModule.class,
SystemObjectBindingModule.class,
APFModule.class,
BukkitConfigModule.class,
LocaleModule.class,
FileSystemModule.class,
BukkitInfoModule.class,
BukkitDatabaseModule.class,
ServerDataCacheModule.class,
ServerInfoSystemModule.class,
ServerAPIModule.class
ServerSuperClassBindingModule.class,
BukkitSuperClassBindingModule.class
})
interface PlanComponent {
PlanCommand planCommand();
BukkitSystem system();
PlanSystem system();
@Component.Builder
interface Builder {
@ -104,7 +102,7 @@ class BukkitPlanModule {
*/
public class Plan extends BukkitPlugin implements PlanPlugin {
private BukkitSystem system;
private PlanSystem system;
private Locale locale;
/**
@ -220,7 +218,7 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
}
@Override
public BukkitSystem getSystem() {
public PlanSystem getSystem() {
return system;
}
}

View File

@ -7,9 +7,12 @@ package com.djrapitops.plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.command.PlanBungeeCommand;
import com.djrapitops.plan.modules.APFModule;
import com.djrapitops.plan.modules.bungee.*;
import com.djrapitops.plan.modules.common.LocaleModule;
import com.djrapitops.plan.system.BungeeSystem;
import com.djrapitops.plan.modules.FileSystemModule;
import com.djrapitops.plan.modules.SuperClassBindingModule;
import com.djrapitops.plan.modules.SystemObjectBindingModule;
import com.djrapitops.plan.modules.bungee.BungeeInfoModule;
import com.djrapitops.plan.modules.bungee.BungeeSuperClassBindingModule;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.lang.PluginLang;
import com.djrapitops.plan.system.settings.theme.PlanColorScheme;
@ -33,20 +36,18 @@ import java.io.InputStream;
@Singleton
@Component(modules = {
BungeePlanModule.class,
SuperClassBindingModule.class,
SystemObjectBindingModule.class,
APFModule.class,
BungeeConfigModule.class,
LocaleModule.class,
BungeeInfoSystemModule.class,
BungeeInfoModule.class,
BungeeDataCacheModule.class,
BungeeDatabaseModule.class,
BungeeAPIModule.class
FileSystemModule.class,
BungeeSuperClassBindingModule.class,
BungeeInfoModule.class
})
interface PlanBungeeComponent {
PlanBungeeCommand planCommand();
BungeeSystem system();
PlanSystem system();
@Component.Builder
interface Builder {
@ -80,7 +81,7 @@ class BungeePlanModule {
*/
public class PlanBungee extends BungeePlugin implements PlanPlugin {
private BungeeSystem system;
private PlanSystem system;
private Locale locale;
public static PlanBungee getInstance() {
@ -146,7 +147,7 @@ public class PlanBungee extends BungeePlugin implements PlanPlugin {
}
@Override
public BungeeSystem getSystem() {
public PlanSystem getSystem() {
return system;
}

View File

@ -18,6 +18,7 @@ import java.io.InputStream;
* @author Rsl1122
*/
public interface PlanPlugin extends IPlugin {
@Deprecated
static PlanPlugin getInstance() {
boolean bukkitAvailable = Check.isBukkitAvailable();
boolean bungeeAvailable = Check.isBungeeAvailable();

View File

@ -3,14 +3,13 @@ package com.djrapitops.plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.command.PlanCommand;
import com.djrapitops.plan.modules.APFModule;
import com.djrapitops.plan.modules.common.LocaleModule;
import com.djrapitops.plan.modules.server.ServerAPIModule;
import com.djrapitops.plan.modules.server.ServerDataCacheModule;
import com.djrapitops.plan.modules.server.ServerInfoSystemModule;
import com.djrapitops.plan.modules.server.bukkit.BukkitConfigModule;
import com.djrapitops.plan.modules.server.sponge.SpongeDatabaseModule;
import com.djrapitops.plan.modules.FileSystemModule;
import com.djrapitops.plan.modules.SuperClassBindingModule;
import com.djrapitops.plan.modules.SystemObjectBindingModule;
import com.djrapitops.plan.modules.server.ServerSuperClassBindingModule;
import com.djrapitops.plan.modules.server.sponge.SpongeInfoModule;
import com.djrapitops.plan.system.SpongeSystem;
import com.djrapitops.plan.modules.server.sponge.SpongeSuperClassBindingModule;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.lang.PluginLang;
import com.djrapitops.plan.system.settings.theme.PlanColorScheme;
@ -44,20 +43,19 @@ import java.io.InputStream;
@Singleton
@Component(modules = {
SpongePlanModule.class,
SuperClassBindingModule.class,
SystemObjectBindingModule.class,
APFModule.class,
BukkitConfigModule.class,
LocaleModule.class,
SpongeDatabaseModule.class,
ServerDataCacheModule.class,
ServerInfoSystemModule.class,
SpongeInfoModule.class,
ServerAPIModule.class,
FileSystemModule.class,
ServerSuperClassBindingModule.class,
SpongeSuperClassBindingModule.class,
SpongeInfoModule.class
})
interface PlanSpongeComponent {
PlanCommand planCommand();
SpongeSystem system();
PlanSystem system();
@Component.Builder
interface Builder {
@ -96,7 +94,7 @@ public class PlanSponge extends SpongePlugin implements PlanPlugin {
@Inject
@ConfigDir(sharedRoot = false)
private File dataFolder;
private SpongeSystem system;
private PlanSystem system;
private Locale locale;
@Listener
@ -189,7 +187,7 @@ public class PlanSponge extends SpongePlugin implements PlanPlugin {
}
@Override
public SpongeSystem getSystem() {
public PlanSystem getSystem() {
return system;
}
}

View File

@ -0,0 +1,26 @@
package com.djrapitops.plan.modules;
import com.djrapitops.plan.system.file.FileSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Named;
import javax.inject.Singleton;
import java.io.File;
/**
* Dagger Module for the Plan FileSystem.
*
* @author Rsl1122
*/
@Module
public class FileSystemModule {
@Provides
@Named("configFile")
@Singleton
File provideConfigFile(FileSystem fileSystem) {
return fileSystem.getConfigFile();
}
}

View File

@ -1,4 +1,4 @@
package com.djrapitops.plan.modules.server;
package com.djrapitops.plan.modules;
import com.djrapitops.plan.system.cache.DataCache;
import com.djrapitops.plan.system.cache.SessionCache;
@ -8,12 +8,12 @@ import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Server CacheSystem.
* Module for binding instances of implementations to super classes.
*
* @author Rsl1122
*/
@Module
public class ServerDataCacheModule {
public class SuperClassBindingModule {
@Provides
@Singleton

View File

@ -0,0 +1,40 @@
package com.djrapitops.plan.modules;
import com.djrapitops.plan.data.plugin.PluginsConfigSection;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.LocaleSystem;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Module for binding object instances found inside other systems.
*
* @author Rsl1122
*/
@Module
public class SystemObjectBindingModule {
@Provides
@Singleton
Locale provideLocale(LocaleSystem localeSystem) {
return localeSystem.getLocale();
}
@Provides
@Singleton
Database provideDatabase(DBSystem dbSystem) {
return dbSystem.getActiveDatabase();
}
@Provides
@Singleton
PluginsConfigSection providePluginsConfigSection(PlanConfig config) {
return config.getPluginsConfigSection();
}
}

View File

@ -1,24 +0,0 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.api.BungeeAPI;
import com.djrapitops.plan.api.PlanAPI;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Bungee PlanAPI.
*
* @author Rsl1122
*/
@Module
public class BungeeAPIModule {
@Provides
@Singleton
PlanAPI providePlanAPI(BungeeAPI bungeeAPI) {
return bungeeAPI;
}
}

View File

@ -1,45 +0,0 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.data.plugin.PluginsConfigSection;
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.theme.Theme;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Bungee Configuration.
*
* @author Rsl1122
*/
@Module
public class BungeeConfigModule {
@Provides
@Singleton
ConfigSystem provideConfigSystem(BungeeConfigSystem bungeeConfigSystem) {
return bungeeConfigSystem;
}
@Provides
@Singleton
PlanConfig provideConfig(ConfigSystem configSystem) {
return configSystem.getConfig();
}
@Provides
@Singleton
PluginsConfigSection providePluginsConfigSection(PlanConfig config) {
return config.getPluginsConfigSection();
}
@Provides
@Singleton
Theme provideTheme(ConfigSystem configSystem) {
return configSystem.getTheme();
}
}

View File

@ -1,31 +0,0 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.system.cache.BungeeDataCache;
import com.djrapitops.plan.system.cache.DataCache;
import com.djrapitops.plan.system.cache.SessionCache;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Bungee CacheSystem.
*
* @author Rsl1122
*/
@Module
public class BungeeDataCacheModule {
@Provides
@Singleton
DataCache provideDataCache(BungeeDataCache bungeeDataCache) {
return bungeeDataCache;
}
@Provides
@Singleton
SessionCache provideSessionCache(DataCache cache) {
return cache;
}
}

View File

@ -1,31 +0,0 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.system.database.BungeeDBSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.Database;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for bungee database.
*
* @author Rsl1122
*/
@Module
public class BungeeDatabaseModule {
@Provides
@Singleton
DBSystem provideDatabaseSystem(BungeeDBSystem dbSystem) {
return dbSystem;
}
@Provides
@Singleton
Database provideDatabase(DBSystem dbSystem) {
return dbSystem.getActiveDatabase();
}
}

View File

@ -1,32 +0,0 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.system.info.BungeeInfoSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.connection.BungeeConnectionSystem;
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Bungee InfoSystem.
*
* @author Rsl1122
*/
@Module
public class BungeeInfoSystemModule {
@Provides
@Singleton
InfoSystem provideBungeeInfoSystem(BungeeInfoSystem bungeeInfoSystem) {
return bungeeInfoSystem;
}
@Provides
@Singleton
ConnectionSystem provideBungeeConnectionSystem(BungeeConnectionSystem bungeeConnectionSystem) {
return bungeeConnectionSystem;
}
}

View File

@ -0,0 +1,72 @@
package com.djrapitops.plan.modules.bungee;
import com.djrapitops.plan.api.BungeeAPI;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.system.database.BungeeDBSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.info.BungeeInfoSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.connection.BungeeConnectionSystem;
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
import com.djrapitops.plan.system.listeners.BungeeListenerSystem;
import com.djrapitops.plan.system.listeners.ListenerSystem;
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.tasks.BungeeTaskSystem;
import com.djrapitops.plan.system.tasks.TaskSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Module for binding Bungee specific classes to the interface implementations.
*
* @author Rsl1122
*/
@Module
public class BungeeSuperClassBindingModule {
@Provides
@Singleton
PlanAPI provideBungeePlanAPI(BungeeAPI bungeeAPI) {
return bungeeAPI;
}
@Provides
@Singleton
DBSystem provideBungeeDatabaseSystem(BungeeDBSystem dbSystem) {
return dbSystem;
}
@Provides
@Singleton
ConfigSystem provideBungeeConfigSystem(BungeeConfigSystem bungeeConfigSystem) {
return bungeeConfigSystem;
}
@Provides
@Singleton
InfoSystem provideBungeeInfoSystem(BungeeInfoSystem bungeeInfoSystem) {
return bungeeInfoSystem;
}
@Provides
@Singleton
ConnectionSystem provideBungeeConnectionSystem(BungeeConnectionSystem bungeeConnectionSystem) {
return bungeeConnectionSystem;
}
@Provides
@Singleton
TaskSystem provideBungeeTaskSystem(BungeeTaskSystem bungeeTaskSystem) {
return bungeeTaskSystem;
}
@Provides
@Singleton
ListenerSystem provideBungeeListenerSystem(BungeeListenerSystem bungeeListenerSystem) {
return bungeeListenerSystem;
}
}

View File

@ -1,23 +0,0 @@
package com.djrapitops.plan.modules.common;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.LocaleSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger Module for LocaleSystem.
*
* @author Rsl1122
*/
@Module
public class LocaleModule {
@Provides
@Singleton
Locale provideLocale(LocaleSystem localeSystem) {
return localeSystem.getLocale();
}
}

View File

@ -1,24 +0,0 @@
package com.djrapitops.plan.modules.server;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.ServerAPI;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Server PlanAPI.
*
* @author Rsl1122
*/
@Module
public class ServerAPIModule {
@Provides
@Singleton
PlanAPI providePlanAPI(ServerAPI serverAPI) {
return serverAPI;
}
}

View File

@ -1,5 +1,7 @@
package com.djrapitops.plan.modules.server;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.ServerAPI;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.ServerInfoSystem;
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
@ -10,12 +12,18 @@ import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Server InfoSystem.
* Module for binding Server specific classes to the interface implementations.
*
* @author Rsl1122
*/
@Module
public class ServerInfoSystemModule {
public class ServerSuperClassBindingModule {
@Provides
@Singleton
PlanAPI provideServerPlanAPI(ServerAPI serverAPI) {
return serverAPI;
}
@Provides
@Singleton

View File

@ -1,45 +0,0 @@
package com.djrapitops.plan.modules.server.bukkit;
import com.djrapitops.plan.data.plugin.PluginsConfigSection;
import com.djrapitops.plan.system.settings.config.BukkitConfigSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.theme.Theme;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Bukkit Configuration.
*
* @author Rsl1122
*/
@Module
public class BukkitConfigModule {
@Provides
@Singleton
ConfigSystem provideConfigSystem(BukkitConfigSystem bukkitConfigSystem) {
return bukkitConfigSystem;
}
@Provides
@Singleton
PlanConfig provideConfig(ConfigSystem configSystem) {
return configSystem.getConfig();
}
@Provides
@Singleton
PluginsConfigSection providePluginsConfigSection(PlanConfig config) {
return config.getPluginsConfigSection();
}
@Provides
@Singleton
Theme provideTheme(ConfigSystem configSystem) {
return configSystem.getTheme();
}
}

View File

@ -1,31 +0,0 @@
package com.djrapitops.plan.modules.server.bukkit;
import com.djrapitops.plan.system.database.BukkitDBSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.Database;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for bukkit database.
*
* @author Rsl1122
*/
@Module
public class BukkitDatabaseModule {
@Provides
@Singleton
DBSystem provideDatabaseSystem(BukkitDBSystem dbSystem) {
return dbSystem;
}
@Provides
@Singleton
Database provideDatabase(DBSystem dbSystem) {
return dbSystem.getActiveDatabase();
}
}

View File

@ -0,0 +1,48 @@
package com.djrapitops.plan.modules.server.bukkit;
import com.djrapitops.plan.system.database.BukkitDBSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.listeners.BukkitListenerSystem;
import com.djrapitops.plan.system.listeners.ListenerSystem;
import com.djrapitops.plan.system.settings.config.BukkitConfigSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
import com.djrapitops.plan.system.tasks.TaskSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Module for binding Bukkit specific classes to the interface implementations.
*
* @author Rsl1122
*/
@Module
public class BukkitSuperClassBindingModule {
@Provides
@Singleton
DBSystem provideBukkitDatabaseSystem(BukkitDBSystem dbSystem) {
return dbSystem;
}
@Provides
@Singleton
ConfigSystem provideBukkitConfigSystem(BukkitConfigSystem bukkitConfigSystem) {
return bukkitConfigSystem;
}
@Provides
@Singleton
TaskSystem provideBukkitTaskSystem(BukkitTaskSystem bukkitTaskSystem) {
return bukkitTaskSystem;
}
@Provides
@Singleton
ListenerSystem provideBukkitListenerSystem(BukkitListenerSystem bukkitListenerSystem) {
return bukkitListenerSystem;
}
}

View File

@ -1,38 +0,0 @@
package com.djrapitops.plan.modules.server.sponge;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.config.SpongeConfigSystem;
import com.djrapitops.plan.system.settings.theme.Theme;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Dagger module for Sponge Configuration.
*
* @author Rsl1122
*/
@Module
public class SpongeConfigModule {
@Provides
@Singleton
ConfigSystem provideConfigSystem(SpongeConfigSystem spongeConfigSystem) {
return spongeConfigSystem;
}
@Provides
@Singleton
PlanConfig provideConfig(ConfigSystem configSystem) {
return configSystem.getConfig();
}
@Provides
@Singleton
Theme provideTheme(ConfigSystem configSystem) {
return configSystem.getTheme();
}
}

View File

@ -1,27 +0,0 @@
package com.djrapitops.plan.modules.server.sponge;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.SpongeDBSystem;
import com.djrapitops.plan.system.database.databases.Database;
import dagger.Module;
import dagger.Provides;
/**
* Dagger module for sponge database.
*
* @author Rsl1122
*/
@Module
public class SpongeDatabaseModule {
@Provides
DBSystem provideDatabaseSystem(SpongeDBSystem dbSystem) {
return dbSystem;
}
@Provides
Database provideDatabase(DBSystem dbSystem) {
return dbSystem.getActiveDatabase();
}
}

View File

@ -0,0 +1,48 @@
package com.djrapitops.plan.modules.server.sponge;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.SpongeDBSystem;
import com.djrapitops.plan.system.listeners.ListenerSystem;
import com.djrapitops.plan.system.listeners.SpongeListenerSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.config.SpongeConfigSystem;
import com.djrapitops.plan.system.tasks.SpongeTaskSystem;
import com.djrapitops.plan.system.tasks.TaskSystem;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/**
* Module for binding Sponge specific classes to the interface implementations.
*
* @author Rsl1122
*/
@Module
public class SpongeSuperClassBindingModule {
@Provides
@Singleton
DBSystem provideSpongeDatabaseSystem(SpongeDBSystem dbSystem) {
return dbSystem;
}
@Provides
@Singleton
ConfigSystem provideSpongeConfigSystem(SpongeConfigSystem spongeConfigSystem) {
return spongeConfigSystem;
}
@Provides
@Singleton
TaskSystem provideSpongeTaskSystem(SpongeTaskSystem spongeTaskSystem) {
return spongeTaskSystem;
}
@Provides
@Singleton
ListenerSystem provideSpongeListenerSystem(SpongeListenerSystem spongeListenerSystem) {
return spongeListenerSystem;
}
}

View File

@ -1,78 +0,0 @@
/*
* License is provided in the jar as LICENSE also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/LICENSE
*/
package com.djrapitops.plan.system;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.ShutdownHook;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.export.ExportSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.server.BukkitServerInfo;
import com.djrapitops.plan.system.listeners.BukkitListenerSystem;
import com.djrapitops.plan.system.locale.LocaleSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.network.NetworkSettings;
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
import com.djrapitops.plan.system.update.VersionCheckSystem;
import com.djrapitops.plan.system.webserver.WebServerSystem;
import javax.inject.Inject;
/**
* Represents PlanSystem for Plan.
*
* @author Rsl1122
*/
public class BukkitSystem extends PlanSystem implements ServerSystem {
@Inject
public BukkitSystem(VersionCheckSystem versionCheckSystem,
FileSystem fileSystem,
ConfigSystem serverConfigSystem,
LocaleSystem localeSystem,
InfoSystem serverInfoSystem,
BukkitServerInfo serverInfo,
DBSystem databaseSystem,
WebServerSystem webServerSystem,
BukkitListenerSystem bukkitListenerSystem,
BukkitTaskSystem bukkitTaskSystem,
ExportSystem exportSystem,
HookHandler hookHandler,
PlanAPI planAPI,
ShutdownHook shutdownHook
) {
super(webServerSystem, localeSystem);
this.versionCheckSystem = versionCheckSystem;
this.fileSystem = fileSystem;
this.configSystem = serverConfigSystem;
this.exportSystem = exportSystem;
this.databaseSystem = databaseSystem;
listenerSystem = bukkitListenerSystem;
taskSystem = bukkitTaskSystem;
infoSystem = serverInfoSystem;
this.serverInfo = serverInfo;
this.hookHandler = hookHandler;
this.planAPI = planAPI;
shutdownHook.register();
}
@Deprecated
public static BukkitSystem getInstance() {
return Plan.getInstance().getSystem();
}
@Override
public void enable() throws EnableException {
super.enable();
NetworkSettings.loadSettingsFromDB();
}
}

View File

@ -1,83 +0,0 @@
/*
* License is provided in the jar as LICENSE also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/LICENSE
*/
package com.djrapitops.plan.system;
import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.system.cache.BungeeCacheSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.export.ExportSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.server.ServerInfo;
import com.djrapitops.plan.system.listeners.BungeeListenerSystem;
import com.djrapitops.plan.system.locale.LocaleSystem;
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
import com.djrapitops.plan.system.settings.network.NetworkSettings;
import com.djrapitops.plan.system.tasks.BungeeTaskSystem;
import com.djrapitops.plan.system.update.VersionCheckSystem;
import com.djrapitops.plan.system.webserver.WebServerSystem;
import javax.inject.Inject;
/**
* Represents PlanSystem for PlanBungee.
*
* @author Rsl1122
*/
public class BungeeSystem extends PlanSystem {
@Inject
public BungeeSystem(
VersionCheckSystem versionCheckSystem,
FileSystem fileSystem,
BungeeConfigSystem bungeeConfigSystem,
LocaleSystem localeSystem,
InfoSystem infoSystem,
ServerInfo serverInfo,
BungeeCacheSystem bungeeCacheSystem,
DBSystem databaseSystem,
WebServerSystem webServerSystem,
BungeeListenerSystem bungeeListenerSystem,
BungeeTaskSystem bungeeTaskSystem,
HookHandler hookHandler,
ExportSystem exportSystem,
PlanAPI planAPI
) {
super(webServerSystem, localeSystem);
setTestSystem(this);
this.versionCheckSystem = versionCheckSystem;
this.fileSystem = fileSystem;
configSystem = bungeeConfigSystem;
this.exportSystem = exportSystem;
this.databaseSystem = databaseSystem;
cacheSystem = bungeeCacheSystem;
listenerSystem = bungeeListenerSystem;
taskSystem = bungeeTaskSystem;
this.infoSystem = infoSystem;
this.serverInfo = serverInfo;
this.hookHandler = hookHandler;
this.planAPI = planAPI;
}
public static BungeeSystem getInstance() {
return PlanBungee.getInstance().getSystem();
}
public void setDatabaseSystem(DBSystem dbSystem) {
this.databaseSystem = dbSystem;
}
@Override
public void enable() throws EnableException {
super.enable();
NetworkSettings.placeSettingsToDB();
}
}

View File

@ -4,6 +4,7 @@
*/
package com.djrapitops.plan.system;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.data.plugin.HookHandler;
@ -14,18 +15,16 @@ import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.server.ServerInfo;
import com.djrapitops.plan.system.listeners.ListenerSystem;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.locale.LocaleSystem;
import com.djrapitops.plan.system.processing.Processing;
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.webserver.WebServerSystem;
import com.djrapitops.plugin.api.Check;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.utilities.Verify;
import java.util.function.Supplier;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* PlanSystem contains everything Plan needs to run.
@ -34,62 +33,69 @@ import java.util.function.Supplier;
*
* @author Rsl1122
*/
public abstract class PlanSystem implements SubSystem {
@Singleton
public class PlanSystem implements SubSystem {
protected static PlanSystem testSystem;
private final FileSystem fileSystem;
private final ConfigSystem configSystem;
private final VersionCheckSystem versionCheckSystem;
private final LocaleSystem localeSystem;
private final DBSystem databaseSystem;
private final CacheSystem cacheSystem;
private final ListenerSystem listenerSystem;
private final TaskSystem taskSystem;
private final InfoSystem infoSystem;
private final ServerInfo serverInfo;
private final WebServerSystem webServerSystem;
// Initialized in this class
private Processing processing;
protected final WebServerSystem webServerSystem;
protected final LocaleSystem localeSystem;
protected CacheSystem cacheSystem;
private final Processing processing;
// These need to be initialized in the sub class.
protected VersionCheckSystem versionCheckSystem;
protected FileSystem fileSystem;
protected ConfigSystem configSystem;
protected ExportSystem exportSystem;
protected DBSystem databaseSystem;
protected InfoSystem infoSystem;
private final ExportSystem exportSystem;
private final HookHandler hookHandler;
private final PlanAPI planAPI;
protected ListenerSystem listenerSystem;
protected TaskSystem taskSystem;
protected ServerInfo serverInfo;
protected HookHandler hookHandler;
// Not a SubSystem.
protected PlanAPI planAPI;
public PlanSystem(WebServerSystem webServerSystem, LocaleSystem localeSystem) {
this.webServerSystem = webServerSystem;
@Inject
public PlanSystem(
FileSystem fileSystem,
ConfigSystem configSystem,
VersionCheckSystem versionCheckSystem,
LocaleSystem localeSystem,
DBSystem databaseSystem,
CacheSystem cacheSystem,
ListenerSystem listenerSystem,
TaskSystem taskSystem,
InfoSystem infoSystem,
ServerInfo serverInfo,
WebServerSystem webServerSystem,
//Processing processing,
ExportSystem exportSystem,
HookHandler hookHandler,
PlanAPI planAPI
) {
this.fileSystem = fileSystem;
this.configSystem = configSystem;
this.versionCheckSystem = versionCheckSystem;
this.localeSystem = localeSystem;
Supplier<Locale> localeSupplier = () -> getLocaleSystem().getLocale();
processing = new Processing(localeSupplier);
this.databaseSystem = databaseSystem;
this.cacheSystem = cacheSystem;
this.listenerSystem = listenerSystem;
this.taskSystem = taskSystem;
this.infoSystem = infoSystem;
this.serverInfo = serverInfo;
this.webServerSystem = webServerSystem;
this.processing = new Processing(localeSystem::getLocale);
this.exportSystem = exportSystem;
this.hookHandler = hookHandler;
this.planAPI = planAPI;
}
@Deprecated
public static PlanSystem getInstance() {
boolean bukkitAvailable = Check.isBukkitAvailable();
boolean bungeeAvailable = Check.isBungeeAvailable();
boolean spongeAvailable = Check.isSpongeAvailable();
if (bukkitAvailable && bungeeAvailable) {
return testSystem;
} else if (bungeeAvailable) {
return BungeeSystem.getInstance();
} else if (bukkitAvailable) {
return BukkitSystem.getInstance();
} else if (spongeAvailable) {
return SpongeSystem.getInstance();
}
throw new IllegalAccessError("PlanSystem is not available on this platform.");
return PlanPlugin.getInstance().getSystem();
}
@Override
public void enable() throws EnableException {
checkSubSystemInitialization();
enableSystems(
fileSystem,
configSystem,
@ -146,24 +152,6 @@ public abstract class PlanSystem implements SubSystem {
}
}
private void checkSubSystemInitialization() throws EnableException {
try {
Verify.nullCheck(versionCheckSystem, () -> new IllegalStateException("Version Check system was not initialized."));
Verify.nullCheck(fileSystem, () -> new IllegalStateException("File system was not initialized."));
Verify.nullCheck(configSystem, () -> new IllegalStateException("Config system was not initialized."));
Verify.nullCheck(localeSystem, () -> new IllegalStateException("Locale system was not initialized."));
Verify.nullCheck(databaseSystem, () -> new IllegalStateException("Database system was not initialized."));
Verify.nullCheck(infoSystem, () -> new IllegalStateException("Info system was not initialized."));
Verify.nullCheck(serverInfo, () -> new IllegalStateException("ServerInfo was not initialized."));
Verify.nullCheck(listenerSystem, () -> new IllegalStateException("Listener system was not initialized."));
Verify.nullCheck(taskSystem, () -> new IllegalStateException("Task system was not initialized."));
Verify.nullCheck(hookHandler, () -> new IllegalStateException("Plugin Hooks were not initialized."));
Verify.nullCheck(planAPI, () -> new IllegalStateException("Plan API was not initialized."));
} catch (Exception e) {
throw new EnableException("One of the subsystems is not initialized on enable for " + this.getClass().getSimpleName() + ": " + e.getMessage());
}
}
// Accessor methods.
public VersionCheckSystem getVersionCheckSystem() {
@ -218,10 +206,6 @@ public abstract class PlanSystem implements SubSystem {
return processing;
}
static void setTestSystem(PlanSystem testSystem) {
PlanSystem.testSystem = testSystem;
}
public LocaleSystem getLocaleSystem() {
return localeSystem;
}

View File

@ -1,80 +0,0 @@
/*
* License is provided in the jar as LICENSE also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/LICENSE
*/
package com.djrapitops.plan.system;
import com.djrapitops.plan.PlanSponge;
import com.djrapitops.plan.ShutdownHook;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.export.ExportSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.server.SpongeServerInfo;
import com.djrapitops.plan.system.listeners.SpongeListenerSystem;
import com.djrapitops.plan.system.locale.LocaleSystem;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.network.NetworkSettings;
import com.djrapitops.plan.system.tasks.SpongeTaskSystem;
import com.djrapitops.plan.system.update.VersionCheckSystem;
import com.djrapitops.plan.system.webserver.WebServerSystem;
import javax.inject.Inject;
/**
* Represents PlanSystem for PlanSponge.
*
* @author Rsl1122
*/
public class SpongeSystem extends PlanSystem implements ServerSystem {
@Inject
public SpongeSystem(PlanSponge plugin,
VersionCheckSystem versionCheckSystem,
FileSystem fileSystem,
ConfigSystem serverConfigSystem,
LocaleSystem localeSystem,
InfoSystem serverInfoSystem,
SpongeServerInfo serverInfo,
DBSystem databaseSystem,
WebServerSystem webServerSystem,
SpongeListenerSystem spongeListenerSystem,
SpongeTaskSystem spongeTaskSystem,
ExportSystem exportSystem,
HookHandler hookHandler,
PlanAPI planAPI,
ShutdownHook shutdownHook
) {
super(webServerSystem, localeSystem);
setTestSystem(this);
this.versionCheckSystem = versionCheckSystem;
this.fileSystem = fileSystem;
this.configSystem = serverConfigSystem;
this.exportSystem = exportSystem;
this.databaseSystem = databaseSystem;
listenerSystem = spongeListenerSystem;
taskSystem = spongeTaskSystem;
infoSystem = serverInfoSystem;
this.serverInfo = serverInfo;
this.hookHandler = hookHandler;
this.planAPI = planAPI;
shutdownHook.register();
}
public static SpongeSystem getInstance() {
return PlanSponge.getInstance().getSystem();
}
@Override
public void enable() throws EnableException {
super.enable();
NetworkSettings.loadSettingsFromDB();
}
}

View File

@ -1,6 +1,5 @@
package com.djrapitops.plan.system.database.databases;
import com.djrapitops.plan.api.exceptions.connection.UnsupportedTransferDatabaseException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.system.database.DBSystem;
@ -69,5 +68,5 @@ public abstract class Database {
public abstract void scheduleClean(long delay);
public abstract TransferOperations transfer() throws UnsupportedTransferDatabaseException;
public abstract TransferOperations transfer();
}

View File

@ -93,6 +93,8 @@ public class SendDBSettingsRequest extends InfoRequestWithVariables implements S
settings.put("WebServerPort", webServerPort);
settings.put("ServerName", serverName);
settings.put("ThemeBase", themeBase);
Settings.serverSpecific().addOriginalBukkitSettings(serverUUID, settings);
// TODO Config
// Settings.serverSpecific().addOriginalBukkitSettings(serverUUID, settings);
}
}

View File

@ -5,11 +5,11 @@
package com.djrapitops.plan.system.settings;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.config.Config;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.utilities.Verify;
import javax.inject.Inject;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
@ -24,9 +24,20 @@ import java.util.UUID;
*/
public class ServerSpecificSettings {
public static void updateSettings(Map<String, String> settings) {
Log.debug("Checking new settings..");
Config config = ConfigSystem.getConfig_Old();
private final PluginLogger logger;
private PlanConfig config;
@Inject
public ServerSpecificSettings(PluginLogger logger) {
this.logger = logger;
}
public void setConfig(PlanConfig config) {
this.config = config;
}
public void updateSettings(Map<String, String> settings) throws IOException {
logger.debug("Checking new settings..");
boolean changedSomething = false;
for (Map.Entry<String, String> setting : settings.entrySet()) {
@ -42,28 +53,24 @@ public class ServerSpecificSettings {
continue;
}
config.set(path, value);
Log.debug(" " + path + ": " + value);
logger.debug(" " + path + ": " + value);
} catch (NullPointerException ignored) {
}
changedSomething = true;
}
if (changedSomething) {
try {
config.save();
} catch (IOException e) {
Log.toLog(ServerSpecificSettings.class, e);
}
Log.info("----------------------------------");
Log.info("The Received Bungee Settings changed the config values, restarting Plan..");
Log.info("----------------------------------");
config.save();
logger.info("----------------------------------");
logger.info("The Received Bungee Settings changed the config values, restarting Plan..");
logger.info("----------------------------------");
PlanPlugin.getInstance().reloadPlugin(true);
} else {
Log.debug("Settings up to date");
logger.debug("Settings up to date");
}
}
private static Object getValue(String value) {
private Object getValue(String value) {
try {
return Integer.parseInt(value);
} catch (Exception ignored) {
@ -77,19 +84,14 @@ public class ServerSpecificSettings {
return value;
}
public void addOriginalBukkitSettings(UUID serverUUID, Map<String, Object> settings) {
try {
Config config = ConfigSystem.getConfig_Old();
if (!Verify.isEmpty(config.getString("Servers." + serverUUID + ".ServerName"))) {
return;
}
for (Map.Entry<String, Object> entry : settings.entrySet()) {
config.set("Servers." + serverUUID + "." + entry.getKey(), entry.getValue());
}
config.save();
} catch (IOException e) {
Log.toLog(this.getClass(), e);
public void addOriginalBukkitSettings(UUID serverUUID, Map<String, Object> settings) throws IOException {
if (!Verify.isEmpty(config.getString("Servers." + serverUUID + ".ServerName"))) {
return;
}
for (Map.Entry<String, Object> entry : settings.entrySet()) {
config.set("Servers." + serverUUID + "." + entry.getKey(), entry.getValue());
}
config.save();
}
private String getPath(UUID serverUUID, Settings setting) {
@ -111,25 +113,21 @@ public class ServerSpecificSettings {
}
public boolean getBoolean(UUID serverUUID, Settings setting) {
Config config = ConfigSystem.getConfig_Old();
String path = getPath(serverUUID, setting);
return config.getBoolean(path);
}
public String getString(UUID serverUUID, Settings setting) {
Config config = ConfigSystem.getConfig_Old();
String path = getPath(serverUUID, setting);
return config.getString(path);
}
public Integer getInt(UUID serverUUID, Settings setting) {
Config config = ConfigSystem.getConfig_Old();
String path = getPath(serverUUID, setting);
return config.getInt(path);
}
public void set(UUID serverUUID, Settings setting, Object value) throws IOException {
Config config = ConfigSystem.getConfig_Old();
String path = getPath(serverUUID, setting);
config.set(path, value);
config.save();

View File

@ -2,7 +2,6 @@ package com.djrapitops.plan.system.settings;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plan.system.settings.config.Setting;
import com.djrapitops.plugin.api.Check;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.config.Config;
import com.djrapitops.plugin.utilities.Verify;
@ -108,8 +107,6 @@ public enum Settings implements Setting {
BUNGEE_IP("Server.IP"),
BUNGEE_NETWORK_NAME("Network.Name");
private static final ServerSpecificSettings serverSpecificSettings = new ServerSpecificSettings();
private final String configPath;
private Object tempValue;
@ -117,15 +114,6 @@ public enum Settings implements Setting {
this.configPath = path;
}
@Deprecated
public static ServerSpecificSettings serverSpecific() {
if (!Check.isBungeeAvailable()) {
throw new IllegalStateException("Not supposed to call this method on Bukkit");
}
return serverSpecificSettings;
}
@Deprecated
public static void save() {
try {
@ -198,6 +186,7 @@ public enum Settings implements Setting {
this.tempValue = value;
}
@Deprecated
public void set(Object value) {
getConfig().set(getPath(), value);
}

View File

@ -4,7 +4,10 @@
*/
package com.djrapitops.plan.system.settings.config;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.theme.Theme;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
@ -21,12 +24,23 @@ import java.io.IOException;
public class BukkitConfigSystem extends ConfigSystem {
@Inject
public BukkitConfigSystem(FileSystem fileSystem) {
super(fileSystem);
public BukkitConfigSystem(
FileSystem fileSystem,
PlanConfig config,
Theme theme,
ErrorHandler errorHandler
) {
super(fileSystem, config, theme, errorHandler);
}
@Override
protected void copyDefaults() throws IOException {
config.copyDefaults(fileSystem.readFromResource("config.yml"));
}
@Override
public void enable() throws EnableException {
super.enable();
config.getNetworkSettings().loadSettingsFromDB();
}
}

View File

@ -4,7 +4,10 @@
*/
package com.djrapitops.plan.system.settings.config;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.theme.Theme;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
@ -21,12 +24,23 @@ import java.io.IOException;
public class BungeeConfigSystem extends ConfigSystem {
@Inject
public BungeeConfigSystem(FileSystem fileSystem) {
super(fileSystem);
public BungeeConfigSystem(
FileSystem fileSystem,
PlanConfig config,
Theme theme,
ErrorHandler errorHandler
) {
super(fileSystem, config, theme, errorHandler);
}
@Override
protected void copyDefaults() throws IOException {
config.copyDefaults(fileSystem.readFromResource("bungeeconfig.yml"));
}
@Override
public void enable() throws EnableException {
super.enable();
config.getNetworkSettings().placeSettingsToDB();
}
}

View File

@ -11,6 +11,8 @@ import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.theme.Theme;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.logging.L;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import com.djrapitops.plugin.utilities.Verify;
import javax.inject.Singleton;
@ -24,15 +26,20 @@ import java.io.IOException;
@Singleton
public abstract class ConfigSystem implements SubSystem {
protected FileSystem fileSystem;
protected PlanConfig config;
protected final FileSystem fileSystem;
protected final PlanConfig config;
protected final Theme theme;
protected final ErrorHandler errorHandler;
public ConfigSystem(FileSystem fileSystem) {
public ConfigSystem(
FileSystem fileSystem,
PlanConfig config,
Theme theme, ErrorHandler errorHandler
) {
this.fileSystem = fileSystem;
config = new PlanConfig(fileSystem.getConfigFile());
theme = new Theme();
this.config = config;
this.theme = theme;
this.errorHandler = errorHandler;
}
@Deprecated
@ -88,7 +95,7 @@ public abstract class ConfigSystem implements SubSystem {
try {
config.read();
} catch (IOException e) {
Log.toLog(ConfigSystem.class, e);
errorHandler.log(L.ERROR, this.getClass(), e);
}
}
}

View File

@ -1,8 +1,11 @@
package com.djrapitops.plan.system.settings.config;
import com.djrapitops.plan.data.plugin.PluginsConfigSection;
import com.djrapitops.plan.system.settings.network.NetworkSettings;
import com.djrapitops.plugin.config.Config;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.util.List;
@ -14,9 +17,18 @@ import java.util.List;
public class PlanConfig extends Config {
private final PluginsConfigSection pluginsConfigSection;
private final NetworkSettings networkSettings;
public PlanConfig(File file) {
@Inject
public PlanConfig(
@Named("configFile") File file,
NetworkSettings networkSettings
) {
super(file);
this.networkSettings = networkSettings;
networkSettings.setConfig(this);
pluginsConfigSection = new PluginsConfigSection(this);
}
@ -57,4 +69,8 @@ public class PlanConfig extends Config {
public PluginsConfigSection getPluginsConfigSection() {
return pluginsConfigSection;
}
public NetworkSettings getNetworkSettings() {
return networkSettings;
}
}

View File

@ -3,7 +3,9 @@ package com.djrapitops.plan.system.settings.config;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.theme.Theme;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
@ -22,8 +24,14 @@ public class SpongeConfigSystem extends BukkitConfigSystem {
private boolean firstInstall;
@Inject
public SpongeConfigSystem(FileSystem fileSystem, PluginLogger logger) {
super(fileSystem);
public SpongeConfigSystem(
FileSystem fileSystem,
PlanConfig config,
Theme theme,
PluginLogger logger,
ErrorHandler errorHandler
) {
super(fileSystem, config, theme, errorHandler);
this.logger = logger;
}
@ -31,6 +39,7 @@ public class SpongeConfigSystem extends BukkitConfigSystem {
public void enable() throws EnableException {
firstInstall = !fileSystem.getConfigFile().exists();
super.enable();
config.getNetworkSettings().loadSettingsFromDB();
}
@Override

View File

@ -4,18 +4,22 @@
*/
package com.djrapitops.plan.system.settings.network;
import com.djrapitops.plan.api.exceptions.connection.UnsupportedTransferDatabaseException;
import com.djrapitops.plan.api.exceptions.database.DBOpException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.info.server.ServerInfo;
import com.djrapitops.plan.system.processing.Processing;
import com.djrapitops.plan.system.settings.ServerSpecificSettings;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.utilities.Base64Util;
import com.djrapitops.plugin.api.Check;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.logging.L;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import com.djrapitops.plugin.utilities.Verify;
import dagger.Lazy;
import javax.inject.Inject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
@ -33,62 +37,80 @@ public class NetworkSettings {
private static final String SPLIT = ";;SETTING;;";
private static final String VAL_SPLIT = ";;VALUE;;";
@Deprecated
public static void loadSettingsFromDB() {
private final Lazy<Database> database;
private final Lazy<ServerInfo> serverInfo;
private final PluginLogger logger;
private final ErrorHandler errorHandler;
private final ServerSpecificSettings serverSpecificSettings;
private PlanConfig config;
@Inject
public NetworkSettings(
ServerSpecificSettings serverSpecificSettings,
Lazy<Database> database,
Lazy<ServerInfo> serverInfo,
PluginLogger logger,
ErrorHandler errorHandler
) {
this.serverSpecificSettings = serverSpecificSettings;
this.database = database;
this.serverInfo = serverInfo;
this.logger = logger;
this.errorHandler = errorHandler;
}
public void setConfig(PlanConfig config) {
this.config = config;
serverSpecificSettings.setConfig(config);
}
public void loadSettingsFromDB() {
if (Check.isBungeeAvailable()) {
return;
}
if (BUNGEE_OVERRIDE_STANDALONE_MODE.isTrue() || BUNGEE_COPY_CONFIG.isFalse()) {
if (config.isTrue(BUNGEE_OVERRIDE_STANDALONE_MODE) || config.isFalse(BUNGEE_COPY_CONFIG)) {
// Don't load settings if they are overridden.
return;
}
Processing.submitNonCritical(() -> {
try {
new NetworkSettings().loadFromDatabase();
} catch (UnsupportedTransferDatabaseException e) {
Log.toLog(NetworkSettings.class, e);
}
});
Processing.submitNonCritical(this::loadFromDatabase);
}
@Deprecated
public static void placeSettingsToDB() {
public void placeSettingsToDB() {
if (!Check.isBungeeAvailable()) {
return;
}
Processing.submitCritical(() -> {
try {
new NetworkSettings().placeToDatabase();
} catch (DBOpException | UnsupportedTransferDatabaseException e) {
Log.toLog(NetworkSettings.class, e);
}
});
Processing.submitCritical(this::placeToDatabase);
}
public void loadFromDatabase() throws UnsupportedTransferDatabaseException {
Log.debug("NetworkSettings: Fetch Config settings from database..");
Optional<String> encodedConfigSettings = Database.getActive().transfer().getEncodedConfigSettings();
void loadFromDatabase() {
logger.debug("NetworkSettings: Fetch Config settings from database..");
Optional<String> encodedConfigSettings = database.get().transfer().getEncodedConfigSettings();
if (!encodedConfigSettings.isPresent()) {
Log.debug("NetworkSettings: No Config settings in database.");
logger.debug("NetworkSettings: No Config settings in database.");
return;
}
String configSettings = Base64Util.decode(encodedConfigSettings.get());
Map<String, String> pathValueMap = getPathsAndValues(configSettings);
Log.debug("NetworkSettings: Updating Settings");
ServerSpecificSettings.updateSettings(pathValueMap);
logger.debug("NetworkSettings: Updating Settings");
try {
serverSpecificSettings.updateSettings(pathValueMap);
} catch (IOException e) {
errorHandler.log(L.ERROR, this.getClass(), e);
}
}
private Map<String, String> getPathsAndValues(String configSettings) {
Map<String, String> pathValueMap = new HashMap<>();
Log.debug("NetworkSettings: Reading Config String..");
logger.debug("NetworkSettings: Reading Config String..");
String[] settings = configSettings.split(SPLIT);
UUID thisServerUUID = ServerInfo.getServerUUID_Old();
UUID thisServerUUID = serverInfo.get().getServerUUID();
for (String settingAndVal : settings) {
String[] settingValSplit = settingAndVal.split(VAL_SPLIT);
String setting = settingValSplit[0];
@ -110,10 +132,10 @@ public class NetworkSettings {
return pathValueMap;
}
public void placeToDatabase() throws UnsupportedTransferDatabaseException {
void placeToDatabase() {
Map<String, Object> configValues = getConfigValues();
Log.debug("NetworkSettings: Building Base64 String..");
logger.debug("NetworkSettings: Building Base64 String..");
StringBuilder transferBuilder = new StringBuilder();
int size = configValues.size();
int i = 0;
@ -131,12 +153,12 @@ public class NetworkSettings {
String base64 = Base64Util.encode(transferBuilder.toString());
Log.debug("NetworkSettings: Saving Config settings to database..");
Database.getActive().transfer().storeConfigSettings(base64);
logger.debug("NetworkSettings: Saving Config settings to database..");
database.get().transfer().storeConfigSettings(base64);
}
private Map<String, Object> getConfigValues() {
Log.debug("NetworkSettings: Loading Config Values..");
logger.debug("NetworkSettings: Loading Config Values..");
Map<String, Object> configValues = new HashMap<>();
addConfigValue(configValues, DB_TYPE, "mysql");
Settings[] sameStrings = new Settings[]{
@ -178,11 +200,11 @@ public class NetworkSettings {
KEEP_LOGS_DAYS,
KEEP_INACTIVE_PLAYERS_DAYS
};
Log.debug("NetworkSettings: Adding Config Values..");
logger.debug("NetworkSettings: Adding Config Values..");
for (Settings setting : sameStrings) {
addConfigValue(configValues, setting, setting.toString());
addConfigValue(configValues, setting, config.getString(setting));
}
addConfigValue(configValues, DB_PORT, DB_PORT.getNumber());
addConfigValue(configValues, DB_PORT, config.getNumber(DB_PORT));
addServerSpecificValues(configValues);
return configValues;
}
@ -200,13 +222,12 @@ public class NetworkSettings {
}
private void addServerSpecificValues(Map<String, Object> configValues) {
Log.debug("NetworkSettings: Adding Server-specific Config Values..");
ServerSpecificSettings settings = Settings.serverSpecific();
logger.debug("NetworkSettings: Adding Server-specific Config Values..");
for (UUID serverUUID : Database.getActive().fetch().getServerUUIDs()) {
String theme = settings.getString(serverUUID, THEME_BASE);
Integer port = settings.getInt(serverUUID, WEBSERVER_PORT);
String name = settings.getString(serverUUID, SERVER_NAME);
for (UUID serverUUID : database.get().fetch().getServerUUIDs()) {
String theme = serverSpecificSettings.getString(serverUUID, THEME_BASE);
Integer port = serverSpecificSettings.getInt(serverUUID, WEBSERVER_PORT);
String name = serverSpecificSettings.getString(serverUUID, SERVER_NAME);
if (!Verify.isEmpty(theme)) {
addConfigValue(configValues, serverUUID, THEME_BASE, theme);
@ -219,4 +240,8 @@ public class NetworkSettings {
}
}
}
public ServerSpecificSettings getServerSpecificSettings() {
return serverSpecificSettings;
}
}

View File

@ -4,14 +4,14 @@
*/
package com.djrapitops.plan.system.settings.theme;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.config.ConfigSystem;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.utilities.Verify;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.IOException;
import static com.djrapitops.plan.system.settings.theme.ThemeVal.*;
@ -23,9 +23,17 @@ import static com.djrapitops.plan.system.settings.theme.ThemeVal.*;
*
* @author Rsl1122
*/
@Singleton
public class Theme implements SubSystem {
private ThemeConfig config;
private final ThemeConfig config;
private final PluginLogger logger;
@Inject
public Theme(ThemeConfig config, PluginLogger logger) {
this.config = config;
this.logger = logger;
}
@Deprecated
public static Theme getInstance() {
@ -34,6 +42,7 @@ public class Theme implements SubSystem {
return themeSystem;
}
@Deprecated
public static String getValue(ThemeVal variable) {
try {
return getInstance().getThemeValue(variable);
@ -42,17 +51,17 @@ public class Theme implements SubSystem {
}
}
@Deprecated
public static String replaceColors(String resourceString) {
return getInstance().replaceThemeColors(resourceString);
}
@Override
public void enable() throws EnableException {
String themeName = Settings.THEME_BASE.toString();
try {
config = new ThemeConfig(themeName);
config.save();
} catch (IOException e) {
throw new EnableException("Default theme could not be loaded.", e);
throw new EnableException("theme.yml could not be saved.", e);
}
}
@ -71,12 +80,8 @@ public class Theme implements SubSystem {
} else {
return value;
}
} catch (IllegalStateException e) {
if (!PlanPlugin.getInstance().isReloading()) {
Log.error("Something went wrong with getting variable " + variable.name() + " for: " + path);
}
} catch (Exception | NoSuchFieldError e) {
Log.error("Something went wrong with getting variable " + variable.name() + " for: " + path);
logger.error("Something went wrong with getting variable " + variable.name() + " for: " + path);
}
return variable.getDefaultValue();
}

View File

@ -4,14 +4,18 @@
*/
package com.djrapitops.plan.system.settings.theme;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.utilities.file.FileUtil;
import com.djrapitops.plugin.api.config.Config;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plugin.config.Config;
import com.djrapitops.plugin.config.ConfigNode;
import com.djrapitops.plugin.logging.console.PluginLogger;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
@ -19,26 +23,35 @@ import java.util.List;
*
* @author Rsl1122
*/
@Singleton
public class ThemeConfig extends Config {
private ThemeConfig(File file, List<String> defaults) {
super(file, defaults);
@Inject
public ThemeConfig(FileSystem fileSystem, PlanConfig config, PluginLogger logger) {
this(getConfigFile(fileSystem), getDefaults(fileSystem, config, logger));
}
public ThemeConfig(String fileName) throws IOException {
this(getConfigFile(), getDefaults(fileName));
save();
private ThemeConfig(File configFile, List<String> defaults) {
super(configFile, defaults);
if (defaults.isEmpty()) {
ConfigNode util = new ConfigNode("", null, "");
for (ThemeVal themeVal : ThemeVal.values()) {
util.set(themeVal.getThemePath(), themeVal.getDefaultValue());
}
copyDefaults(util);
}
}
private static List<String> getDefaults(String fileName) throws IOException {
private static List<String> getDefaults(FileSystem fileSystem, PlanConfig config, PluginLogger logger) {
String fileName = config.getString(Settings.THEME_BASE);
String fileLocation = getFileLocation(fileName);
PlanPlugin plugin = PlanPlugin.getInstance();
try {
return FileUtil.lines(plugin, fileLocation);
return fileSystem.readFromResource(fileLocation);
} catch (IOException e) {
Log.error("Could not find theme " + fileLocation + ". Attempting to use default.");
return FileUtil.lines(plugin, "themes/theme.yml");
logger.error("Could not find theme " + fileLocation + ". Attempting to use default.");
return new ArrayList<>();
}
}
@ -69,15 +82,7 @@ public class ThemeConfig extends Config {
}
}
private static File getConfigFile() throws IOException {
File folder = PlanPlugin.getInstance().getDataFolder();
if (!folder.exists()) {
folder.mkdirs();
}
File themeFile = new File(folder, "theme.yml");
if (!themeFile.exists() && !themeFile.createNewFile()) {
throw new FileNotFoundException("Failed to create theme.yml");
}
return themeFile;
private static File getConfigFile(FileSystem fileSystem) {
return fileSystem.getFileFromPluginFolder("theme.yml");
}
}

View File

@ -15,7 +15,7 @@ import utilities.Teardown;
import utilities.mocks.BukkitMockUtil;
/**
* Test for BukkitSystem.
* Test for Bukkit PlanSystem.
*
* @author Rsl1122
*/
@ -25,7 +25,7 @@ public class BukkitSystemTest {
@ClassRule
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
private static Plan planMock;
private BukkitSystem bukkitSystem;
private PlanSystem bukkitSystem;
@BeforeClass
public static void setUpClass() throws Exception {

View File

@ -37,8 +37,8 @@ public class BungeeBukkitConnectionTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
private BukkitSystem bukkitSystem;
private BungeeSystem bungeeSystem;
private PlanSystem bukkitSystem;
private PlanSystem bungeeSystem;
private UUID bukkitUUID;
private UUID bungeeUUID;

View File

@ -16,7 +16,7 @@ import utilities.Teardown;
import utilities.mocks.BungeeMockUtil;
/**
* Test for BukkitSystem.
* Test for Bungee PlanSystem.
*
* @author Rsl1122
*/
@ -28,7 +28,7 @@ public class BungeeSystemTest {
private static PlanBungee planMock;
@Rule
public ExpectedException thrown = ExpectedException.none();
private BungeeSystem bungeeSystem;
private PlanSystem bungeeSystem;
@BeforeClass
public static void setUpClass() throws Exception {

View File

@ -15,7 +15,7 @@ import utilities.Teardown;
import utilities.mocks.SpongeMockUtil;
/**
* Test for BukkitSystem.
* Test for Sponge PlanSystem.
*
* @author Rsl1122
*/
@ -25,7 +25,7 @@ public class SpongeSystemTest {
@ClassRule
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
private static PlanSponge planMock;
private SpongeSystem spongeSystem;
private PlanSystem spongeSystem;
@BeforeClass
public static void setUpClass() throws Exception {

View File

@ -2,7 +2,7 @@ package com.djrapitops.plan.system.cache;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plugin.StaticHolder;
import org.junit.*;
@ -45,7 +45,7 @@ public class GeolocationCacheTest {
@Ignore
public void testGeolocationCache() throws EnableException {
Settings.WEBSERVER_PORT.setTemporaryValue(9005);
BukkitSystem system = null; //TODO
PlanSystem system = null; //TODO
try {
system.enable();

View File

@ -1,7 +1,6 @@
package com.djrapitops.plan.system.settings.network;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.connection.UnsupportedTransferDatabaseException;
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
import com.djrapitops.plan.system.info.server.Server;
@ -57,8 +56,9 @@ public class NetworkSettingsTest {
}
@Test
public void testTransfer() throws UnsupportedTransferDatabaseException {
NetworkSettings networkSettings = new NetworkSettings();
@Ignore
public void testTransfer() {
NetworkSettings networkSettings = null; // TODO new NetworkSettings();
networkSettings.placeToDatabase();
networkSettings.loadFromDatabase();
}

View File

@ -2,7 +2,7 @@ package com.djrapitops.plan.system.webserver;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.connection.*;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.utilities.Base64Util;
import org.junit.*;
@ -25,7 +25,7 @@ public class HTTPSWebServerAuthTest {
@ClassRule
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
private static BukkitSystem bukkitSystem;
private static PlanSystem bukkitSystem;
@BeforeClass
public static void setUpClass() throws Exception {

View File

@ -7,7 +7,7 @@ package utilities.mocks;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plugin.StaticHolder;
@ -22,7 +22,7 @@ import java.io.File;
*/
public class SystemMockUtil {
private BukkitSystem bukkitSystem;
private PlanSystem bukkitSystem;
public static SystemMockUtil setUp(File dataFolder) throws Exception {
StaticHolder.saveInstance(SystemMockUtil.class, Plan.class);