initiate and disable storage providers.

This commit is contained in:
Len
2024-06-17 09:29:22 +02:00
parent 5ed4c32cc1
commit 2e2d370bc6
5 changed files with 67 additions and 3 deletions
@@ -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();