Migrate abstract Database to JDBC;

This commit is contained in:
HarvelsX 2023-06-08 19:01:18 +03:00
parent 209083b3ef
commit 9c230f9c09
No known key found for this signature in database
GPG Key ID: 6ABE2A78D32F8181
1 changed files with 9 additions and 12 deletions

View File

@ -1,29 +1,26 @@
package com.pretzel.dev.villagertradelimiter.database;
import com.pretzel.dev.villagertradelimiter.VillagerTradeLimiter;
import com.pretzel.dev.villagertradelimiter.lib.Callback;
import com.pretzel.dev.villagertradelimiter.lib.Util;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.plugin.java.JavaPlugin;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.bukkit.configuration.ConfigurationSection;
public abstract class Database {
protected final JavaPlugin instance;
protected final VillagerTradeLimiter instance;
public Database(final JavaPlugin instance) {
public Database(final VillagerTradeLimiter instance) {
this.instance = instance;
}
//Tests a DataSource
public void test() {
try {
try (Connection conn = this.getSource().getConnection()) {
try (Connection conn = this.getConnection()) {
if (!conn.isValid(1000)) throw new SQLException("Could not connect to database!");
else Util.consoleMsg("Connected to database!");
}
@ -34,7 +31,7 @@ public abstract class Database {
//Executes a statement or query in the database
public ArrayList<String> execute(final String sql, boolean query) {
try(Connection conn = this.getSource().getConnection(); PreparedStatement statement = conn.prepareStatement(sql)) {
try(Connection conn = this.getConnection(); PreparedStatement statement = conn.prepareStatement(sql)) {
if(query) {
final ResultSet result = statement.executeQuery();
int columns = result.getMetaData().getColumnCount();
@ -53,13 +50,13 @@ public abstract class Database {
return null;
}
public void execute(final String sql, boolean query, final Callback<ArrayList<String>> callback) {
Bukkit.getScheduler().runTaskAsynchronously(this.instance, () -> {
instance.getScheduler().runAsync(() -> {
final ArrayList<String> result = execute(sql, query);
if(callback != null) Bukkit.getScheduler().runTask(this.instance, () -> callback.call(result));
if(callback != null) instance.getScheduler().runAsync(() -> callback.call(result));
});
}
public abstract void load(final ConfigurationSection cfg);
public abstract boolean isMySQL();
protected abstract DataSource getSource();
protected abstract Connection getConnection() throws SQLException;
}