package dao.implementation.mysql.voiture;
import modele.voiture.MarqueVoiture;
import modele.voiture.ModeleVoiture;
import dao.IDao;
import dao.implementation.mysql.AccessMySql;
import gui.MainWindow;
import gui.util.TaxiGuiUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
/**
* class MySqlModeleVoitureDao
* impl�mente les m�thodes DAO
* insert(final ModeleVoiture modeleVoiture)
* update(final ModeleVoiture modeleVoiture)
* find(final int id)
* findAll()
* delete( final ModeleVoiture modeleVoiture)
* Cette classe permet l'acc�s avec la base de donn�es
* @author Kasandra
*
*/
public class MySqlModeleVoitureDao implements IDao<ModeleVoiture>{
private static final String INSERT_MODELE_VOITURE = "insert into tmodelevoiture ( idMarqueVoit, descripModVoit) values (?,?)";
private static final String UPDATE_MODELE_VOITURE = "update tmodelevoiture set idMarqueVoit = ? , descripModVoit = ? where idModVoit = ?";
private static final String DELETE_MODELE_VOITURE = "delete from tmodelevoiture where idModVoit = ?";
private static final String GET_ALL_MODELE_VOITURE = "select idModVoit, tmarqueVoiture.idMarqueVoit, tmarqueVoiture.descripMarqueVoit, descripModVoit from tmodelevoiture, tmarquevoiture where tmodelevoiture.idMarqueVoit = tmarquevoiture.idMarqueVoit";
private static final String GET_MODELE_VOITURE_BY_ID = GET_ALL_MODELE_VOITURE + " and idModVoit = ?";
public void delete(final ModeleVoiture modeleVoiture) {
//�tablit la connexion avec la base de donn�es et la synchronise
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
try {
smt = connection.prepareStatement(DELETE_MODELE_VOITURE);
smt.setInt(1, modeleVoiture.getId());
smt.executeUpdate();
} finally {
if (smt != null) {
smt.close();
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
}
public ModeleVoiture find(final int id) {
final ModeleVoiture[] result = new ModeleVoiture[1];
//�tablit la connexion avec la base de donn�es et la synchronise
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
ResultSet res = null;
try {
smt = connection.prepareStatement(GET_MODELE_VOITURE_BY_ID);
smt.setInt(1, id);
res = smt.executeQuery();
if (res.next()) {
result[0] = new ModeleVoiture(res.getInt(1));
MarqueVoiture marqueVoiture = new MarqueVoiture(res.getInt(2));
marqueVoiture.setLibelle(res.getString(3));
result[0].setMarqueVoiture(marqueVoiture);
result[0].setNomModele(res.getString(4));
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return result[0];
}
public ArrayList<ModeleVoiture> findAll() {
final ArrayList<ModeleVoiture> listeModeleVoiture = new ArrayList<ModeleVoiture>();
//�tablit la connexion avec la base de donn�es et la synchronise
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
ResultSet res = null;
try {
smt = connection.prepareStatement(GET_ALL_MODELE_VOITURE);
res = smt.executeQuery();
while (res.next()) {
ModeleVoiture modeleVoiture = new ModeleVoiture(res.getInt(1));
MarqueVoiture marqueVoiture = new MarqueVoiture(res.getInt(2));
marqueVoiture.setLibelle(res.getString(3));
modeleVoiture.setMarqueVoiture(marqueVoiture);
modeleVoiture.setNomModele(res.getString(4));
listeModeleVoiture.add(modeleVoiture);
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return listeModeleVoiture;
}
public ModeleVoiture insert(final ModeleVoiture modeleVoiture) {
final ModeleVoiture[] result = new ModeleVoiture[1];
result[0] = null;
//�tablit la connexion avec la base de donn�es et la synchronise
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement psmt = null;
try {
psmt = connection.prepareStatement(INSERT_MODELE_VOITURE);
psmt.setInt(1,modeleVoiture.getMarqueVoiture().getId());
psmt.setString(2,modeleVoiture.getNomModele());
psmt.executeUpdate();
} finally {
if (psmt != null) {
psmt.close();
}
}
Statement smt = null;
ResultSet res = null;
try {
smt = connection.createStatement();
res = smt.executeQuery("select idModVoit, tmarquevoiture.idMarqueVoit, tmarquevoiture.descripMarqueVoit, descripModVoit from tmodelevoiture, tmarquevoiture where tmodelevoiture.idMarqueVoit = tmarquevoiture.idMarqueVoit and idModVoit = LAST_INSERT_ID()");
if (res.next()) {
result[0] = new ModeleVoiture(res.getInt(1));
MarqueVoiture marqueVoiture = new MarqueVoiture( res.getInt(2));
marqueVoiture.setLibelle(res.getString(3));
result[0].setMarqueVoiture(marqueVoiture);
result[0].setNomModele(res.getString(4));
}
} finally {
try {
if (res != null) {
res.close();
}
} finally {
if (smt != null) {
smt.close();
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return result[0];
}
public ModeleVoiture update(final ModeleVoiture modeleVoiture) {
//�tablit la connexion avec la base de donn�es et la synchronise
AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
public void runWithconnection(Connection connection) {
try {
PreparedStatement smt = null;
try {
smt = connection.prepareStatement(UPDATE_MODELE_VOITURE);
smt.setInt(1, modeleVoiture.getMarqueVoiture().getId());
smt.setString(2, modeleVoiture.getNomModele());
smt.setInt(3, modeleVoiture.getId());
smt.executeUpdate();
}
finally {
if (smt != null) {
smt.close();
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
});
return modeleVoiture;
}
}