/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package DataBaseX10;
import DataX10.DataX10;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author zouloum
*/
public class DBX10 implements IDBX10 {
/*
String _sHostMySQl;
Integer _iPortMySQL;
String _sDB;
Integer _iID;
*/
Connection _cConnection = null;
// Pour l'initalisation de l'objet DBX10
// Charge le gestionnaire de base de donnée
public DBX10()
{
// Chargement du gestionnaire spécifique
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch(ClassNotFoundException e)
{
System.out.println(e.toString());
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
// Pour la connexion � la base de donn�es X10 sur votre serveur MySQL.
// Cette fonction retourne vraie si la connexion c'est �tabli correctement.
//
// sHostMySQL : Adresse ou nom de l'ordinateur o� r�side le serveur MySQL
// iPortMySQL : Port du serveur MySQL
// sDB : Nom de la base de donn�es
// iID : Identificateur pour la connexion
// sPassword : Mot de passe pour la connexion
public boolean connexion(String sHostMySQL, Integer iPortMySQL, String sDB, Integer iID, String sPassword)
{
String sLogin = Integer.toString(iID);
boolean isConnected;
try
{
// Connexion à la base de donnée
_cConnection = DriverManager.getConnection("jdbc:mysql://" + sHostMySQL + "/" + sDB, sLogin,
sPassword);
}
catch(Exception e)
{
System.out.println(e.toString());
}
if(_cConnection == null)
{
isConnected = false;
}
else
{
isConnected = true;
}
return isConnected;
}
// Pour lire tous les enregistrements de l'une des tables de la base de donn�es X10
// correspondant au num�ro d'utilisateur ID. Effectuez la lecture de tous les
// enregistrements de la table demand�e.
//
// sTable : Nom de la table de la base de donn�es
// iID : identifiant de l'utilisateur
public ResultSet lireTous(String sTable, Integer iID)
{
ResultSet rs = null;
try
{
// Lecture d'une table de la base de donnée
Statement stmt = _cConnection.createStatement();
rs = stmt.executeQuery("SELECT * FROM " + sTable +" WHERE ID = "+iID+ ";");
}
catch(SQLException e)
{
System.out.println(e.toString() + ", code d'erreur : " + e.getErrorCode());
}
catch(Exception e)
{
System.out.println(e.toString());
}
return rs;
}
// Pour lire un objet DataX10 selon une date donn�e
//
// sTable : Nom de la table de la base de donn�es
// iID : identifiant de l'utilisateur
// sDate : Date d'insertion (format JJMMAAAA HH:MM:SS GMT)
public DataX10 lireDataX10(String sTable, Integer iID, String sDate)
{
DataX10 dx10 = new DataX10();
ResultSet rs = null;
try
{
// Lecture d'une table de la base de donnée
Statement stmt = _cConnection.createStatement();
rs = stmt.executeQuery("SELECT * FROM " + sTable
+ " WHERE ID = "+ iID +
" and DATE(Date) = DATE(" + sDate + ");");
// Place les données lues de la DB dans un objet DataX10
while(rs.next())
{
dx10.setUtilitaire(rs.getString("Utilitaire"));
dx10.setHouseCode(rs.getString("House_Code"));
dx10.setKeyCode(Integer.toString(rs.getInt("Key_Code")));
dx10.setCommandCode(rs.getString("Command_Code"));
dx10.setOptions(rs.getString("Options"));
dx10.setID(rs.getInt("ID"));
dx10.setMessage(rs.getString("Message"));
}
}
catch(SQLException e)
{
System.out.println(e.toString() + ", code d'erreur : " + e.getErrorCode());
}
catch(Exception e)
{
System.out.println(e.toString());
}
return dx10;
}
// Pour �crire un objet de type DataX10 dans la table voulue.
//
// sTable : Nom de la table de la base de donn�es
// dx : Objet de type DATAX10 � sauvegarder
public boolean ecrireDataX10(String sTable, DataX10 dx)
{
String sUtility = dx.getUtilitaire();
String sHouseCode = dx.getHouseCode();
String sKeyCode = dx.getKeyCode();
String sCommandCode = dx.getCommandCode();
String sOptions = dx.getOptions();
String sID = Integer.toString(dx.getID());
String sMessage = dx.getMessage();
if(sKeyCode == "")
{
sKeyCode = "NULL";
}
try
{
Statement stmt = _cConnection.createStatement();
// Formatte la commande à envoyer au serveur de base de donnée
String sSQLCommand = "insert into " + sTable +
"(Date, Utilitaire, House_Code, Key_Code, Command_Code, "
+ "Options, ID, Message) values("
+ "NOW(), "
+ "'" + sUtility + "'" + ", "
+ "'" + sHouseCode + "'" + ", "
+ sKeyCode + ", "
+ "'" + sCommandCode + "'" + ", "
+ "'" + sOptions + "'" + ", "
+ sID + ", "
+ "'" + sMessage + "'"
+ ");";
System.out.println(sSQLCommand);
// Éxécute la commande
stmt.executeUpdate(sSQLCommand);
}
catch(SQLException e)
{
System.out.println(e.toString() + ", code d'erreur : " + e.getErrorCode());
}
catch(Exception e)
{
System.out.println(e.toString());
}
return true;
}
// Pour la fermeture de la base de donn�es X10. Cette fonction retourne
// vraie si la connexion c'est ferm� correctement.
public boolean fermeture()
{
boolean isClosed = false;
try {
// Ferme la connexion à la base de donnée
_cConnection.close();
isClosed = true;
} catch (SQLException ex) {
Logger.getLogger(DBX10.class.getName()).log(Level.SEVERE, null, ex);
isClosed = false;
}
return isClosed;
}
}