mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-16 05:01:43 +01:00
WorldAliasSettings doesn't require Plan as variable anymore
This commit is contained in:
parent
890b2a318f
commit
706b8f1c8d
@ -8,7 +8,7 @@ import com.djrapitops.plugin.api.config.Config;
|
|||||||
import com.djrapitops.plugin.api.config.ConfigNode;
|
import com.djrapitops.plugin.api.config.ConfigNode;
|
||||||
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 main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.systems.store.config.ConfigSystem;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -21,17 +21,6 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class WorldAliasSettings {
|
public class WorldAliasSettings {
|
||||||
|
|
||||||
private final Plan plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @param plugin Current instance of Plan.
|
|
||||||
*/
|
|
||||||
public WorldAliasSettings(Plan plugin) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to get all World aliases in the config
|
* Used to get all World aliases in the config
|
||||||
*
|
*
|
||||||
@ -48,7 +37,7 @@ public class WorldAliasSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ConfigNode getAliasSection() {
|
private ConfigNode getAliasSection() {
|
||||||
Config config = plugin.getMainConfig();
|
Config config = ConfigSystem.getInstance().getConfig();
|
||||||
return config.getConfigNode(Settings.WORLD_ALIASES.getPath());
|
return config.getConfigNode(Settings.WORLD_ALIASES.getPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,104 +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 main.java.com.djrapitops.plan.systems;
|
|
||||||
|
|
||||||
import com.djrapitops.plugin.api.Benchmark;
|
|
||||||
import com.djrapitops.plugin.api.Check;
|
|
||||||
import com.djrapitops.plugin.api.utility.log.Log;
|
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
|
||||||
import main.java.com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
|
||||||
import main.java.com.djrapitops.plan.api.exceptions.PlanEnableException;
|
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
|
||||||
import main.java.com.djrapitops.plan.database.databases.MySQLDB;
|
|
||||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
|
||||||
import main.java.com.djrapitops.plan.settings.Settings;
|
|
||||||
import main.java.com.djrapitops.plan.settings.locale.Locale;
|
|
||||||
import main.java.com.djrapitops.plan.settings.locale.Msg;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* //TODO Class Javadoc Comment
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
*/
|
|
||||||
public class DatabaseSystem implements SubSystem {
|
|
||||||
|
|
||||||
private Database db;
|
|
||||||
private Set<Database> databases;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() throws PlanEnableException {
|
|
||||||
try {
|
|
||||||
Benchmark.start("Init Database");
|
|
||||||
Log.info(Locale.get(Msg.ENABLE_DB_INIT).toString());
|
|
||||||
initDatabase();
|
|
||||||
Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName()));
|
|
||||||
Benchmark.stop("Systems", "Init Database");
|
|
||||||
} catch (DatabaseInitException e) {
|
|
||||||
throw new PlanEnableException(db.getConfigName() + "-Database failed to initialize", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initDatabase() throws DatabaseInitException {
|
|
||||||
if (Check.isBungeeAvailable()) {
|
|
||||||
db = new MySQLDB();
|
|
||||||
} else {
|
|
||||||
// Enables database on Bukkit
|
|
||||||
// Bukkit supports SQLite.
|
|
||||||
initPlanDatabase();
|
|
||||||
}
|
|
||||||
db.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initPlanDatabase() throws DatabaseInitException {
|
|
||||||
databases = new HashSet<>();
|
|
||||||
databases.add(new MySQLDB());
|
|
||||||
databases.add(new SQLiteDB());
|
|
||||||
|
|
||||||
String dbType = Settings.DB_TYPE.toString().toLowerCase().trim();
|
|
||||||
db = getActiveDatabase(dbType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Database> getDatabases() {
|
|
||||||
return databases;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDatabases(Set<Database> databases) {
|
|
||||||
this.databases = databases;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
try {
|
|
||||||
if (db != null) {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Log.toLog(this.getClass().getName(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DatabaseSystem getInstance() {
|
|
||||||
return Systems.getInstance().databaseSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Database getActiveDatabase() {
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Database getActiveDatabase(String dbName) throws DatabaseInitException {
|
|
||||||
for (Database database : DatabaseSystem.getInstance().getDatabases()) {
|
|
||||||
String dbConfigName = database.getConfigName();
|
|
||||||
if (Verify.equalsIgnoreCase(dbName, dbConfigName)) {
|
|
||||||
database.init();
|
|
||||||
return database;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new DatabaseInitException(Locale.get(Msg.ENABLE_FAIL_WRONG_DB) + " " + dbName);
|
|
||||||
}
|
|
||||||
}
|
|
@ -49,7 +49,7 @@ public class PlanGamemodeChangeListener implements Listener {
|
|||||||
String gameMode = event.getNewGameMode().name();
|
String gameMode = event.getNewGameMode().name();
|
||||||
String worldName = p.getWorld().getName();
|
String worldName = p.getWorld().getName();
|
||||||
|
|
||||||
new WorldAliasSettings(plugin).addWorld(worldName);
|
new WorldAliasSettings().addWorld(worldName);
|
||||||
|
|
||||||
Optional<Session> cachedSession = plugin.getDataCache().getCachedSession(uuid);
|
Optional<Session> cachedSession = plugin.getDataCache().getCachedSession(uuid);
|
||||||
cachedSession.ifPresent(session -> session.changeState(worldName, gameMode, time));
|
cachedSession.ifPresent(session -> session.changeState(worldName, gameMode, time));
|
||||||
|
@ -31,7 +31,7 @@ public class PlanWorldChangeListener implements Listener {
|
|||||||
String gameMode = p.getGameMode().name();
|
String gameMode = p.getGameMode().name();
|
||||||
long time = MiscUtils.getTime();
|
long time = MiscUtils.getTime();
|
||||||
|
|
||||||
new WorldAliasSettings(plugin).addWorld(worldName);
|
new WorldAliasSettings().addWorld(worldName);
|
||||||
|
|
||||||
Optional<Session> cachedSession = plugin.getDataCache().getCachedSession(uuid);
|
Optional<Session> cachedSession = plugin.getDataCache().getCachedSession(uuid);
|
||||||
cachedSession.ifPresent(session -> session.changeState(worldName, gameMode, time));
|
cachedSession.ifPresent(session -> session.changeState(worldName, gameMode, time));
|
||||||
|
@ -26,7 +26,11 @@ public class FileSystem implements SubSystem {
|
|||||||
private File configFile;
|
private File configFile;
|
||||||
|
|
||||||
public FileSystem(IPlan plugin) {
|
public FileSystem(IPlan plugin) {
|
||||||
dataFolder = plugin.getDataFolder();
|
this(plugin.getDataFolder());
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileSystem(File dataFolder) {
|
||||||
|
this.dataFolder = dataFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FileSystem getInstance() {
|
public static FileSystem getInstance() {
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
package main.java.com.djrapitops.plan.utilities.html.graphs.pie;
|
package main.java.com.djrapitops.plan.utilities.html.graphs.pie;
|
||||||
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
|
||||||
import main.java.com.djrapitops.plan.data.time.GMTimes;
|
import main.java.com.djrapitops.plan.data.time.GMTimes;
|
||||||
import main.java.com.djrapitops.plan.data.time.WorldTimes;
|
import main.java.com.djrapitops.plan.data.time.WorldTimes;
|
||||||
import main.java.com.djrapitops.plan.settings.Settings;
|
import main.java.com.djrapitops.plan.settings.Settings;
|
||||||
import main.java.com.djrapitops.plan.settings.WorldAliasSettings;
|
import main.java.com.djrapitops.plan.settings.WorldAliasSettings;
|
||||||
import main.java.com.djrapitops.plan.settings.theme.ThemeVal;
|
|
||||||
import main.java.com.djrapitops.plan.settings.theme.Theme;
|
import main.java.com.djrapitops.plan.settings.theme.Theme;
|
||||||
|
import main.java.com.djrapitops.plan.settings.theme.ThemeVal;
|
||||||
import main.java.com.djrapitops.plan.utilities.comparators.PieSliceComparator;
|
import main.java.com.djrapitops.plan.utilities.comparators.PieSliceComparator;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -64,14 +63,14 @@ public class WorldPie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, Long> transformToAliases(Map<String, Long> playtimePerWorld) {
|
private static Map<String, Long> transformToAliases(Map<String, Long> playtimePerWorld) {
|
||||||
WorldAliasSettings aliasSettings = new WorldAliasSettings(Plan.getInstance());
|
WorldAliasSettings aliasSettings = new WorldAliasSettings();
|
||||||
Map<String, String> aliases = aliasSettings.getAliases();
|
Map<String, String> aliases = aliasSettings.getAliases();
|
||||||
return transformToAliases(playtimePerWorld, aliases);
|
return transformToAliases(playtimePerWorld, aliases);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, Long> transformToAliases(Map<String, Long> playtimePerWorld, Map<String, String> aliases) {
|
public static Map<String, Long> transformToAliases(Map<String, Long> playtimePerWorld, Map<String, String> aliases) {
|
||||||
// TODO Optimization is possible
|
// TODO Optimization is possible
|
||||||
WorldAliasSettings aliasSettings = new WorldAliasSettings(Plan.getInstance());
|
WorldAliasSettings aliasSettings = new WorldAliasSettings();
|
||||||
|
|
||||||
Map<String, Long> playtimePerAlias = new HashMap<>();
|
Map<String, Long> playtimePerAlias = new HashMap<>();
|
||||||
for (Map.Entry<String, Long> entry : playtimePerWorld.entrySet()) {
|
for (Map.Entry<String, Long> entry : playtimePerWorld.entrySet()) {
|
||||||
@ -121,7 +120,7 @@ public class WorldPie {
|
|||||||
|
|
||||||
private static Map<String, GMTimes> transformToGMAliases(Map<String, GMTimes> gmTimesMap) {
|
private static Map<String, GMTimes> transformToGMAliases(Map<String, GMTimes> gmTimesMap) {
|
||||||
// TODO Optimization is possible
|
// TODO Optimization is possible
|
||||||
WorldAliasSettings aliasSettings = new WorldAliasSettings(Plan.getInstance());
|
WorldAliasSettings aliasSettings = new WorldAliasSettings();
|
||||||
Map<String, String> aliases = aliasSettings.getAliases();
|
Map<String, String> aliases = aliasSettings.getAliases();
|
||||||
|
|
||||||
Map<String, GMTimes> gmTimesPerAlias = new HashMap<>();
|
Map<String, GMTimes> gmTimesPerAlias = new HashMap<>();
|
||||||
|
@ -105,7 +105,7 @@ public class SessionsTableCreator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getLongestWorldPlayed(Session session) {
|
public static String getLongestWorldPlayed(Session session) {
|
||||||
WorldAliasSettings aliasSettings = new WorldAliasSettings(Plan.getInstance());
|
WorldAliasSettings aliasSettings = new WorldAliasSettings();
|
||||||
Map<String, String> aliases = aliasSettings.getAliases();
|
Map<String, String> aliases = aliasSettings.getAliases();
|
||||||
if (session.getSessionEnd() == -1) {
|
if (session.getSessionEnd() == -1) {
|
||||||
return "Current: " + aliases.get(session.getWorldTimes().getCurrentWorld());
|
return "Current: " + aliases.get(session.getWorldTimes().getCurrentWorld());
|
||||||
|
34
Plan/test/test/java/utils/testsystem/TestConfigSystem.java
Normal file
34
Plan/test/test/java/utils/testsystem/TestConfigSystem.java
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* 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 test.java.utils.testsystem;
|
||||||
|
|
||||||
|
import main.java.com.djrapitops.plan.systems.store.config.ConfigSystem;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* //TODO Class Javadoc Comment
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class TestConfigSystem extends ConfigSystem {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void copyDefaults() throws IOException {
|
||||||
|
File file = new File(getClass().getResource("/config.yml").getPath());
|
||||||
|
Scanner scanner = new Scanner(new FileInputStream(file));
|
||||||
|
|
||||||
|
List<String> lines = new ArrayList<>();
|
||||||
|
while (scanner.hasNextLine()) {
|
||||||
|
lines.add(scanner.nextLine());
|
||||||
|
}
|
||||||
|
config.copyDefaults(lines);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user