From da30bb8ed13bab26b5450af57ad7b903575caf02 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Tue, 25 Apr 2023 09:45:17 +0200
Subject: [PATCH] =?UTF-8?q?D=C3=A9placement=20de=20la=20fonciton=20initDat?=
 =?UTF-8?q?abase=20dans=20la=20classe=20correspondante,=20et=20am=C3=A9lio?=
 =?UTF-8?q?ration=20de=20la=20fonction=20de=20d=C3=A9marrage=20du=20plugin?=
 =?UTF-8?q?.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/slprojects/slcraftplugin/Main.java    | 55 +++++++----------
 .../slcraftplugin/utils/Database.java         | 59 ++++++++-----------
 2 files changed, 44 insertions(+), 70 deletions(-)

diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java
index 10b7d73..d4360d3 100644
--- a/src/main/java/com/slprojects/slcraftplugin/Main.java
+++ b/src/main/java/com/slprojects/slcraftplugin/Main.java
@@ -15,6 +15,7 @@ import net.md_5.bungee.api.ChatMessageType;
 import net.md_5.bungee.api.chat.TextComponent;
 import org.bukkit.Bukkit;
 import org.bukkit.Sound;
+import org.bukkit.command.PluginCommand;
 import org.bukkit.configuration.file.FileConfiguration;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
@@ -59,10 +60,10 @@ public final class Main extends JavaPlugin implements Listener {
     @Override
     public void onEnable() {
         pluginName = this.getName();
+
         // On s'assure qu'on a placeholder api
         if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
             ConsoleLog.info("PlaceholderAPI chargé");
-            // On initialise les listeners
             getServer().getPluginManager().registerEvents(this, this);
         } else {
             ConsoleLog.danger("PlaceholderAPI n'est pas accessible!");
@@ -88,29 +89,40 @@ public final class Main extends JavaPlugin implements Listener {
         // Plugin startup logic
         try {
             databaseConnection = Database.bddOpenConn();
+            Database.initDatabase();
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
+
+        // On charge la config (et on la crée si elle n'existe pas)
         saveDefaultConfig();
         reloadConfig();
         config = getConfig();
         updateConfig();
 
-        initDatabase();
-
+        // On initialise les handlers
         playerDataHandler = new PlayerDataHandler(this);
-        InternalWebServer.startServer(this);
         periodicEvent = new PeriodicEvent(this);
+        InternalWebServer.startServer(this);
 
         // On initialise les commandes
         wildCommand = new Wild(this);
-        getCommand("wild").setExecutor(wildCommand);
-
         WildReset wildReset = new WildReset(this);
-        getCommand("reset-wild").setExecutor(wildReset);
-
         LinkCode linkCodeCommand = new LinkCode(this);
-        getCommand("getLinkCode").setExecutor(linkCodeCommand);
+
+        PluginCommand wild = getCommand("wild");
+        PluginCommand resetWild = getCommand("reset-wild");
+        PluginCommand getLinkCode = getCommand("getLinkCode");
+
+        // On vérifie que les commandes ont bien été initialisées dans plugin.yml
+        if (wild == null || resetWild == null || getLinkCode == null) {
+            ConsoleLog.danger("Une commande n'a pas pu être initialisée!");
+            getServer().getPluginManager().disablePlugin(this);
+        } else {
+            wild.setExecutor(wildCommand);
+            resetWild.setExecutor(wildReset);
+            getLinkCode.setExecutor(linkCodeCommand);
+        }
 
         ConsoleLog.success("Plugin démarré");
     }
@@ -341,29 +353,4 @@ public final class Main extends JavaPlugin implements Listener {
         saveConfig();
         reloadConfig();
     }
-
-    private void initDatabase() {
-        try {
-            Connection con = bddOpenConn();
-            PreparedStatement ps = con.prepareStatement("CREATE TABLE IF NOT EXISTS `site_userSetting` (\n" +
-                    "  `uuid` varchar(36) NOT NULL DEFAULT '',\n" +
-                    "  `name` varchar(128) NOT NULL,\n" +
-                    "  `value` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,\n" +
-                    "  PRIMARY KEY (`uuid`,`name`) USING BTREE\n" +
-                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
-            ps.executeQuery();
-            ps = con.prepareStatement("CREATE TABLE IF NOT EXISTS `site_linkCode` (\n" +
-                    " `uuid` VARCHAR(36) NOT NULL,\n" +
-                    " `code` VARCHAR(8) NOT NULL,\n" +
-                    " `time` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n" +
-                    " `used` BOOLEAN,\n" +
-                    " PRIMARY KEY (`uuid`),\n" +
-                    " UNIQUE INDEX `code` (`code`)\n" +
-                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
-            ps.executeQuery();
-            con.close();
-        } catch (Exception e) {
-            ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e);
-        }
-    }
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
index 40f8323..8d50bd1 100644
--- a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
+++ b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
@@ -67,42 +67,6 @@ public class Database {
         }
     }
 
-    /**
-     * Ajoute une entrée dans la table site_userSetting
-     *
-     * @param uuid  UUID du joueur
-     * @param key   Nom de la clé
-     * @param value Valeur de la clé
-     */
-    private static void insertUserSettingEntry(String uuid, String key, String value) {
-        Connection con;
-        try {
-            con = bddOpenConn();
-        } catch (SQLException e) {
-            ConsoleLog.danger("Erreur lors de l'ouverture de la connexion à la bdd.");
-            throw new RuntimeException(e);
-        }
-
-        try {
-            PreparedStatement insertEntry = con.prepareStatement("INSERT INTO " + userSettingsTabName + " (uuid, name, value) VALUES (?, ?, ?)");
-            insertEntry.setString(1, uuid);
-            insertEntry.setString(2, key);
-            insertEntry.setString(3, value);
-            insertEntry.executeQuery();
-        } catch (SQLException e) {
-            ConsoleLog.danger("Erreur lors de l'exécution de la requête sql.");
-            throw new RuntimeException(e);
-        }
-
-        // On ferme la bdd
-        try {
-            con.close();
-        } catch (SQLException e) {
-            ConsoleLog.danger("Impossible de fermer la connexion à la bdd.");
-            throw new RuntimeException(e);
-        }
-    }
-
     /**
      * Ouvre une connexion à la base de données
      *
@@ -122,4 +86,27 @@ public class Database {
         connection.close();
         jLoquentConnector.close();
     }
+
+    public static void initDatabase() {
+        try {
+            PreparedStatement ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS `site_userSetting` (\n" +
+                    "  `uuid` varchar(36) NOT NULL DEFAULT '',\n" +
+                    "  `name` varchar(128) NOT NULL,\n" +
+                    "  `value` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,\n" +
+                    "  PRIMARY KEY (`uuid`,`name`) USING BTREE\n" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
+            ps.executeQuery();
+            ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS `site_linkCode` (\n" +
+                    " `uuid` VARCHAR(36) NOT NULL,\n" +
+                    " `code` VARCHAR(8) NOT NULL,\n" +
+                    " `time` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n" +
+                    " `used` BOOLEAN,\n" +
+                    " PRIMARY KEY (`uuid`),\n" +
+                    " UNIQUE INDEX `code` (`code`)\n" +
+                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
+            ps.executeQuery();
+        } catch (Exception e) {
+            ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e);
+        }
+    }
 }
-- 
GitLab