From 37f8ea1b00076041830e87cd1a35eff281e74654 Mon Sep 17 00:00:00 2001 From: Marc Baloup Date: Wed, 24 Dec 2014 19:33:08 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20d'impl=C3=A9mentation=20d'un=20ORM?= =?UTF-8?q?=20pour=20les=20donn=C3=A9es=20des=20joueurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/pandacraftutils/ConfigManager.java | 39 ++++-- .../pandacraftutils/PandacraftUtils.java | 25 +++- .../data_model/PandacraftUtils_Player.java | 34 +++++ .../pandacraftutils/data_model/Table.java | 123 ++++++++++++++++++ .../java/util/mysql/DBConnection.java | 15 +-- 5 files changed, 211 insertions(+), 25 deletions(-) create mode 100644 src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/PandacraftUtils_Player.java create mode 100644 src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/Table.java diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/ConfigManager.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/ConfigManager.java index 2417884..6c2d352 100644 --- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/ConfigManager.java +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/ConfigManager.java @@ -1,6 +1,5 @@ package net.mc_pandacraft.java.plugin.pandacraftutils; -import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -10,22 +9,45 @@ import java.util.Map; * Configuration du plugin */ public class ConfigManager { - private static ConfigManager instance; + private static ConfigManager instance = null; - public static ConfigManager getInstance() { return instance; } + public static ConfigManager getInstance() { + + if (instance == null) + instance = new ConfigManager(); + + return instance; + } @SuppressWarnings("unused") - private PandacraftUtils plugin; + private PandacraftUtils plugin = PandacraftUtils.getInstance(); - public ConfigManager(File f, PandacraftUtils pl) { - plugin = pl; - instance = this; + private ConfigManager() { initChatAnalysisBadWord(); initCommandAlias(); } + + + /* + * Connexion à la base de donnée + */ + + public String Database_host = "localhost"; + public int Database_port = 3306; + public String Database_username = "pandacraft"; + public String Database_database = "pandacraft"; + public String Database_password = "HYtKq92pfx9ucwzq"; + + + + + + + + /* * Configuration AFK */ @@ -57,13 +79,12 @@ public class ConfigManager { */ ChatAnalysis_badWords.add("pu+tes?"); ChatAnalysis_badWords.add("conn?a(rd?|ss?e?)"); - ChatAnalysis_badWords.add("sal(o|au)pe?s?"); + ChatAnalysis_badWords.add("sal(o+|au)pe?s?"); ChatAnalysis_badWords.add("[ea]ncul(é|e|er|ai(s|t|))"); ChatAnalysis_badWords.add("merdes?"); ChatAnalysis_badWords.add("ni(qu|k)e? ta m(è|e|é)re?"); ChatAnalysis_badWords.add("fil?s de putes?"); ChatAnalysis_badWords.add("ta m(è|e|é)re? l(a|e) putes?"); - ChatAnalysis_badWords.add("ta m(è|e|é)re?"); ChatAnalysis_badWords.add("tafiole?s?"); ChatAnalysis_badWords.add("vas? te pendre"); ChatAnalysis_badWords.add("fuck"); diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java index 8d14410..9f8120c 100644 --- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java @@ -1,6 +1,8 @@ package net.mc_pandacraft.java.plugin.pandacraftutils; +import java.sql.SQLException; + import net.mc_pandacraft.java.plugin.pandacraftutils.afk.CommandAfk; import net.mc_pandacraft.java.plugin.pandacraftutils.chat_analyzer.ChatAnalysisManager; import net.mc_pandacraft.java.plugin.pandacraftutils.cheat_protect.creative.CreativCheatManager; @@ -16,11 +18,17 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.staff_playe import net.mc_pandacraft.java.plugin.pandacraftutils.spawntime.SpawnTimeManager; import net.mc_pandacraft.java.plugin.pandacraftutils.survival_cuboid.CommandWandSelection; import net.mc_pandacraft.java.plugin.pandacraftutils.system_analyzer.CommandSystem; +import net.mc_pandacraft.java.util.mysql.DBConnection; import org.bukkit.plugin.java.JavaPlugin; public class PandacraftUtils extends JavaPlugin { + private static PandacraftUtils instance; + public static PandacraftUtils getInstance() { return instance; } + + public DBConnection databaseConnection; + public CommandAfk commandAfk; public CommandList commandPlayers; public CommandSetblock commandSetblock; @@ -44,8 +52,18 @@ public class PandacraftUtils extends JavaPlugin { @Override public void onEnable(){ - // initialisation de la configuration - new ConfigManager(null, this); + instance = this; + + try { + databaseConnection = new DBConnection(ConfigManager.getInstance().Database_host, + ConfigManager.getInstance().Database_port, + ConfigManager.getInstance().Database_database, + ConfigManager.getInstance().Database_username, + ConfigManager.getInstance().Database_password); + } catch (ClassNotFoundException | SQLException e) { + getLogger().severe("Impossible de se connecter à la base de donnée !"); + e.printStackTrace(); + } commandPlayers = new CommandList(this); commandSetblock = new CommandSetblock(this); @@ -83,6 +101,9 @@ public class PandacraftUtils extends JavaPlugin { noPvpProtectManager = null; serverPingListener = null; + + + try { databaseConnection.getConnection().close(); } catch (SQLException e) { } } } diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/PandacraftUtils_Player.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/PandacraftUtils_Player.java new file mode 100644 index 0000000..d373e8c --- /dev/null +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/PandacraftUtils_Player.java @@ -0,0 +1,34 @@ +package net.mc_pandacraft.java.plugin.pandacraftutils.data_model; +/** + * Représente les données persistante correspondant à un joueur donné sur le serveur + * + * Le nom de cette classe correspond à celle de la table dans la base de donnée, + * d'où la présence d'un _(underscore), qui n'est pas admis en général + * dans le nom d'une classe + * @author Marc Baloup + * + */ +public class PandacraftUtils_Player extends Table { + + // TODO Créer la table dans la base de donnée + + // TODO Ajouter les champs + + + + + + + @Override + public String[] getValues() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String[] getFieldsName() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/Table.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/Table.java new file mode 100644 index 0000000..6be06d7 --- /dev/null +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/data_model/Table.java @@ -0,0 +1,123 @@ +package net.mc_pandacraft.java.plugin.pandacraftutils.data_model; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Statement; + +import org.apache.commons.lang.StringUtils; + +import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils; +import net.mc_pandacraft.java.util.mysql.DBConnection; + +public abstract class Table { + + DBConnection db = PandacraftUtils.getInstance().databaseConnection; + + + private boolean saved = false; + + + // champ relatif aux données + private int id = 0; + + + + public Table() { + + + } + + + + + + public void save() { + String tableName = this.getClass().getSimpleName(); + + try { + Connection conn; + conn = db.getConnection(); + + String[] fields = getFieldsName(), values = getValues(); + + + + if (saved) + { // mettre à jour les valeurs dans la base + String sql = ""; + for (int i=0; i