package dao;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import externaldata.gare.Gare;
public class DaoGare {
/* ------------------------------------------------ REQUETES PRECOMPILEES */
private static CallableStatement statementAjouterListe = null;
private static CallableStatement statementGetGareFromUic = null;
private static CallableStatement statementGetGareFromDua = null;
private static CallableStatement statementGetAllGaresWithDua = null;
private static CallableStatement statementDeleteAllGares = null;
static {
try {
statementAjouterListe = DbConnection.getInstance().prepareCall(
"{call createGare(?, ?, ?)}");
statementGetGareFromUic = DbConnection.getInstance().prepareCall(
"{call getGareFromUic(?)}");
statementGetGareFromDua = DbConnection.getInstance().prepareCall(
"{call getGareFromDua(?)}");
statementGetAllGaresWithDua = DbConnection.getInstance().prepareCall(
"{call getAllGaresWithDua()}");
statementDeleteAllGares = DbConnection.getInstance().prepareCall(
"{call deleteAllGares()}");
} catch (SQLException e) {
e.printStackTrace();
}
}
/* -------------------------------------------------- METHODES D'ACCES BD */
public static void ajouterListe(List<Gare> gares) {
for (Gare gare : gares) {
try {
synchronized (statementAjouterListe) {
// Ajout des paramètres
// UIC
statementAjouterListe.setString(1, gare.getUic());
// Nom
statementAjouterListe.setString(2, gare.getNom());
// DUA
statementAjouterListe.setString(3, gare.getDua());
// Exécution
statementAjouterListe.execute();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static Gare getGareFromUic(String uic) {
Gare resultGare = null;
try {
ResultSet rs = null;
synchronized (statementGetGareFromUic) {
statementGetGareFromUic.setString(1, uic);
rs = statementGetGareFromUic.executeQuery();
}
if(rs != null && rs.last()) {
if(rs.getRow() == 1) {
// Attention à l'ordre des champs dans la table
resultGare = new Gare(rs.getInt("id_gare"), rs.getString("nom"), rs.getString("uic"), rs.getString("dua"));
}
else {
System.err.println("DaoGare.getGareFromUic(" + uic + ") : plusieurs résultats.");
}
}
else {
System.out.println("DaoGare.getGareFromUic(" + uic + ") : aucun résultat.");
}
} catch (SQLException e) {
e.printStackTrace();
}
return resultGare;
}
public static Gare getGareFromDua(String dua) {
Gare resultGare = null;
try {
ResultSet rs = null;
synchronized (statementGetGareFromDua) {
statementGetGareFromDua.setString(1, dua);
rs = statementGetGareFromDua.executeQuery();
}
if (rs != null && rs.last()) {
if (rs.getRow() == 1) {
// Attention à l'ordre des champs dans la table
resultGare = new Gare(rs.getInt("id_gare"), rs.getString("nom"), rs.getString("uic"), rs.getString("dua"));
}
else {
System.err.println("DaoGare.getGareFromDua(" + dua + ") : plusieurs résultats.");
}
}
else {
System.out.println("DaoGare.getGareFromDua(" + dua + ") : aucun résultat.");
}
} catch (SQLException e) {
e.printStackTrace();
}
return resultGare;
}
public static List<Gare> getAllGaresWithDua() {
List<Gare> garesWithDua = null;
try {
ResultSet rs = null;
synchronized (statementGetAllGaresWithDua) {
rs = statementGetAllGaresWithDua.executeQuery();
}
if (rs != null) {
garesWithDua = new ArrayList<Gare>();
while (rs.next()) {
// Attention à l'ordre des champs dans la table
garesWithDua.add(new Gare(rs.getInt("id_gare"), rs.getString("nom"), rs.getString("uic"), rs.getString("dua")));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return garesWithDua;
}
public static void deleteAllGares() {
try {
synchronized (statementDeleteAllGares) {
statementDeleteAllGares.execute();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}