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
|
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 = "/Users/Shared/database/";
// 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;
}
/**
* 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) {
if (driver.equals("org.apache.derby.jdbc.EmbeddedDriver")) {
boolean gotSQLExc = false;
try {
if(resultSet!=null)
resultSet.close();
if(psInsert!=null)
psInsert.close();
connection.close();
DriverManager.getConnection("jdbc:derby:;shutdown=true");
} catch (SQLException se) {
if (se.getSQLState().equals("XJ015")) {
gotSQLExc = true;
}
}
if (!gotSQLExc) {
System.out.println("la base n'a pas été arreté normalement");
} else {
System.out.println("la base est arreté normalement");
}
}
}
/**
* Démarre la connexion à la base
*
* @return connection
*/
private Connection startDBConnexion() {
Connection connection = null;
try {
Class.forName(driver);
System.out.println(driver + " charge. ");
Properties p = new Properties();
p.put("user", "xxxxxx");
p.put("password", "xxxxx");
connection = DriverManager.getConnection(connectionURL, p);
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
System.out
.println("\n >>> Verifier le classpath (libs derby) <<<\n");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
} |
Partager