mirror of
https://github.com/TotalFreedomMC/TFGuilds.git
synced 2024-12-22 07:55:03 +00:00
Should automatically add kvps when needed
This commit is contained in:
parent
4d624b4f3b
commit
9221442fc5
3 changed files with 50 additions and 21 deletions
|
@ -6,6 +6,11 @@ import java.util.Collections;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import me.totalfreedom.tfguilds.command.*;
|
||||
import me.totalfreedom.tfguilds.config.Config;
|
||||
import me.totalfreedom.tfguilds.guild.Guild;
|
||||
|
@ -34,7 +39,7 @@ public class TFGuilds extends JavaPlugin
|
|||
public void onEnable()
|
||||
{
|
||||
plugin = this;
|
||||
config = new Config("config.yml");
|
||||
config = new Config(this,"config.yml");
|
||||
sqlDatabase = new SQLDatabase(this);
|
||||
User.loadAll();
|
||||
Guild.loadAll();
|
||||
|
@ -88,6 +93,19 @@ public class TFGuilds extends JavaPlugin
|
|||
return commands;
|
||||
}
|
||||
|
||||
private void forcedSQLPostLoad() {
|
||||
ExecutorService ex = Executors.newCachedThreadPool();
|
||||
Future<SQLDatabase> future = ex.submit(() -> new SQLDatabase(getPlugin()));
|
||||
try
|
||||
{
|
||||
sqlDatabase = future.get();
|
||||
}
|
||||
catch (InterruptedException | ExecutionException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void loadSubCommands()
|
||||
{
|
||||
subCommands.put("create", new CreateSubCommand());
|
||||
|
|
|
@ -22,10 +22,11 @@ public class Config extends YamlConfiguration
|
|||
private final TFGuilds plugin;
|
||||
private final String fileName;
|
||||
|
||||
public Config(String fileName)
|
||||
public Config(TFGuilds plugin, String fileName)
|
||||
{
|
||||
|
||||
this.fileName = fileName;
|
||||
plugin = TFGuilds.getPlugin();
|
||||
this.plugin = plugin;
|
||||
this.file = new File(plugin.getDataFolder(), fileName);
|
||||
|
||||
if (!file.exists())
|
||||
|
@ -67,10 +68,23 @@ public class Config extends YamlConfiguration
|
|||
YamlConfiguration reader = YamlConfiguration.loadConfiguration(stream);
|
||||
YamlConfiguration writer = YamlConfiguration.loadConfiguration(file);
|
||||
|
||||
reader.getKeys(true).forEach(key -> {
|
||||
if (!writer.contains(key)) {
|
||||
writer.set(key, reader.get(key));
|
||||
AtomicBoolean shouldSave = new AtomicBoolean(false);
|
||||
|
||||
try {
|
||||
reader.getKeys(true).forEach(key -> {
|
||||
if (!writer.contains(key)) writer.set(key, reader.get(key));
|
||||
if (!shouldSave.get()) shouldSave.set(true);
|
||||
});
|
||||
if (shouldSave.get()) {
|
||||
writer.save(file);
|
||||
}
|
||||
});
|
||||
} catch (IOException ex) {
|
||||
TFGuilds.getPlugin()
|
||||
.getLogger()
|
||||
.severe("Error attempting to verify configuration: \n"
|
||||
+ ex.getMessage()
|
||||
+ "\nCaused by: "
|
||||
+ ex.getCause());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,21 +22,18 @@ public class SQLDatabase
|
|||
}
|
||||
try
|
||||
{
|
||||
switch (ConfigEntry.CONNECTION_TYPE.getString().toLowerCase())
|
||||
if ("mysql".equals(ConfigEntry.CONNECTION_TYPE.getString().toLowerCase()))
|
||||
{
|
||||
case "sqlite":
|
||||
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
|
||||
break;
|
||||
case "mysql":
|
||||
connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:%d/%s",
|
||||
ConfigEntry.MYSQL_HOST.getString(),
|
||||
ConfigEntry.MYSQL_PORT.getInteger(),
|
||||
ConfigEntry.MYSQL_DATABASE.getString()),
|
||||
ConfigEntry.MYSQL_USERNAME.getString(),
|
||||
password);
|
||||
break;
|
||||
default:
|
||||
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
|
||||
connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:%d/%s",
|
||||
ConfigEntry.MYSQL_HOST.getString(),
|
||||
ConfigEntry.MYSQL_PORT.getInteger(),
|
||||
ConfigEntry.MYSQL_DATABASE.getString()),
|
||||
ConfigEntry.MYSQL_USERNAME.getString(),
|
||||
password);
|
||||
}
|
||||
else
|
||||
{
|
||||
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
|
||||
}
|
||||
|
||||
createTables();
|
||||
|
|
Loading…
Reference in a new issue