1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
| public abstract class DaoTemplate<T extends Entity> {
//Le driver emmbarqué
private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
// Le nom de la base
private String dbName = "";
// l'URL de la base à utiliser
private String connectionURL = "jdbc:derby:" + dbName;
// Le Prepared Statement
private PreparedStatement psInsert;
//Le Resultat de la requête
private ResultSet resultSet;
/**
* Cette methode ouvre une connexion sur la base,
* execute une commande sql,
* wrap le resultat pour recuperer un objet,
* ferme la connexion
* et renvoie un objet
*
* @return result
*/
public T processRequest(String s,boolean returnNeeded) {
T entity = null;
//Connexion à la base
Connection connection = startDBConnexion();
//Execution de la requete
resultSet = executeCommande(connection,s,returnNeeded);
// Si la méthode demande de renvoyer un résultat
if(returnNeeded){
//Grace a l'appel de la methode abstraite wrapEntity, on recupere le bon Objet: Station, Equipement,...
entity = wrapEntity(resultSet);
}
//Déconnexion de la base
stopDBConnexion(connection);
return entity;
}
/**
* Cette methode ouvre une connexion sur la base,
* execute une commande sql,
* wrap le resultat pour recuperer une liste d'objet,
* ferme la connexion
* et renvoie la liste d'objet
*
* @return result
*/
public List<T> processReq(String s,boolean returnNeeded) {
List<T> listOfEntity = null;
//Connexion à la base
Connection connection = startDBConnexion();
//Execution de la requete
resultSet = executeCommande(connection,s,returnNeeded);
if(returnNeeded){
//Grace a l'appel de la methode abstraite wrapListOfEntity, on recupere la bonne liste d'Objet: Station, Equipement,...
listOfEntity = wrapListOfEntity(resultSet);
}
//Déconnexion de la base
stopDBConnexion(connection);
return listOfEntity;
}
/**
* Execute la requete
* @param connection
* @param sqlRequest
* @return resultSet
*/
protected ResultSet executeCommande(Connection connection,String sqlRequest,boolean returnNeeded) {
resultSet=null;
try {
psInsert = connection.prepareStatement(sqlRequest);
if(returnNeeded){
psInsert.executeQuery();
resultSet = psInsert.getResultSet();
} else {
psInsert.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultSet;
}
/**
* Stop la connexion à la base
* @param connection
*/
protected void stopDBConnexion(Connection connection) {
//Stop la connexion à la bdd
}
/**
* Démarre la connexion à la base
*
* @return connection
*/
private Connection startDBConnexion() {
//Démarre la connexion à la bdd
}
/**
* Méthode abstraite pour wrapper un résultat de requête et renvoyer un objet
* @param rs
* @return entity
*/
protected T wrapEntity(ResultSet rs) {
T result = null;
try {
if (rs.next()) {
result = wrapSingleEntity(rs);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* Méthode pour wrapper un résultat de requête et renvoyer une liste d'objet
* @param rs
* @return List<Entity>
*/
protected List<T> wrapListOfEntity(ResultSet rs) {
List<T> result = new LinkedList<T>();
try {
while (rs.next()) {
result.add(wrapSingleEntity(rs));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* Méthode abstraite pour wrapper un unique résultat de requête et renvoyer
* un objet entité correspondant.
* @param rs
* @return entity
*/
protected abstract T wrapSingleEntity(ResultSet rs);
} |
Partager