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 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
| public class EmployesBDD {
//permet de gérer linsertion, la suppression, la modification des employes dans la BDD et de faire des requêtes pour récupérer un employé contenu dans la BDD
/*
* création d'une couche d'abstraction afin de proposer des méthodes d'accès et de manipulation simplifiées à la bbd
* et d'apporter une indépendance vis-à-vis de la source de données. Si, par ex, on souhaite changer de type de source,
* et travailler avec des services internet ou des fichiers, alors il ne faudra changer que le code de cette
* classe d'abstraction
*/
private static final int VERSION_BDD = 1;
private static final String NOM_BDD = "ditimi.db";
private static final String TABLE_EMPLOYES = "table_employes";
private static final String COL_ID = "ID";
private static final int NUM_COL_ID = 0;
private static final String COL_NOM = "Nom";
private static final int NUM_COL_NOM = 1;
private static final String COL_PRENOM = "Prenom";
private static final int NUM_COL_PRENOM = 2;
private static final String COL_ROLE = "Role";
private static final int NUM_COL_ROLE = 3;
private static final String COL_POSTE = "Poste";
private static final int NUM_COL_POSTE = 4;
private static final String COL_TELEPHONE = "Telephone";
private static final int NUM_COL_TELEPHONE = 5;
private static final String COL_EMAIL = "Email";
private static final int NUM_COL_EMAIL = 6;
//l'instance de la bdd qui sera manipulée au travers de cette classe
private SQLiteDatabase bdd;
private MaBaseSQLite maBaseSQLite;
public EmployesBDD(Context context){
//On créer la BDD et sa table
maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
}
//on ouvre la BDD en écriture
public SQLiteDatabase open(){
bdd = maBaseSQLite.getWritableDatabase();
return bdd;
}
//on ferme l'accès à la BDD
public void close(){
bdd.close();
}
public SQLiteDatabase getBDD(){
return bdd;
}
//récupère un employé en fonction de son nom
public Employe getEmploye(String nom) {
Cursor c = bdd.query(TABLE_EMPLOYES, new String[]{
COL_ID, COL_NOM, COL_PRENOM, COL_POSTE, COL_ROLE, COL_EMAIL, COL_TELEPHONE},
null, null, null, COL_NOM + " LIKE " + nom, null);
return cursorToEmploye(c);
}
//récupère un employé en fonction de son id
public Employe getEmploye(int id) {
Cursor c = bdd.query(TABLE_EMPLOYES, new String[]{
COL_ID, COL_NOM, COL_PRENOM, COL_POSTE, COL_ROLE, COL_EMAIL, COL_TELEPHONE},
null, null, null, COL_ID + " LIKE " + id, null);
return cursorToEmploye(c);
}
//supprime un employé à partir de son id (normalement boolean au lieu de int ?)
public int removeEmployeWithID(int id){
//Suppression d'un employé de la BDD grâce à l'ID
return bdd.delete(TABLE_EMPLOYES, COL_ID + " = " +id, null);
}
//la méthode cursorToEmployes permet de transformer le curseur de résultat en objet métier
private Employe cursorToEmploye (Cursor c) {
//si la requête ne renvoie pas de résultat
if (c.getCount() == 0)
return null;
Employe retEmploye = new Employe();
//extraction des valeurs depuis le curseur
retEmploye.setId(c.getInt(NUM_COL_ID));
retEmploye.setNom(c.getString(NUM_COL_NOM));
retEmploye.setPrenom(c.getString(NUM_COL_PRENOM));
retEmploye.setRole(c.getString(NUM_COL_ROLE));
retEmploye.setPoste(c.getString(NUM_COL_POSTE));
retEmploye.setTelephone(c.getString(NUM_COL_TELEPHONE));
retEmploye.setEmail(c.getString(NUM_COL_EMAIL));
//ferme le curseur pour libérer les ressources
c.close();
return retEmploye;
}
//retourne tous les employés de la bdd
public ArrayList<Employe> getAllEmploye(){
Cursor c = bdd.query(TABLE_EMPLOYES, new String[]{
COL_ID, COL_NOM, COL_PRENOM, COL_POSTE, COL_ROLE, COL_EMAIL, COL_TELEPHONE},
null, null, null, null, null);
return cursorToEmployes(c);
}
private ArrayList<Employe> cursorToEmployes(Cursor c) {
//si la requête ne renvoie pas de résultat
if (c.getCount() == 0)
return new ArrayList<Employe>(0);
ArrayList<Employe> retEmployes = new ArrayList<Employe>(c.getCount());
c.moveToFirst();
do {
Employe employe = new Employe();
employe.setId(c.getInt(NUM_COL_ID));
employe.setNom(c.getString(NUM_COL_NOM));
employe.setPrenom(c.getString(NUM_COL_PRENOM));
employe.setRole(c.getString(NUM_COL_ROLE));
employe.setPoste(c.getString(NUM_COL_POSTE));
employe.setTelephone(c.getString(NUM_COL_TELEPHONE));
employe.setEmail(c.getString(NUM_COL_EMAIL));
retEmployes.add(employe);
} while (c.moveToNext());
//ferme le curseur pour libérer les ressources
c.close();
return retEmployes;
}
//insérer un employé dans la table des employés (code en {} à vérifier)
public long insertEmploye(Employe employe){
//Création d'un ContentValues (fonctionne comme une HashMap)
ContentValues values = new ContentValues();
//on lui ajoute une valeur associé à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
values.put(COL_NOM, employe.getNom());
values.put(COL_PRENOM, employe.getPrenom());
values.put(COL_ROLE, employe.getRole());
values.put(COL_POSTE, employe.getPoste());
values.put(COL_TELEPHONE, employe.getTelephone());
values.put(COL_EMAIL, employe.getEmail());
//on insère l'objet dans la BDD via le ContentValues
return bdd.insert(TABLE_EMPLOYES, null, values);
}
//mettre à jour un employé dans la table des employés (code en {} à vérifier)
public int updateEmploye(int id, Employe employeToUpdate){
//La mise à jour d'un employé dans la BDD fonctionne plus ou moins comme une insertion
//il faut simple préciser quel employé on doit mettre à jour grâce à l'ID
ContentValues values = new ContentValues();
values.put(COL_NOM, employeToUpdate.getNom());
values.put(COL_PRENOM, employeToUpdate.getPrenom());
values.put(COL_ROLE, employeToUpdate.getRole());
values.put(COL_POSTE, employeToUpdate.getPoste());
values.put(COL_TELEPHONE, employeToUpdate.getTelephone());
values.put(COL_EMAIL, employeToUpdate.getEmail());
return bdd.update(TABLE_EMPLOYES, values, COL_ID + " = " +id, null);
}
//je ne sais pas si je dois laisser cette dernière partie dans cette activity
private class MaBaseSQLIte extends SQLiteOpenHelper {
public MaBaseSQLIte(Context context, String name,
CursorFactory cursorfactory, int version) {
super(context, name, cursorfactory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
// TODO Auto-generated method stub
}
}
} |
Partager