package net.shockverse.survivalgames.extras;
import net.shockverse.survivalgames.SurvivalGames;
import net.shockverse.survivalgames.core.Logger;
import com.alta189.sqlLibrary.SQL.SQLCore;
import com.alta189.sqlLibrary.SQL.SQLCore.SQLMode;
import java.sql.ResultSet;
import net.shockverse.survivalgames.core.Constants;
/**
* @description Handles database connections
* @author Duker02, LegitModern, Tagette
*/
public class DataManager {
private SurvivalGames plugin;
private SQLCore dbCore;
public boolean connected;
/*
* Initializes the DataManager class.
*
* @param instance An instance of the plugin's main class.
*/
public DataManager(SurvivalGames instance, SQLMode mode) {
plugin = instance;
if (mode == SQLMode.MySQL) {
dbCore = new SQLCore(plugin.getLogger(), Logger.getPrefix(), plugin.getSettings().MySQLHost,
plugin.getSettings().MySQLUser, plugin.getSettings().MySQLPass, plugin.getSettings().MySQLDBName);
} else if (mode == SQLMode.SQLite) {
dbCore = new SQLCore(plugin.getLogger(), Logger.getPrefix(),
plugin.getDataFolder().getPath() + "/Data", plugin.name);
}
if (dbCore.initialize()) {
if(!plugin.getSettings().LowDetailMode) {
connected = true;
Logger.info("Database connection established.");
}
} else {
Logger.error("Database connection failed.");
}
}
/*
* Used for more advanced database interactions.
*/
public SQLCore getDbCore() {
return dbCore;
}
/*
* Used to create a table in the database.
*/
public boolean createTable(String query) {
boolean wasCreated = false;
if(Constants.databaseEnabled) {
plugin.getDebug().normal("Database.createTable Query: \"" + query + "\"");
wasCreated = dbCore.createTable(query);
}
return wasCreated;
}
/*
* Deletes a table from the database.
*/
public boolean deleteTable(String tableName) {
boolean wasDeleted = false;
if (!tableName.isEmpty()) {
String query = "DROP TABLE '" + tableName + "'";
wasDeleted = update(query);
} else {
Logger.error("Database.DeleteTable: Could not delete table because table name was empty.");
}
return wasDeleted;
}
public boolean execute(String query) {
boolean wasCreated = false;
if(Constants.databaseEnabled) {
plugin.getDebug().normal("Database.execute Query: \"" + query + "\"");
wasCreated = dbCore.insertQuery(query);
}
return wasCreated;
}
public boolean update(String query) {
if(Constants.databaseEnabled) {
plugin.getDebug().normal("Database.update Query: \"" + query + "\"");
}
return dbCore.updateQuery(query);
}
public boolean insert(String query) {
if(Constants.databaseEnabled) {
plugin.getDebug().normal("Database.insert Query: \"" + query + "\"");
}
return dbCore.insertQuery(query);
}
public ResultSet query(String query) {
if(Constants.databaseEnabled) {
plugin.getDebug().normal("Database.query Query: \"" + query + "\"");
}
return dbCore.sqlQuery(query);
}
public boolean tableExists(String tableName) {
return dbCore.checkTable(tableName);
}
public boolean fieldExists(String tableName, String fieldName) {
return dbCore.checkField(tableName, fieldName);
}
}