3
0
Fork 0
This repository has been archived on 2024-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
ThemePark/src/main/java/me/paradoxpixel/themepark/database/Database.java
2020-01-28 19:16:19 +01:00

132 lines
3.3 KiB
Java

package me.paradoxpixel.themepark.database;
import me.paradoxpixel.themepark.ThemeParkPlugin;
import me.paradoxpixel.themepark.config.YamlConfig;
import org.bukkit.Bukkit;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
public class Database {
public Database(YamlConfig config) {
if(config == null) {
enabled = false;
return;
}
enabled = config.getConfig().getBoolean("mysql.enabled");
String host = config.getConfig().getString("mysql.host");
int port = config.getConfig().getInt("mysql.port");
String database = config.getConfig().getString("mysql.database");
user = config.getConfig().getString("mysql.user");
password = config.getConfig().getString("mysql.password");
url = config.getConfig().getString("mysql.url");
url = url.replace("%host%", host);
url = url.replace("%port%", Integer.toString(port));
url = url.replace("%database%", database);
}
private boolean enabled;
private String user, password, url;
private Connection connection;
private int TaskID;
public boolean isEnabled() {
return enabled;
}
public void connect() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(url, user, password);
startPool();
} catch(Exception e) {
enabled = false;
e.printStackTrace();
}
}
public void disconnect() {
if(connection == null)
return;
try {
connection.close();
connection = null;
} catch(Exception e) {
e.printStackTrace();
}
}
private boolean connected() {
if(connection == null)
return false;
try {
return !connection.isClosed();
} catch(Exception e) {
e.printStackTrace();
}
return false;
}
private void startPool() {
TaskID = Bukkit.getScheduler().runTaskLater(ThemeParkPlugin.getInstance(), new Runnable() {
@Override
public void run() {
disconnect();
TaskID = 0;
}
}, 1200L).getTaskId();
}
private void stopPool() {
if(TaskID == 0)
return;
Bukkit.getScheduler().cancelTask(TaskID);
TaskID = 0;
}
public boolean execute(String query, HashMap<Integer, Object> objects) {
if(query == null || query.isEmpty())
return false;
if(!enabled)
return false;
if(!connected())
connect();
if(!connected())
return false;
stopPool();
try {
PreparedStatement statement = connection.prepareStatement(query);
if(objects != null)
for(Map.Entry<Integer, Object> entry : objects.entrySet())
statement.setObject(entry.getKey(), entry.getValue());
boolean b = statement.execute();
statement.close();
startPool();
return b;
} catch(Exception e) {
e.printStackTrace();
}
startPool();
return false;
}
}