initiate and disable storage providers.
This commit is contained in:
parent
5ed4c32cc1
commit
2e2d370bc6
|
|
@ -4,7 +4,12 @@ import com.alttd.essentia.commands.admin.*;
|
|||
import com.alttd.essentia.commands.player.*;
|
||||
import com.alttd.essentia.configuration.Config;
|
||||
import com.alttd.essentia.listeners.PlayerListener;
|
||||
import com.alttd.essentia.storage.StorageManager;
|
||||
import com.alttd.essentia.storage.StorageProvider;
|
||||
import com.alttd.essentia.storage.StorageType;
|
||||
import com.alttd.essentia.storage.mysql.SQLStorageProvider;
|
||||
import com.alttd.essentia.user.EssentiaUserManager;
|
||||
import com.alttd.essentia.user.User;
|
||||
import com.alttd.essentia.user.UserManager;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
|
|
@ -18,6 +23,9 @@ public class EssentiaPlugin extends JavaPlugin implements EssentiaAPI {
|
|||
@Getter
|
||||
private UserManager userManager;
|
||||
|
||||
@Getter
|
||||
private StorageProvider storageProvider;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
instance = this;
|
||||
|
|
@ -30,11 +38,20 @@ public class EssentiaPlugin extends JavaPlugin implements EssentiaAPI {
|
|||
loadCommands();
|
||||
loadEventListeners();
|
||||
loadManagers();
|
||||
loadStorageProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
getServer().getScheduler().cancelTasks(this);
|
||||
for (User user : userManager().getUsers().values()) {
|
||||
try {
|
||||
storageProvider.save(user);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
storageProvider().disable();
|
||||
}
|
||||
|
||||
public void loadConfiguration() {
|
||||
|
|
@ -72,4 +89,10 @@ public class EssentiaPlugin extends JavaPlugin implements EssentiaAPI {
|
|||
userManager = new EssentiaUserManager();
|
||||
}
|
||||
|
||||
void loadStorageProvider() {
|
||||
StorageManager storageManager = new StorageManager(this);
|
||||
storageProvider = storageManager.storageProvider(StorageType.valueOf(Config.STORAGE_TYPE.toUpperCase()));
|
||||
storageProvider.startAutoSaving();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,6 +238,9 @@ public class Config {
|
|||
FEED_BY_OTHER = config.getString("messages.command.feed.feed-by-other", FEED_BY_OTHER);
|
||||
}
|
||||
|
||||
public static String STORAGE_TYPE = "mysql";
|
||||
public static boolean AUTO_SAVE = true;
|
||||
public static int AUTO_SAVE_DELAY = 60;
|
||||
public static String MYSQL_IP = "localhost";
|
||||
public static String MYSQL_PORT = "3306";
|
||||
public static String MYSQL_DATABASE_NAME = "essentia";
|
||||
|
|
@ -246,6 +249,9 @@ public class Config {
|
|||
public static int MYSQL_CONNECTIONS = 10;
|
||||
public static int MYSQL_QUEUE_DELAY = 5;
|
||||
private static void storage() {
|
||||
STORAGE_TYPE = config.getString("storage.type", STORAGE_TYPE);
|
||||
AUTO_SAVE = config.getBoolean("storage.auto-save", AUTO_SAVE);
|
||||
AUTO_SAVE_DELAY = config.getInt("storaeg.auto-save-delay", AUTO_SAVE_DELAY);
|
||||
MYSQL_IP = config.getString("storage.mysql.ip", MYSQL_IP);
|
||||
MYSQL_PORT = config.getString("storage.mysql.port", MYSQL_PORT);
|
||||
MYSQL_DATABASE_NAME = config.getString("storage.mysql.database", MYSQL_DATABASE_NAME);
|
||||
|
|
|
|||
|
|
@ -2,12 +2,11 @@ package com.alttd.essentia.storage;
|
|||
|
||||
import com.alttd.essentia.EssentiaPlugin;
|
||||
import com.alttd.essentia.storage.mysql.SQLStorageProvider;
|
||||
import com.alttd.essentia.storage.sqlite.SQLiteStorageProvider;
|
||||
import com.alttd.essentia.storage.yaml.YamlStorageProvider;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public abstract class StorageManager {
|
||||
public class StorageManager {
|
||||
|
||||
protected final EssentiaPlugin plugin;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package com.alttd.essentia.storage;
|
||||
|
||||
import com.alttd.essentia.EssentiaPlugin;
|
||||
import com.alttd.essentia.configuration.Config;
|
||||
import com.alttd.essentia.user.EssentiaUser;
|
||||
import com.alttd.essentia.user.User;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -10,6 +12,7 @@ import java.util.UUID;
|
|||
public abstract class StorageProvider {
|
||||
|
||||
protected final EssentiaPlugin plugin;
|
||||
private AutoSaveTask autoSaveTask;
|
||||
|
||||
public StorageProvider(EssentiaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
|
@ -24,9 +27,41 @@ public abstract class StorageProvider {
|
|||
return user;
|
||||
}
|
||||
|
||||
public void startAutoSaving() {
|
||||
if (!Config.AUTO_SAVE)
|
||||
return;
|
||||
|
||||
autoSaveTask = new AutoSaveTask();
|
||||
int delay = Config.AUTO_SAVE_DELAY * 20;
|
||||
autoSaveTask.runTaskTimerAsynchronously(plugin, delay, delay);
|
||||
}
|
||||
|
||||
public void disable() {
|
||||
// Override if some extra steps are required when disabling the plugin.
|
||||
}
|
||||
|
||||
protected abstract EssentiaUser load(UUID uuid);
|
||||
|
||||
public abstract void save(@NotNull User user) throws Exception;
|
||||
|
||||
public abstract void delete(UUID uuid) throws Exception;
|
||||
|
||||
private class AutoSaveTask extends BukkitRunnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (User user : plugin.userManager().getUsers().values()) {
|
||||
try {
|
||||
if (user.saving()) {
|
||||
continue;
|
||||
}
|
||||
save(user);
|
||||
} catch (Exception e) {
|
||||
user.saving(false);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ public class SQLStorageProvider extends StorageProvider {
|
|||
}
|
||||
}
|
||||
|
||||
public void unload() {
|
||||
@Override
|
||||
public void disable() {
|
||||
if (databaseQueue != null && !databaseQueue.isCancelled()) {
|
||||
databaseQueue.cancel();
|
||||
databaseQueue.runTaskQueue();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user