mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-16 20:19:13 +03:00
59 lines
1.5 KiB
Java
59 lines
1.5 KiB
Java
|
package ru.gravit.utils.config;
|
||
|
|
||
|
import ru.gravit.launcher.Launcher;
|
||
|
import ru.gravit.utils.helper.IOHelper;
|
||
|
|
||
|
import java.io.BufferedReader;
|
||
|
import java.io.BufferedWriter;
|
||
|
import java.io.IOException;
|
||
|
import java.lang.reflect.Type;
|
||
|
import java.nio.file.Path;
|
||
|
|
||
|
public abstract class JsonConfigurable<T> {
|
||
|
private Type type;
|
||
|
protected Path configPath;
|
||
|
public void saveConfig() throws IOException
|
||
|
{
|
||
|
saveConfig(configPath);
|
||
|
}
|
||
|
public void loadConfig() throws IOException
|
||
|
{
|
||
|
loadConfig(configPath);
|
||
|
}
|
||
|
|
||
|
public JsonConfigurable(Type type, Path configPath) {
|
||
|
this.type = type;
|
||
|
this.configPath = configPath;
|
||
|
}
|
||
|
|
||
|
public void saveConfig(Path configPath) throws IOException
|
||
|
{
|
||
|
try(BufferedWriter writer = IOHelper.newWriter(configPath))
|
||
|
{
|
||
|
Launcher.gson.toJson(getConfig(), type, writer);
|
||
|
}
|
||
|
}
|
||
|
public void loadConfig(Path configPath) throws IOException
|
||
|
{
|
||
|
try (BufferedReader reader = IOHelper.newReader(configPath)) {
|
||
|
setConfig(Launcher.gson.fromJson(reader, type));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void resetConfig() throws IOException
|
||
|
{
|
||
|
setConfig(getDefaultConfig());
|
||
|
saveConfig();
|
||
|
}
|
||
|
|
||
|
public void resetConfig(Path newPath) throws IOException
|
||
|
{
|
||
|
setConfig(getDefaultConfig());
|
||
|
saveConfig(newPath);
|
||
|
}
|
||
|
|
||
|
public abstract T getConfig();
|
||
|
public abstract T getDefaultConfig();
|
||
|
public abstract void setConfig(T config);
|
||
|
}
|