/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import dao.DAOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import dao.ISpIndDAO;
import java.sql.PreparedStatement;
import java.util.HashMap;
import java.util.Map;
import model.InscriptionInd;
import model.Sportif;
/**
*
* @author moha
*/
public class InscriptionSpIndDAO extends AbstractDataBaseDao implements ISpIndDAO {
// /*
// * requetes pour construire les épreuves des sportifs
// */
// private static final String reqEpIndSp=
// "select nomSp,prenomSp, nomP from LesSportifs Natural Join InscriptionInd where IdEp=%d order by nomP;";
//
// /*
// * nom des critere de recherche
// */
private static Map<DataSource, InscriptionSpIndDAO> daoInstances =
new HashMap<DataSource, InscriptionSpIndDAO>();
public synchronized static InscriptionSpIndDAO getInstance(DataSource ds) {
InscriptionSpIndDAO inst = daoInstances.get(ds);
if (inst == null) {
inst = new InscriptionSpIndDAO(ds);
daoInstances.put(ds, inst);
}
return inst;
}
public InscriptionSpIndDAO(DataSource ds) {
super(ds);
}
/*
* enregistre un sportif à l'épreuve indiquer
*
*/
public void setSportifEpInd(int IdSp, int IdEp) throws DAOException {
Connection conn = null;
InscriptionInd sp = new InscriptionInd(IdSp, IdEp);//sportif epreuve individuelle
sp.setIdSp(IdSp);
sp.setIdep(IdEp);
try {
synchronized (dataSource) {
conn = dataSource.getConnection();
}
String req = "insert into InscriptionInd (IdSp,IdEp) "
+ " VALUES (?,?)";
System.out.println(req);
PreparedStatement ps = conn.prepareStatement(req);//preparation d'un statement
ps.setInt(1, IdSp);// setXXX fixe la valeur IdSp dans la colonne 1, XXX type de la colonne
ps.setInt(2, IdEp);
ps.executeUpdate();//update les valeurs entrees
ps.close();
} catch (SQLException ex) {
throw new DAOException("problème insertion du sportif à l'épreuve individuelle", ex);
} finally {
closeConnection(conn);
}
}
/*
* Construit la liste des sportifs inscrit à une épreuve individuelle
* @param Idep numero de l'épreuve
* @throws DAOException si la liste des notes n'a pu être construite suite
* à un problème d'accès à la base de données.
*/
public List<Sportif> loadInscSpInd(int IdEp) throws DAOException {
Connection conn = null;
Statement stmt = null;
try {
synchronized (dataSource) {
conn = dataSource.getConnection();
}
stmt = conn.createStatement();//creation d'un statement pour l'execution de la commande dans executeQuery
/*requete selection du num Sportif, nom, prenom, delegation pour une épreuve donnee ordonnee par pays*/
String req = "select IdSp, NomSp, PrenomSp, nomP from InscriptionInd Natural Join LesSportifs where IdEp=" + IdEp
+ " order by nomP ";
ResultSet rs = stmt.executeQuery(req);
// construit la liste des sportifs inscrits
List<Sportif> sportifs = new ArrayList<Sportif>();
sportifs.clear(); // efface tous les éléments de la liste sportifs
while (rs.next()) {
sportifs.add(new Sportif(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4)));
}
rs.close();
stmt.close();
return sportifs;
}
catch (SQLException ex) {
throw new DAOException("problème recuperation sportif à l'épreuve individuelle", ex);
} finally {
closeConnection(conn);
}
}
}