Début d'implémentation d'un ORM pour les données des joueurs
This commit is contained in:
parent
452da3bce8
commit
37f8ea1b00
@ -1,6 +1,5 @@
|
|||||||
package net.mc_pandacraft.java.plugin.pandacraftutils;
|
package net.mc_pandacraft.java.plugin.pandacraftutils;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -10,22 +9,45 @@ import java.util.Map;
|
|||||||
* Configuration du plugin
|
* Configuration du plugin
|
||||||
*/
|
*/
|
||||||
public class ConfigManager {
|
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")
|
@SuppressWarnings("unused")
|
||||||
private PandacraftUtils plugin;
|
private PandacraftUtils plugin = PandacraftUtils.getInstance();
|
||||||
|
|
||||||
public ConfigManager(File f, PandacraftUtils pl) {
|
private ConfigManager() {
|
||||||
plugin = pl;
|
|
||||||
instance = this;
|
|
||||||
|
|
||||||
|
|
||||||
initChatAnalysisBadWord();
|
initChatAnalysisBadWord();
|
||||||
initCommandAlias();
|
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
|
* Configuration AFK
|
||||||
*/
|
*/
|
||||||
@ -57,13 +79,12 @@ public class ConfigManager {
|
|||||||
*/
|
*/
|
||||||
ChatAnalysis_badWords.add("pu+tes?");
|
ChatAnalysis_badWords.add("pu+tes?");
|
||||||
ChatAnalysis_badWords.add("conn?a(rd?|ss?e?)");
|
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("[ea]ncul(é|e|er|ai(s|t|))");
|
||||||
ChatAnalysis_badWords.add("merdes?");
|
ChatAnalysis_badWords.add("merdes?");
|
||||||
ChatAnalysis_badWords.add("ni(qu|k)e? ta m(è|e|é)re?");
|
ChatAnalysis_badWords.add("ni(qu|k)e? ta m(è|e|é)re?");
|
||||||
ChatAnalysis_badWords.add("fil?s de putes?");
|
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? l(a|e) putes?");
|
||||||
ChatAnalysis_badWords.add("ta m(è|e|é)re?");
|
|
||||||
ChatAnalysis_badWords.add("tafiole?s?");
|
ChatAnalysis_badWords.add("tafiole?s?");
|
||||||
ChatAnalysis_badWords.add("vas? te pendre");
|
ChatAnalysis_badWords.add("vas? te pendre");
|
||||||
ChatAnalysis_badWords.add("fuck");
|
ChatAnalysis_badWords.add("fuck");
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package net.mc_pandacraft.java.plugin.pandacraftutils;
|
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.afk.CommandAfk;
|
||||||
import net.mc_pandacraft.java.plugin.pandacraftutils.chat_analyzer.ChatAnalysisManager;
|
import net.mc_pandacraft.java.plugin.pandacraftutils.chat_analyzer.ChatAnalysisManager;
|
||||||
import net.mc_pandacraft.java.plugin.pandacraftutils.cheat_protect.creative.CreativCheatManager;
|
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.spawntime.SpawnTimeManager;
|
||||||
import net.mc_pandacraft.java.plugin.pandacraftutils.survival_cuboid.CommandWandSelection;
|
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.plugin.pandacraftutils.system_analyzer.CommandSystem;
|
||||||
|
import net.mc_pandacraft.java.util.mysql.DBConnection;
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class PandacraftUtils extends JavaPlugin {
|
public class PandacraftUtils extends JavaPlugin {
|
||||||
|
|
||||||
|
private static PandacraftUtils instance;
|
||||||
|
public static PandacraftUtils getInstance() { return instance; }
|
||||||
|
|
||||||
|
public DBConnection databaseConnection;
|
||||||
|
|
||||||
public CommandAfk commandAfk;
|
public CommandAfk commandAfk;
|
||||||
public CommandList commandPlayers;
|
public CommandList commandPlayers;
|
||||||
public CommandSetblock commandSetblock;
|
public CommandSetblock commandSetblock;
|
||||||
@ -44,8 +52,18 @@ public class PandacraftUtils extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onEnable(){
|
public void onEnable(){
|
||||||
|
|
||||||
// initialisation de la configuration
|
instance = this;
|
||||||
new ConfigManager(null, 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);
|
commandPlayers = new CommandList(this);
|
||||||
commandSetblock = new CommandSetblock(this);
|
commandSetblock = new CommandSetblock(this);
|
||||||
@ -83,6 +101,9 @@ public class PandacraftUtils extends JavaPlugin {
|
|||||||
noPvpProtectManager = null;
|
noPvpProtectManager = null;
|
||||||
|
|
||||||
serverPingListener = null;
|
serverPingListener = null;
|
||||||
|
|
||||||
|
|
||||||
|
try { databaseConnection.getConnection().close(); } catch (SQLException e) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
*
|
||||||
|
* <i>Le nom de cette classe correspond à celle de la table dans la base de donnée,
|
||||||
|
* d'où la présence d'un <code>_</code>(underscore), qui n'est pas admis en général
|
||||||
|
* dans le nom d'une classe</i>
|
||||||
|
* @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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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<fields.length && i<values.length; i++)
|
||||||
|
{
|
||||||
|
sql += fields[i]+" = ? ";
|
||||||
|
}
|
||||||
|
|
||||||
|
PreparedStatement st = conn.prepareStatement("UPDATE "+tableName+" SET "+sql+" WHERE id="+id);
|
||||||
|
|
||||||
|
for (int i=0; i<fields.length && i<values.length; i++)
|
||||||
|
{
|
||||||
|
st.setString(i+1, values[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
st.executeUpdate();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // ajouter dans la base
|
||||||
|
String concat_vals = "";
|
||||||
|
String concat_fields = StringUtils.join(fields, ',');
|
||||||
|
for (int i=0; i<fields.length && i<values.length; i++)
|
||||||
|
{
|
||||||
|
if (i!=0) concat_vals += ",";
|
||||||
|
concat_vals += " ? ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PreparedStatement st = conn.prepareStatement("INSERT INTO "+tableName+" ("+concat_fields+") VALUES ("+concat_vals+")", Statement.RETURN_GENERATED_KEYS);
|
||||||
|
|
||||||
|
for (int i=0; i<fields.length && i<values.length; i++)
|
||||||
|
{
|
||||||
|
st.setString(i+1, values[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
id = st.executeUpdate();
|
||||||
|
saved = true;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void delete() {
|
||||||
|
String tableName = this.getClass().getSimpleName();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (saved)
|
||||||
|
{ // supprimer la ligne de la base
|
||||||
|
PreparedStatement st = db.getConnection().prepareStatement("DELETE FROM "+tableName+" WHERE id="+id);
|
||||||
|
st.executeUpdate();
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère la liste des valeurs des champs de la table correspondante, excepté
|
||||||
|
* le champ <code>id</code>
|
||||||
|
* @return les valeurs des champs sous la forme de chaine de caractères
|
||||||
|
*/
|
||||||
|
public abstract String[] getValues();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère la liste des noms des champs de la table correspondante, excepté
|
||||||
|
* le champ <code>id</code>
|
||||||
|
* @return les noms des champs sous la forme de chaine de caractères
|
||||||
|
*/
|
||||||
|
public abstract String[] getFieldsName();
|
||||||
|
}
|
@ -2,9 +2,7 @@ package net.mc_pandacraft.java.util.mysql;
|
|||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -26,7 +24,7 @@ public class DBConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void reconnect() throws SQLException
|
public void reconnectIfNecessary() throws SQLException
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -38,17 +36,6 @@ public class DBConnection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Statement createStatement() throws SQLException
|
|
||||||
{
|
|
||||||
return conn.createStatement();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PreparedStatement prepareStatement(String sql) throws SQLException
|
|
||||||
{
|
|
||||||
return conn.prepareStatement(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Connection getConnection()
|
public Connection getConnection()
|
||||||
{
|
{
|
||||||
return conn;
|
return conn;
|
||||||
|
Loading…
Reference in New Issue
Block a user