package org.hirodana.libtool.sqLite;
import java.util.ArrayList;
import org.hirodana.libtool.objects.CD;
import org.hirodana.libtool.objects.Catalogue;
import org.hirodana.libtool.objects.Dvd;
import org.hirodana.libtool.objects.Livre;
import org.hirodana.libtool.objects.Oeuvre;
import org.hirodana.libtool.objects.Revue;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class PanierSQLite extends SQLiteOpenHelper {
private static int DATABASE_VERSION = 5; //version de la base incrmenter chaque changement
private static final String BASE_PANIER = "panier.db"; //Nom de la bdd
//Noms des tables de la bdd
private static final String TABLE_LIVRES = "table_livres";
private static final String TABLE_CD = "table_cd";
private static final String TABLE_DVD = "table_dvd";
private static final String TABLE_REVUES = "table_revues";
//Nom et numros des collonnes des tables
private static final String COL_ID = "ID";
private static final int NUM_COL_ID = 0;
private static final String COL_TITRE = "Titre";
private static final int NUM_COL_TITRE = 1;
private static final String COL_DESCRIPTION = "Description";
private static final int NUM_COL_DESCRIPTION = 2;
private static final String COL_EDITEUR = "Editeur";
private static final int NUM_COL_EDITEUR = 3;
private static final String COL_NBEXEMPLAIRE = "Nb_Exemplaire";
private static final int NUM_COL_NBEXEMPLAIRE = 4 ;
private static final String COL_AUTEUR = "Auteur";
private static final int NUM_COL_AUTEUR = 5;
private static final String COL_REALISATEUR = "Ralisateur";
private static final int NUM_COL_REALISATEUR = 5;
private static final String COL_CHANTEUR = "Chanteur";
private static final int NUM_COL_CHANTEUR = 5;
private static final String COL_PERIOD = "Priodicit";
private static final int NUM_COL_PERIOD = 5;
private static final String COL_COLLECTION = "Collection";
private static final int NUM_COL_COLLECTION = 6;
private static final String COL_EAN = "EAN";
private static final int NUM_COL_EAN = 6;
private static final String COL_ISSN = "ISSN";
private static final int NUM_COL_ISSN = 6;
private static final String COL_ISBN = "ISBN";
private static final int NUM_COL_ISBN = 7;
private SQLiteDatabase bdd;
//Requete de cration de la table livre
private static final String CREATE_LIVRE = "CREATE TABLE " + TABLE_LIVRES + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE +" TEXT NOT NULL,"+ COL_DESCRIPTION +", "+
COL_EDITEUR +", "+ COL_NBEXEMPLAIRE +", "+ COL_AUTEUR +", "+ COL_COLLECTION +", "+ COL_ISBN + ");";
//Requete de cration de la table cd
private static final String CREATE_CD = "CREATE TABLE " + TABLE_CD + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE + " TEXT NOT NULL,"+ COL_DESCRIPTION +", "+
COL_EDITEUR +", "+ COL_NBEXEMPLAIRE +", "+COL_CHANTEUR +", "+ COL_EAN + ");";
//Requete de cration de la table dvd
private static final String CREATE_DVD = "CREATE TABLE " + TABLE_DVD + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE + " TEXT NOT NULL,"+ COL_DESCRIPTION +", "+
COL_EDITEUR +", "+ COL_NBEXEMPLAIRE +", "+COL_REALISATEUR +", "+ COL_EAN + ");";
//Requete de cration de la table revue
private static final String CREATE_REVUE = "CREATE TABLE " + TABLE_REVUES + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE + " TEXT NOT NULL,"+ COL_DESCRIPTION +", "+
COL_EDITEUR +", "+ COL_NBEXEMPLAIRE +", "+ COL_PERIOD +", "+ COL_ISSN + ");";
public PanierSQLite(Context context) {
//On cr la base
super(context, BASE_PANIER, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//on cr les tables partir des requtes
db.execSQL(CREATE_LIVRE);
db.execSQL(CREATE_CD);
db.execSQL(CREATE_DVD);
db.execSQL(CREATE_REVUE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("onUpgrade", "Mise jour de la table version : "+newVersion);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIVRES + ";");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CD + ";");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DVD + ";");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_REVUES + ";");
onCreate(db);
}
public void open(){
//on ouvre la BDD en criture
Log.i("openDB", "Checking sqliteDBInstance...");
if(this.bdd == null)
{
Log.i("openDB", "Creating sqliteDBInstance...");
this.bdd = this.getWritableDatabase();
}
}
public void close(){
//on ferme l'accs la BDD
bdd.close();
}
public SQLiteDatabase getBDD(){
return bdd;
}
public Catalogue getCatalogue(){
Catalogue catalogue = new Catalogue();
//on lui ajoute toutes les ArrayList<Oeuvre>()
catalogue.addLivres(getAllLivres());
catalogue.addCD(getAllCD());
catalogue.addDvd(getAllDvd());
catalogue.addRevue(getAllRevues());
return catalogue;
}
/** Appele pour vider le panier **/
public void videCatalogue() {
bdd.delete(TABLE_CD, null, null);
bdd.delete(TABLE_LIVRES, null, null);
bdd.delete(TABLE_DVD, null, null);
bdd.delete(TABLE_REVUES, null, null);
}
//-------------------------------------------------------------Livres---------------------------------------------------
public long insertLivre(Livre livre){
//Cration d'un ContentValues (fonctionne comme une HashMap)
ContentValues valeurs = new ContentValues();
//on lui ajoute une valeur associ une cl (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
valeurs.put(COL_ID, livre.getIdOeuvre());
valeurs.put(COL_TITRE, livre.getTitre());
valeurs.put(COL_DESCRIPTION, livre.getDescription());
valeurs.put(COL_EDITEUR, livre.getEditeur());
valeurs.put(COL_NBEXEMPLAIRE, livre.getNbExemplaireDispo());
valeurs.put(COL_AUTEUR, livre.getAuteur());
valeurs.put(COL_COLLECTION, livre.getCollection());
valeurs.put(COL_ISBN, livre.getIsbn());
//on insre l'objet dans la BDD via le ContentValues
Log.i("insertion Panier","On insert : "+livre.getTitre());
return bdd.insert(TABLE_LIVRES, null, valeurs);
}
public int removeLivreWithId(int id){
//Suppression d'un livre de la BDD grce l'ID
return bdd.delete(TABLE_LIVRES, COL_ID + " LIKE \"" + id +"\"", null);
}
public ArrayList<Oeuvre> getAllLivres(){
Cursor c = bdd.query(TABLE_LIVRES, null, null , null, null, null, null);
Log.v("BDD","NbLivres = "+c.getCount());
if(c.moveToFirst()){
ArrayList<Oeuvre> panierLivres= new ArrayList<Oeuvre>();
do{
Log.v("Contenu Base",c.getString(c.getColumnIndex(COL_TITRE)));
panierLivres.add(cursorToLivre(c));
}while (c.moveToNext());
c.close();
return panierLivres;
}
else
{
return new ArrayList<Oeuvre>();
}
}
public Livre getLivreWithId(int id){
//Rcupre dans un Cursor les valeur correspondant un livre contenu dans la BDD (ici on slectionne le livre grce son id)
Cursor c = bdd.query(TABLE_LIVRES, new String[] {COL_ID, COL_TITRE, COL_DESCRIPTION, COL_EDITEUR, COL_NBEXEMPLAIRE, COL_AUTEUR, COL_COLLECTION, COL_ISBN}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null);
//si aucun lment n'a t retourn dans la requte, on renvoie null
if (c.getCount() == 0)
return null;
//Sinon on se place sur le premier lment
c.moveToFirst();
Livre livre = cursorToLivre(c);
c.close();
return livre ;
}
//Cette mthode permet de convertir un cursor en un livre
private Livre cursorToLivre(Cursor c){
//On cr un livre
Livre livre = new Livre();
//on lui affecte toutes les infos grce aux infos contenues dans le Cursor
livre.setId(c.getInt(NUM_COL_ID));
livre.setTitre(c.getString(NUM_COL_TITRE));
livre.setDescription(c.getString(NUM_COL_DESCRIPTION));
livre.setEditeur(c.getString(NUM_COL_EDITEUR));
livre.setNbExemplaire(c.getInt(NUM_COL_NBEXEMPLAIRE));
livre.setAuteur(c.getString(NUM_COL_AUTEUR));
livre.setIsbn(c.getString(NUM_COL_ISBN));
livre.setCollection(c.getString(NUM_COL_COLLECTION));
Log.i("Panier","On convertit : "+livre.getTitre());
c.close();
//On retourne le livre
return livre;
}
//-------------------------------------------------------------DVD---------------------------------------------------
public long insertDvd(Dvd dvd){
//Cration d'un ContentValues (fonctionne comme une HashMap)
ContentValues valeurs = new ContentValues();
//on lui ajoute une valeur associ une cl (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
valeurs.put(COL_ID, dvd.getIdOeuvre());
valeurs.put(COL_TITRE, dvd.getTitre());
valeurs.put(COL_DESCRIPTION, dvd.getDescription());
valeurs.put(COL_EDITEUR, dvd.getEditeur());
valeurs.put(COL_NBEXEMPLAIRE, dvd.getNbExemplaireDispo());
valeurs.put(COL_REALISATEUR, dvd.getRealisateur());
valeurs.put(COL_EAN, dvd.getEan());
//on insre l'objet dans la BDD via le ContentValues
Log.i("insertion Panier","On insert : "+dvd.getTitre());
return bdd.insert(TABLE_DVD, null, valeurs);
}
public int removeDvdWithId(int id){
//Suppression d'un DVD de la BDD grce l'ID
return bdd.delete(TABLE_DVD, COL_ID + " LIKE \"" + id +"\"", null);
}
public ArrayList<Oeuvre> getAllDvd(){
Cursor c = bdd.query(TABLE_DVD, null, null , null, null, null, null);
Log.v("BDD","NbDVD = "+c.getCount());
if(c.moveToFirst()){
ArrayList<Oeuvre> panierDvd= new ArrayList<Oeuvre>();
do{
Log.v("Contenu Base",c.getString(c.getColumnIndex(COL_TITRE)));
panierDvd.add(cursorToDvd(c));
}while (c.moveToNext());
c.close();
return panierDvd;
}
else
{
return new ArrayList<Oeuvre>();
}
}
public Dvd getDvdWithId(int id){
//Rcupre dans un Cursor les valeur correspondant un DVD contenu dans la BDD (ici on slectionne le DVD grce son id)
Cursor c = bdd.query(TABLE_DVD, new String[] {COL_ID, COL_TITRE, COL_DESCRIPTION, COL_EDITEUR, COL_NBEXEMPLAIRE, COL_REALISATEUR, COL_EAN}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null);
//si aucun lment n'a t retourn dans la requte, on renvoie null
if (c.getCount() == 0)
return null;
//Sinon on se place sur le premier lment
c.moveToFirst();
Dvd dvd = cursorToDvd(c);
c.close();
return dvd ;
}
//Cette mthode permet de convertir un cursor en un livre
private Dvd cursorToDvd(Cursor c){
//On cr un livre
Dvd dvd = new Dvd();
//on lui affecte toutes les infos grce aux infos contenues dans le Cursor
dvd.setId(c.getInt(NUM_COL_ID));
dvd.setTitre(c.getString(NUM_COL_TITRE));
dvd.setDescription(c.getString(NUM_COL_DESCRIPTION));
dvd.setEditeur(c.getString(NUM_COL_EDITEUR));
dvd.setNbExemplaire(c.getInt(NUM_COL_NBEXEMPLAIRE));
dvd.setRealisateur(c.getString(NUM_COL_REALISATEUR));
dvd.setEan(c.getString(NUM_COL_EAN));
Log.i("Panier","On convertit : "+dvd.getTitre());
c.close();
//On retourne le livre
return dvd;
}
//-------------------------------------------------------------CD----------------------------------------------------
public long insertCD(CD cd){
//Cration d'un ContentValues (fonctionne comme une HashMap)
ContentValues valeurs = new ContentValues();
//on lui ajoute une valeur associ une cl (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
valeurs.put(COL_ID, cd.getIdOeuvre());
valeurs.put(COL_TITRE, cd.getTitre());
valeurs.put(COL_DESCRIPTION, cd.getDescription());
valeurs.put(COL_EDITEUR, cd.getEditeur());
valeurs.put(COL_NBEXEMPLAIRE, cd.getNbExemplaireDispo());
valeurs.put(COL_CHANTEUR, cd.getInterprete());
valeurs.put(COL_EAN, cd.getEan());
//on insre l'objet dans la BDD via le ContentValues
return bdd.insert(TABLE_CD, null, valeurs);
}
public int removeCDWithID(int id){
//Suppression d'un CD de la BDD grce l'ID
return bdd.delete(TABLE_CD, COL_ID + " = " +id, null);
}
public ArrayList<Oeuvre> getAllCD(){
Cursor c = bdd.query(TABLE_CD, null, null , null, null, null, null);
Log.v("BDD","NbCD = "+c.getCount());
if(c.getCount() >0)
{
ArrayList<Oeuvre> panierCD= new ArrayList<Oeuvre>();
int i = 0;
while (c.moveToNext())
{
Log.v("Contenu Base",c.getString(c.getColumnIndex(COL_TITRE)));
panierCD.add(cursorToCD(c));
i++;
}
c.close();
return panierCD;
}
else
{
return new ArrayList<Oeuvre>();
}
}
public CD getCDWithId(int id){
//Rcupre dans un Cursor les valeur correspondant un CD contenu dans la BDD (ici on slectionne le livre grce son id)
Cursor c = bdd.query(TABLE_CD, new String[] {COL_ID, COL_TITRE, COL_DESCRIPTION, COL_EDITEUR, COL_NBEXEMPLAIRE, COL_CHANTEUR, COL_EAN}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null);
//si aucun lment n'a t retourn dans la requte, on renvoie null
if (c.getCount() == 0)
return null;
//Sinon on se place sur le premier lment
c.moveToFirst();
CD cd = cursorToCD(c);
c.close();
return cd ;
}
//Cette mthode permet de convertir un cursor en un CD
private CD cursorToCD(Cursor c){
//On cr un CD
CD cd = new CD();
//on lui affecte toutes les infos grce aux infos contenues dans le Cursor
cd.setId(c.getInt(NUM_COL_ID));
cd.setTitre(c.getString(NUM_COL_TITRE));
cd.setDescription(c.getString(NUM_COL_DESCRIPTION));
cd.setEditeur(c.getString(NUM_COL_EDITEUR));
cd.setNbExemplaire(c.getInt(NUM_COL_NBEXEMPLAIRE));
cd.setChanteur(c.getString(NUM_COL_CHANTEUR));
cd.setEan(c.getString(NUM_COL_EAN));
c.close();
//On retourne le CD
return cd;
}
//-------------------------------------------------------------Revues------------------------------------------------
public long insertRevue(Revue revue){
//Cration d'un ContentValues (fonctionne comme une HashMap)
ContentValues valeurs = new ContentValues();
//on lui ajoute une valeur associ une cl (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
valeurs.put(COL_ID, revue.getIdOeuvre());
valeurs.put(COL_TITRE, revue.getTitre());
valeurs.put(COL_DESCRIPTION, revue.getDescription());
valeurs.put(COL_EDITEUR, revue.getEditeur());
valeurs.put(COL_NBEXEMPLAIRE, revue.getNbExemplaireDispo());
valeurs.put(COL_ISSN, revue.getIssn());
valeurs.put(COL_PERIOD,revue.getPeriodicite());
//on insre l'objet dans la BDD via le ContentValues
return bdd.insert(TABLE_REVUES, null, valeurs);
}
public int removeRevueWithID(int id){
//Suppression d'une revue de la BDD grce l'ID
return bdd.delete(TABLE_REVUES, COL_ID + " = " +id, null);
}
public ArrayList<Oeuvre> getAllRevues(){
Cursor c = bdd.query(TABLE_REVUES, null, null , null, null, null, null);
Log.v("BDD","NbRevues = "+c.getCount());
if(c.getCount() >0)
{
ArrayList<Oeuvre> panierRevues= new ArrayList<Oeuvre>();
int i = 0;
while (c.moveToNext())
{
Log.v("Contenu Base",c.getString(c.getColumnIndex(COL_TITRE)));
panierRevues.add(cursorToRevue(c));
i++;
}
c.close();
return panierRevues;
}
else
{
return new ArrayList<Oeuvre>();
}
}
public Revue getRevueWithId(int id){
//Rcupre dans un Cursor les valeur correspondant une revue contenue dans la BDD (ici on slectionne la revue grce son id)
Cursor c = bdd.query(TABLE_REVUES, new String[] {COL_ID, COL_TITRE, COL_DESCRIPTION, COL_EDITEUR, COL_NBEXEMPLAIRE, COL_ISSN, COL_PERIOD}, COL_ID + " LIKE \"" + id +"\"", null, null, null, null);
//si aucun lment n'a t retourn dans la requte, on renvoie null
if (c.getCount() == 0)
return null;
//Sinon on se place sur le premier lment
c.moveToFirst();
Revue revue = cursorToRevue(c);
c.close();
return revue;
}
//Cette mthode permet de convertir un cursor en une revue
private Revue cursorToRevue(Cursor c){
//On cr une revue
Revue revue = new Revue();
//on lui affecte toutes les infos grce aux infos contenues dans le Cursor
revue.setId(c.getInt(NUM_COL_ID));
revue.setTitre(c.getString(NUM_COL_TITRE));
revue.setDescription(c.getString(NUM_COL_DESCRIPTION));
revue.setEditeur(c.getString(NUM_COL_EDITEUR));
revue.setNbExemplaire(c.getInt(NUM_COL_NBEXEMPLAIRE));
revue.setPeriod(c.getString(NUM_COL_PERIOD));
revue.setIssn(c.getString(NUM_COL_ISSN));
c.close();
//On retourne la revue
return revue;
}
}
|