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 @@ ...@@ -6,6 +6,11 @@
<option name="name" value="Central Repository" /> <option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" /> <option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository> </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> <remote-repository>
<option name="id" value="sonatype" /> <option name="id" value="sonatype" />
<option name="name" value="sonatype" /> <option name="name" value="sonatype" />
......
...@@ -67,6 +67,10 @@ ...@@ -67,6 +67,10 @@
<id>placeholderapi</id> <id>placeholderapi</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url> <url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository> </repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
...@@ -80,7 +84,7 @@ ...@@ -80,7 +84,7 @@
<dependency> <dependency>
<groupId>org.mariadb.jdbc</groupId> <groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId> <artifactId>mariadb-java-client</artifactId>
<version>3.0.2-rc</version> <version>3.1.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>me.clip</groupId> <groupId>me.clip</groupId>
...@@ -94,5 +98,11 @@ ...@@ -94,5 +98,11 @@
<version>5.4</version> <version>5.4</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Version du 22 Avril 2023 -->
<dependency>
<groupId>com.github.SofianeLasri</groupId>
<artifactId>bjLoquent</artifactId>
<version>6729e4b</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -7,6 +7,7 @@ import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer; ...@@ -7,6 +7,7 @@ import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer;
import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent; import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent;
import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler; import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler;
import com.slprojects.slcraftplugin.utils.ConsoleLog; import com.slprojects.slcraftplugin.utils.ConsoleLog;
import com.slprojects.slcraftplugin.utils.Database;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPerms;
import net.luckperms.api.cacheddata.CachedMetaData; import net.luckperms.api.cacheddata.CachedMetaData;
...@@ -27,6 +28,7 @@ import org.bukkit.plugin.java.JavaPlugin; ...@@ -27,6 +28,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.mariadb.jdbc.MariaDbPoolDataSource; import org.mariadb.jdbc.MariaDbPoolDataSource;
import javax.xml.crypto.Data;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
...@@ -52,6 +54,7 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -52,6 +54,7 @@ public final class Main extends JavaPlugin implements Listener {
public PlayerDataHandler playerDataHandler; public PlayerDataHandler playerDataHandler;
public Wild wildCommand; public Wild wildCommand;
public PeriodicEvent periodicEvent; public PeriodicEvent periodicEvent;
public static Connection databaseConnection = null;
@Override @Override
public void onEnable() { public void onEnable() {
...@@ -83,6 +86,11 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -83,6 +86,11 @@ public final class Main extends JavaPlugin implements Listener {
} }
// Plugin startup logic // Plugin startup logic
try {
databaseConnection = Database.bddOpenConn();
} catch (SQLException e) {
throw new RuntimeException(e);
}
saveDefaultConfig(); saveDefaultConfig();
reloadConfig(); reloadConfig();
config = getConfig(); config = getConfig();
...@@ -113,6 +121,12 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -113,6 +121,12 @@ public final class Main extends JavaPlugin implements Listener {
ConsoleLog.danger("Plugin désactivé, au revoir!"); ConsoleLog.danger("Plugin désactivé, au revoir!");
getServer().getOnlinePlayers().forEach(player -> playerDataHandler.quitEvent(player)); getServer().getOnlinePlayers().forEach(player -> playerDataHandler.quitEvent(player));
try {
Database.bddCloseConn();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} }
@EventHandler(priority = EventPriority.HIGHEST) @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; package com.slprojects.slcraftplugin.utils;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.models.UserSetting;
import org.bukkit.configuration.file.FileConfiguration; import com.slprojects.slcraftplugin.utils.database.Configuration;
import org.bukkit.plugin.Plugin; import org.bjloquent.Connector;
import org.mariadb.jdbc.MariaDbPoolDataSource; import org.bjloquent.Model;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List;
import static org.bukkit.Bukkit.getServer;
@SuppressWarnings("UnusedReturnValue") @SuppressWarnings("UnusedReturnValue")
public class Database { public class Database {
static final private String userSettingsTabName = "site_userSetting"; 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 * Récupère une valeur dans la table site_userSetting
...@@ -24,36 +24,18 @@ public class Database { ...@@ -24,36 +24,18 @@ public class Database {
* @return Valeur de la clé * @return Valeur de la clé
*/ */
public static String getUserSetting(String uuid, String key) { public static String getUserSetting(String uuid, String key) {
Connection con; List<UserSetting> settings = Model.where(
try { UserSetting.class,
con = bddOpenConn(); new String[]{"uuid", "name"},
} catch (SQLException e) { new String[]{"=", "="},
ConsoleLog.danger("Impossible d'ouvrir la connexion à la bdd."); new String[]{uuid, key}
throw new RuntimeException(e); );
}
String returnValue = null;
try { if (settings.size() != 1) {
PreparedStatement query = con.prepareStatement("SELECT * FROM " + userSettingsTabName + " WHERE uuid = ? AND name = ?"); return null;
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);
} }
// On ferme la bdd return (settings.get(0)).getValue();
try {
con.close();
} catch (SQLException e) {
ConsoleLog.danger("Impossible de fermer la connexion à la bdd.");
e.printStackTrace();
}
return returnValue;
} }
/** /**
...@@ -139,37 +121,17 @@ public class Database { ...@@ -139,37 +121,17 @@ public class Database {
* @return Connection * @return Connection
*/ */
public static Connection bddOpenConn() throws SQLException { public static Connection bddOpenConn() throws SQLException {
Plugin plugin = getServer().getPluginManager().getPlugin(Main.pluginName); jLoquentConnector = Connector.getInstance();
if (plugin == null) { jLoquentConnector.setDBConfig(new Configuration());
throw new IllegalStateException("Le plugin " + Main.pluginName + " n'a pas été trouvé."); connection = jLoquentConnector.open();
} return connection;
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.");
}
} }
testDataSource(dataSource); /**
* Ferme la connexion à la base de données
return dataSource.getConnection(); */
} public static void bddCloseConn() throws SQLException {
connection.close();
private static void testDataSource(MariaDbPoolDataSource dataSource) throws SQLException { jLoquentConnector.close();
try (Connection conn = dataSource.getConnection()) {
if (!conn.isValid(1000)) {
throw new SQLException("Erreur lors de la connexion à la base de données.");
}
}
} }
} }
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