Skip to content
Snippets Groups Projects
Commit 89c64d3b authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Mise à jour du paquet client MariaDB comportant un bug.

https://jira.mariadb.org/browse/CONJ-935?jql=project%20%3D%20CONJ%20AND%20component%20%3D%20metadata
Ajout de bjloquent, création du modèle correspondant à la table des paramètres utilisateurs et début du remplacement des anciennes requêtes SQL pour des appels à bjLoquent.
parent ff6a2d92
No related branches found
No related tags found
No related merge requests found
Pipeline #111 passed
......@@ -6,6 +6,11 @@
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jitpack.io" />
<option name="name" value="jitpack.io" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="sonatype" />
<option name="name" value="sonatype" />
......
......@@ -67,6 +67,10 @@
<id>placeholderapi</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
......@@ -80,7 +84,7 @@
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.2-rc</version>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>me.clip</groupId>
......@@ -94,5 +98,11 @@
<version>5.4</version>
<scope>provided</scope>
</dependency>
<!-- Version du 22 Avril 2023 -->
<dependency>
<groupId>com.github.SofianeLasri</groupId>
<artifactId>bjLoquent</artifactId>
<version>6729e4b</version>
</dependency>
</dependencies>
</project>
......@@ -7,6 +7,7 @@ import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer;
import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent;
import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler;
import com.slprojects.slcraftplugin.utils.ConsoleLog;
import com.slprojects.slcraftplugin.utils.Database;
import me.clip.placeholderapi.PlaceholderAPI;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.cacheddata.CachedMetaData;
......@@ -27,6 +28,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONObject;
import org.mariadb.jdbc.MariaDbPoolDataSource;
import javax.xml.crypto.Data;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
......@@ -52,6 +54,7 @@ public final class Main extends JavaPlugin implements Listener {
public PlayerDataHandler playerDataHandler;
public Wild wildCommand;
public PeriodicEvent periodicEvent;
public static Connection databaseConnection = null;
@Override
public void onEnable() {
......@@ -83,6 +86,11 @@ public final class Main extends JavaPlugin implements Listener {
}
// Plugin startup logic
try {
databaseConnection = Database.bddOpenConn();
} catch (SQLException e) {
throw new RuntimeException(e);
}
saveDefaultConfig();
reloadConfig();
config = getConfig();
......@@ -113,6 +121,12 @@ public final class Main extends JavaPlugin implements Listener {
ConsoleLog.danger("Plugin désactivé, au revoir!");
getServer().getOnlinePlayers().forEach(player -> playerDataHandler.quitEvent(player));
try {
Database.bddCloseConn();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
......
package com.slprojects.slcraftplugin.models;
import org.bjloquent.Model;
public class UserSetting extends Model {
private String uuid;
private String name;
private String value;
public UserSetting() {
super.tableName = "site_userSetting";
super.primaryKeyName = "uuid";
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package com.slprojects.slcraftplugin.utils;
import com.slprojects.slcraftplugin.Main;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import org.mariadb.jdbc.MariaDbPoolDataSource;
import com.slprojects.slcraftplugin.models.UserSetting;
import com.slprojects.slcraftplugin.utils.database.Configuration;
import org.bjloquent.Connector;
import org.bjloquent.Model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import static org.bukkit.Bukkit.getServer;
import java.util.List;
@SuppressWarnings("UnusedReturnValue")
public class Database {
static final private String userSettingsTabName = "site_userSetting";
static Connection connection = null;
static Connector jLoquentConnector = null;
/**
* Récupère une valeur dans la table site_userSetting
......@@ -24,36 +24,18 @@ public class Database {
* @return Valeur de la clé
*/
public static String getUserSetting(String uuid, String key) {
Connection con;
try {
con = bddOpenConn();
} catch (SQLException e) {
ConsoleLog.danger("Impossible d'ouvrir la connexion à la bdd.");
throw new RuntimeException(e);
}
String returnValue = null;
List<UserSetting> settings = Model.where(
UserSetting.class,
new String[]{"uuid", "name"},
new String[]{"=", "="},
new String[]{uuid, key}
);
try {
PreparedStatement query = con.prepareStatement("SELECT * FROM " + userSettingsTabName + " WHERE uuid = ? AND name = ?");
query.setString(1, uuid);
query.setString(2, key);
ResultSet result = query.executeQuery();
if (result.next()) {
returnValue = result.getString("value");
}
} catch (SQLException e) {
ConsoleLog.danger("Erreur lors de l'exécution de la requête sql." + e);
if (settings.size() != 1) {
return null;
}
// On ferme la bdd
try {
con.close();
} catch (SQLException e) {
ConsoleLog.danger("Impossible de fermer la connexion à la bdd.");
e.printStackTrace();
}
return returnValue;
return (settings.get(0)).getValue();
}
/**
......@@ -139,37 +121,17 @@ public class Database {
* @return Connection
*/
public static Connection bddOpenConn() throws SQLException {
Plugin plugin = getServer().getPluginManager().getPlugin(Main.pluginName);
if (plugin == null) {
throw new IllegalStateException("Le plugin " + Main.pluginName + " n'a pas été trouvé.");
}
FileConfiguration config = plugin.getConfig();
String connectionString = "jdbc:mariadb://" + config.getString("database.host");
connectionString += "/" + config.getString("database.database");
connectionString += "?user=" + config.getString("database.user");
connectionString += "&password=" + config.getString("database.password");
connectionString += "&maxPoolSize=10";
MariaDbPoolDataSource dataSource = new MariaDbPoolDataSource(connectionString);
try (Connection conn = dataSource.getConnection()) {
if (!conn.isValid(1000)) {
throw new SQLException("Could not establish database connection.");
}
jLoquentConnector = Connector.getInstance();
jLoquentConnector.setDBConfig(new Configuration());
connection = jLoquentConnector.open();
return connection;
}
testDataSource(dataSource);
return dataSource.getConnection();
}
private static void testDataSource(MariaDbPoolDataSource dataSource) throws SQLException {
try (Connection conn = dataSource.getConnection()) {
if (!conn.isValid(1000)) {
throw new SQLException("Erreur lors de la connexion à la base de données.");
}
}
/**
* Ferme la connexion à la base de données
*/
public static void bddCloseConn() throws SQLException {
connection.close();
jLoquentConnector.close();
}
}
package com.slprojects.slcraftplugin.utils.database;
import com.slprojects.slcraftplugin.Main;
import org.bjloquent.DBConfig;
import org.bjloquent.DatabaseType;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import static org.bukkit.Bukkit.getServer;
public class Configuration implements DBConfig {
FileConfiguration config = null;
public Configuration() {
Plugin plugin = getServer().getPluginManager().getPlugin(Main.pluginName);
if (plugin == null) {
throw new IllegalStateException("Le plugin " + Main.pluginName + " n'a pas été trouvé.");
}
config = plugin.getConfig();
}
@Override
public DatabaseType getDatabaseType() {
return DatabaseType.MARIADB;
}
@Override
public String getHostName() {
return config.getString("database.host");
}
@Override
public String getPortNumber() {
return config.getString("database.port");
}
@Override
public String getDatabaseName() {
return config.getString("database.database");
}
@Override
public String getUsername() {
return config.getString("database.user");
}
@Override
public String getPassword() {
return config.getString("database.password");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment