Début d'implémentation d'un ORM pour les données des joueurs
This commit is contained in:
@@ -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();
|
||||
}
|
Reference in New Issue
Block a user