package com.example.martin.projetv5; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; /** * Created by martin on 21/02/2017. */ public class StringBDD { private static final String TABLE_EVENTS = "table_events"; private static final String COL_ID_EV = "ID_ev"; private static final int NUM_COL_ID_EV = 0; private static final String COL_DATE = "Date"; private static final int NUM_COL_DATE = 1; private static final String COL_HEURE_EV = "Heure_ev"; private static final int NUM_COL_HEURE_EV = 2; private static final String COL_EVENT = "Event"; private static final int NUM_COL_EVENT = 3; private static final String TABLE_PRISES = "table_prises"; private static final String COL_ID_P = "ID_prise"; private static final int NUM_COL_ID_P = 0; private static final String COL_MEDOC = "Medoc"; private static final int NUM_COL_MEDOC = 1; private static final String COL_HEURE = "Heure"; private static final int NUM_COL_HEURE = 2; private static final String COL_BOOL = "Bool"; private static final int NUM_COL_BOOL = 3; private static final String TABLE_MEDOCS = "table_medocs"; private static final String COL_ID_M = "ID_medoc"; private static final int NUM_COL_ID_M = 0; private static final String COL_NOM1 = "Nom1"; private static final int NUM_COL_NOM1 = 1; private static final String COL_NOM2 = "Nom2"; private static final int NUM_COL_NOM2 = 2; private static final String COL_POSO = "Posologies"; private static final int NUM_COL_POSO = 3; private static final String COL_INFOS = "Indications"; private static final int NUM_COL_INFOS = 4; private static final String COL_LOGO = "Logo"; private static final int NUM_COL_LOGO = 5; private SQLiteDatabase bdd; private StringSQLite maBaseSQLite; private static final int VERSION_BDD = 1; public StringBDD(Context context) { maBaseSQLite = StringSQLite.getInstance(context); } public void open() { bdd = maBaseSQLite.getWritableDatabase(); } public void close() { bdd.close(); } public SQLiteDatabase getBDD() { return bdd; } //------- Gestion BDD event ----------- public long insertEvent(Event ev) { //Création d'un ContentValues (fonctionne comme une HashMap) ContentValues values = new ContentValues(); //on lui ajoute une valeur associée à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur) values.put(COL_ID_EV, ev.getId()); values.put(COL_DATE, ev.getDate()); values.put(COL_HEURE_EV, ev.getHeure()); values.put(COL_EVENT, ev.getEvenement()); //on insère l'objet dans la BDD via le ContentValues return bdd.insert(TABLE_EVENTS, null, values); } public int getIndiceMaxEvent(){ Cursor c = bdd.rawQuery("select "+COL_ID_EV+" from "+TABLE_EVENTS,null); return c.getCount(); } public Event getEventWithId(Integer id){ //Récupère dans un Cursor les valeurs correspondant à une prise contenue dans la BDD (ici on sélectionne la prise grâce à son titre) Cursor c = bdd.query(TABLE_EVENTS, new String[] {COL_ID_EV, COL_DATE, COL_HEURE_EV, COL_EVENT}, COL_ID_EV + " LIKE \"" + id +"\"", null, null, null, null); return cursorToEvent(c); } //Cette méthode permet de convertir un cursor en une prise private Event cursorToEvent(Cursor c){ //si aucun élément n'a été retourné dans la requête, on renvoie null if (c.getCount() == 0) return null; //Sinon on se place sur le premier élément c.moveToFirst(); //On créé une prise Event ev = new Event(null,null,null,null); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor ev.setId(c.getInt(NUM_COL_ID_EV)); ev.setDate(c.getString(NUM_COL_DATE)); ev.setHeure(c.getString(NUM_COL_HEURE_EV)); ev.setEvenement(c.getString(NUM_COL_EVENT)); //On ferme le cursor c.close(); //On retourne la prise return ev; } //------- Gestion BDD prises ----------- public long insertPrise(Prise2 prise){ //Création d'un ContentValues (fonctionne comme une HashMap) ContentValues values = new ContentValues(); //on lui ajoute une valeur associée à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur) values.put(COL_ID_P,prise.getId()); values.put(COL_MEDOC, prise.getIdMedoc()); values.put(COL_HEURE, prise.getHeure()); values.put(COL_BOOL, prise.getEffectuee()); //on insère l'objet dans la BDD via le ContentValues return bdd.insert(TABLE_PRISES, null, values); } public int updatePrise(int id, Prise2 prise){ //La mise à jour d'une prise dans la BDD fonctionne plus ou moins comme une insertion //il faut simplement préciser quelle prise on doit mettre à jour grâce à l'ID ContentValues values = new ContentValues(); values.put(COL_ID_P, prise.getId()); values.put(COL_MEDOC, prise.getIdMedoc()); values.put(COL_HEURE, prise.getHeure()); values.put(COL_BOOL, prise.getEffectuee()); return bdd.update(TABLE_PRISES, values, COL_ID_P + " = " +id, null); } public int removePriseWithID(int id){ //Suppression d'une prise de la BDD grâce à l'ID return bdd.delete(TABLE_PRISES, COL_ID_P + " = " +id, null); } public Prise2 getPriseWithId(Integer id){ //Récupère dans un Cursor les valeurs correspondant à une prise contenue dans la BDD (ici on sélectionne la prise grâce à son titre) Cursor c = bdd.query(TABLE_PRISES, new String[] {COL_ID_P, COL_MEDOC, COL_HEURE, COL_BOOL}, COL_ID_P + " LIKE \"" + id +"\"", null, null, null, null); return cursorToPrise(c); } public int getIndiceMaxPrise(){ Cursor c = bdd.rawQuery("select "+COL_ID_P+" from "+TABLE_PRISES,null); return c.getCount(); } //Cette méthode permet de convertir un cursor en une prise private Prise2 cursorToPrise(Cursor c){ //si aucun élément n'a été retourné dans la requête, on renvoie null if (c.getCount() == 0) return null; //Sinon on se place sur le premier élément c.moveToFirst(); //On créé une prise Prise2 prise = new Prise2(null,null,null,null); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor prise.setId(c.getInt(NUM_COL_ID_P)); prise.setIdMedoc(c.getInt(NUM_COL_MEDOC)); prise.setHeure(c.getString(NUM_COL_HEURE)); prise.setEffectuee(c.getString(NUM_COL_BOOL)); //On ferme le cursor c.close(); //On retourne la prise return prise; } //------- Gestion BDD medocs ----------- public long insertMedoc(Medicament medicament){ //Création d'un ContentValues (fonctionne comme une HashMap) ContentValues values = new ContentValues(); //on lui ajoute une valeur associée à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur) values.put(COL_ID_M, medicament.getIdM()); values.put(COL_NOM1, medicament.getNom1()); values.put(COL_NOM2, medicament.getNom2()); values.put(COL_POSO, medicament.getPosologies()); values.put(COL_INFOS, medicament.getIndications()); values.put(COL_LOGO, medicament.getLogo()); //on insère l'objet dans la BDD via le ContentValues return bdd.insert(TABLE_MEDOCS, null, values); } public int updateMedoc(int id, Medicament medicament){ //La mise à jour d'une prise dans la BDD fonctionne plus ou moins comme une insertion //il faut simplement préciser quelle prise on doit mettre à jour grâce à l'ID ContentValues values = new ContentValues(); values.put(COL_ID_M, medicament.getIdM()); values.put(COL_NOM1, medicament.getNom1()); values.put(COL_NOM2, medicament.getNom2()); values.put(COL_POSO, medicament.getPosologies()); values.put(COL_INFOS, medicament.getIndications()); values.put(COL_LOGO, medicament.getLogo()); return bdd.update(TABLE_MEDOCS, values, COL_ID_M + " = " +id, null); } public Medicament getMedocWithId(Integer id){ //Récupère dans un Cursor les valeurs correspondant à une prise contenue dans la BDD (ici on sélectionne la prise grâce à son titre) Cursor c = bdd.query(TABLE_MEDOCS, new String[] {COL_ID_M, COL_NOM1, COL_NOM2, COL_POSO, COL_INFOS, COL_LOGO}, COL_ID_M + " LIKE \"" + id +"\"", null, null, null, null); return cursorToMedoc(c); } public Medicament getMedocWithNom1(String nom){ //Récupère dans un Cursor les valeurs correspondant à une prise contenue dans la BDD (ici on sélectionne la prise grâce à son titre) Cursor c = bdd.query(TABLE_MEDOCS, new String[] {COL_ID_M, COL_NOM1, COL_NOM2, COL_POSO, COL_INFOS, COL_LOGO}, COL_NOM1 + " LIKE \"" + nom +"\"", null, null, null, null); return cursorToMedoc(c); } public int getIndiceMaxMedoc(){ Cursor c = bdd.rawQuery("select "+COL_ID_M+" from "+TABLE_MEDOCS,null); return c.getCount(); } private Medicament cursorToMedoc(Cursor c){ //si aucun élément n'a été retourné dans la requête, on renvoie null if (c.getCount() == 0) return null; //Sinon on se place sur le premier élément c.moveToFirst(); //On créé une prise Medicament medicament = new Medicament(null,null,null,null,null,null); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor medicament.setIdM(c.getInt(NUM_COL_ID_M)); medicament.setNom1(c.getString(NUM_COL_NOM1)); medicament.setNom2(c.getString(NUM_COL_NOM2)); medicament.setPosologies(c.getString(NUM_COL_POSO)); medicament.setIndications(c.getString(NUM_COL_INFOS)); medicament.setLogo(c.getString(NUM_COL_LOGO)); //On ferme le cursor c.close(); //On retourne la prise return medicament; } }