JGuizard
2/4/2016 - 9:23 PM

database.java

package gfg.app.appdiario;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

import javax.net.ssl.SSLContext;

public class Database {

    SQLiteDatabase mDb;
    DbHelper mDbHelper;
    Context mContext;
    private static final String DB_NAME="Activitydb";
    private static final int DB_VERSION=2;

    public Database(Context ctx)
    {
        mContext=ctx;
        mDbHelper=new DbHelper(ctx, DB_NAME, null, DB_VERSION);
    }

    public void open()
    {
        Log.d("OPENING DATABASE","...");
        mDb=mDbHelper.getWritableDatabase();
        Log.d("DATABASE OPEN","OK");
    }

    public void close()
    { //chiudiamo il database su cui agiamo
        mDb.close();
    }


    public List<Subject> getSubject()
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.SUBJECTS_TABLE,null);
        List<Subject> subjects=new ArrayList();
        cursor.moveToFirst();
        try
        {
            String code=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_CODE));
            String name=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_NAME));
            String color=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_COLOR));
            subjects.add(new Subject(code,name,color));
        }
        catch (Exception e){e.printStackTrace();};
        while(cursor.moveToNext())
        {
            String code=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_CODE));
            String name=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_NAME));
            String color=cursor.getString(cursor.getColumnIndex(ProductsMetaData.SUBJECT_COLOR));
            subjects.add(new Subject(code,name,color));
        }
        return subjects;
   }

    public int getSubjectColor(String name)
    {
        Cursor cursor=mDb.rawQuery("SELECT "+ProductsMetaData.SUBJECT_COLOR+" FROM "+ProductsMetaData.SUBJECTS_TABLE
                +" WHERE "+ProductsMetaData.SUBJECT_NAME+"='"+name+"'",null);
        List<Subject> subjects=new ArrayList();
        cursor.moveToFirst();
        int color=0;
        try
        {
             color=cursor.getInt(cursor.getColumnIndex(ProductsMetaData.SUBJECT_COLOR));
        }
        catch (Exception e){e.printStackTrace();};
        return color;
    }

    public void addFavourite(Favourite fav)
    {
        ContentValues cv = new ContentValues();
        cv.put(ProductsMetaData.FAVOURITE_NAME,fav.getName());
        cv.put(ProductsMetaData.FAVOURITE_URL,fav.getUrl());
        mDb.insert(ProductsMetaData.FAVOURITE_TABLE, null, cv);
    }

    public List<Favourite> getFavourites()
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.FAVOURITE_TABLE,null);
        List<Favourite> favs=new ArrayList();
        cursor.moveToFirst();
        try
        {
            String name=cursor.getString(cursor.getColumnIndex(ProductsMetaData.FAVOURITE_NAME));
            String url=cursor.getString(cursor.getColumnIndex(ProductsMetaData.FAVOURITE_URL));
            favs.add(new Favourite(name,url));
        }
        catch (Exception e){e.printStackTrace();};
        while(cursor.moveToNext())
        {
            String name=cursor.getString(cursor.getColumnIndex(ProductsMetaData.FAVOURITE_NAME));
            String url=cursor.getString(cursor.getColumnIndex(ProductsMetaData.FAVOURITE_URL));
            favs.add(new Favourite(name,url));
        }
        return favs;
    }

    public boolean removeFavorite(String name)
    {
        Cursor cursor=mDb.rawQuery("DELETE FROM "+ProductsMetaData.FAVOURITE_TABLE+" WHERE "
                +ProductsMetaData.FAVOURITE_NAME+"='"+name+"'",null);
        cursor.moveToFirst();
        return true;
    }

    public void clearSubject()
    {
        Cursor cursor=mDb.rawQuery("DELETE FROM "+ProductsMetaData.SUBJECTS_TABLE,null);
        cursor.moveToFirst();
    }

    public void addSubject(Subject subject)
    {
        ContentValues cv = new ContentValues();
        cv.put(ProductsMetaData.SUBJECT_CODE,subject.getCode());
        cv.put(ProductsMetaData.SUBJECT_NAME,subject.getName());
        cv.put(ProductsMetaData.SUBJECT_COLOR,subject.getColor());
        mDb.insert(ProductsMetaData.SUBJECTS_TABLE, null, cv);
    }

    public void updateSubject(Subject subject)
    {

       String query="UPDATE "+ProductsMetaData.SUBJECTS_TABLE +" SET "+ProductsMetaData.SUBJECT_COLOR+"='"+subject.getColor()+"' WHERE "+ProductsMetaData.SUBJECT_CODE+"='"+subject.getCode()+"'";
       Cursor cursor=mDb.rawQuery(query, null);
        cursor.moveToFirst();
        cursor.close();
    }

    public void addEvent(Event event)
    {
        ContentValues cv = new ContentValues();
        cv.put(ProductsMetaData.EVENT_SUBJECT,event.getSubject());
        cv.put(ProductsMetaData.EVENT_TYPE,event.getType());
        cv.put(ProductsMetaData.EVENT_ARGUMENTS,event.getArguments());
        cv.put(ProductsMetaData.EVENT_DATE,event.getDate());
        mDb.insert(ProductsMetaData.EVENTS_TABLE, null, cv);
    }

    public List<Event> getEvents()
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.EVENTS_TABLE,null);
        List<Event> events=new ArrayList();
        cursor.moveToFirst();
        try
        {
            String id=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ID));
            String subject=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_SUBJECT));
            String type=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_TYPE));
            String arguments=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ARGUMENTS));
            String date=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_DATE));
            events.add(new Event(id,subject,type,arguments,date));
        }
        catch (Exception e){e.printStackTrace();};
        while(cursor.moveToNext())
        {
            String id=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ID));
            String subject=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_SUBJECT));
            String type=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_TYPE));
            String arguments=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ARGUMENTS));
            String date=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_DATE));
            events.add(new Event(id,subject,type,arguments,date));
        }
        return events;
    }



    public List<Event> getEventForDate(String mydate)
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.EVENTS_TABLE+" WHERE "+ProductsMetaData.EVENT_DATE+"='"+mydate+"'",null);
        List<Event> events=new ArrayList();
        cursor.moveToFirst();
        try
        {
            String id=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ID));
            String subject=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_SUBJECT));
            String type=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_TYPE));
            String arguments=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ARGUMENTS));
            String date=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_DATE));
            events.add(new Event(id,subject,type,arguments,date));
        }
        catch (Exception e){e.printStackTrace();};
        while(cursor.moveToNext())
        {
            String id=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ID));
            String subject=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_SUBJECT));
            String type=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_TYPE));
            String arguments=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ARGUMENTS));
            String date=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_DATE));
            events.add(new Event(id,subject,type,arguments,date));
        }
        return events;
    }

    public boolean updateEvent(String id,String arguments)
    {
        Cursor cursor=mDb.rawQuery("UPDATE "+ProductsMetaData.EVENTS_TABLE+" SET "+ProductsMetaData.EVENT_ARGUMENTS+"='"+arguments+"' WHERE "+ProductsMetaData.EVENT_ID+"='"+id+"'",null);
        cursor.moveToFirst();
        return true;
    }

    public boolean removeEvent(String id)
    {
        Cursor cursor=mDb.rawQuery("DELETE FROM "+ProductsMetaData.EVENTS_TABLE+" WHERE "
                +ProductsMetaData.EVENT_ID+"='"+id+"'",null);
        cursor.moveToFirst();
        return true;
    }

    public Event getEventForId(String tid)
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.EVENTS_TABLE+" WHERE "+ProductsMetaData.EVENT_ID+"='"+tid+"'",null);
        List<Event> events=new ArrayList();
        cursor.moveToFirst();
        String id=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ID));
        String subject=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_SUBJECT));
        String type=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_TYPE));
        String arguments=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_ARGUMENTS));
        String date=cursor.getString(cursor.getColumnIndex(ProductsMetaData.EVENT_DATE));
        return new Event(id,subject,type,arguments,date);
    }

    public void clearCalendar()
    {
        Cursor cursor=mDb.rawQuery("DELETE FROM "+ProductsMetaData.CALENDAR_TABLE,null);
        cursor.moveToFirst();
    }

    public void addCalendar(Calendar calendar,int days)
    {
        for(int i=0;i<days;i++)
        {
            ContentValues cv = new ContentValues();
            cv.put(ProductsMetaData.CALENDAR_DAY,String.valueOf(i));
            cv.put(ProductsMetaData.CALENDAR_HOUR_1,calendar.getDay(i).getSubject(0).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_2,calendar.getDay(i).getSubject(1).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_3,calendar.getDay(i).getSubject(2).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_4,calendar.getDay(i).getSubject(3).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_5,calendar.getDay(i).getSubject(4).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_6,calendar.getDay(i).getSubject(5).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_7,calendar.getDay(i).getSubject(6).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_8,calendar.getDay(i).getSubject(7).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_9,calendar.getDay(i).getSubject(8).getName());
            cv.put(ProductsMetaData.CALENDAR_HOUR_1C,calendar.getDay(i).getSubject(0).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_2C,calendar.getDay(i).getSubject(1).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_3C,calendar.getDay(i).getSubject(2).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_4C,calendar.getDay(i).getSubject(3).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_5C,calendar.getDay(i).getSubject(4).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_6C,calendar.getDay(i).getSubject(5).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_7C,calendar.getDay(i).getSubject(6).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_8C,calendar.getDay(i).getSubject(7).getColor());
            cv.put(ProductsMetaData.CALENDAR_HOUR_9C,calendar.getDay(i).getSubject(8).getColor());
            mDb.insert(ProductsMetaData.CALENDAR_TABLE, null, cv);
        }
    }

    public Calendar getCalendar(int days)
    {
        Calendar calendar=new Calendar(days);
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.CALENDAR_TABLE,null);
        cursor.moveToFirst();
        Subject subject=null;
        int i=0;
        try
        {
            Day day=new Day(9);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_1)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_1C)));
            day.setSubject(0,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_2)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_2C)));
            day.setSubject(1,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_3)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_3C)));
            day.setSubject(2,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_4)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_4C)));
            day.setSubject(3,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_5)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_5C)));
            day.setSubject(4,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_6)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_6C)));
            day.setSubject(5,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_7)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_7C)));
            day.setSubject(6,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_8)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_8C)));
            day.setSubject(7,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_9)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_9C)));
            day.setSubject(8,subject);
            calendar.setDay(i++,day);

        }
        catch (Exception e){e.printStackTrace();};
        while(cursor.moveToNext())
        {
            Day day=new Day(9);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_1)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_1C)));
            day.setSubject(0,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_2)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_2C)));
            day.setSubject(1,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_3)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_3C)));
            day.setSubject(2,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_4)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_4C)));
            day.setSubject(3,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_5)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_5C)));
            day.setSubject(4,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_6)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_6C)));
            day.setSubject(5,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_7)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_7C)));
            day.setSubject(6,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_8)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_8C)));
            day.setSubject(7,subject);
            subject=new Subject(null,cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_9)),cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_9C)));
            day.setSubject(8,subject);
            calendar.setDay(i++,day);
        }
        return calendar;
    }

    public void addDay(int index,Day day)
    {
        ContentValues cv = new ContentValues();
        cv.put(ProductsMetaData.CALENDAR_DAY,String.valueOf(index));
        cv.put(ProductsMetaData.CALENDAR_HOUR_1,day.getSubject(0).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_2,day.getSubject(1).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_3,day.getSubject(2).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_4,day.getSubject(3).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_5,day.getSubject(4).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_6,day.getSubject(5).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_7,day.getSubject(6).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_8,day.getSubject(7).getCode());
        cv.put(ProductsMetaData.CALENDAR_HOUR_9,day.getSubject(8).getCode());
        mDb.insert(ProductsMetaData.EVENTS_TABLE, null, cv);
    }

    public Day getDay(int nday)
    {
        Cursor cursor=mDb.rawQuery("SELECT * FROM "+ProductsMetaData.CALENDAR_TABLE+" WHERE "+ProductsMetaData.CALENDAR_DAY+"="+String.valueOf(nday),null);
        Day day=new Day(5);
        Subject subject=null;
        cursor.moveToFirst();
        try
        {
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_1)),null,null);
            day.setSubject(0,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_2)),null,null);
            day.setSubject(1,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_3)),null,null);
            day.setSubject(2,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_4)),null,null);
            day.setSubject(3,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_5)),null,null);
            day.setSubject(4,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_6)),null,null);
            day.setSubject(5,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_7)),null,null);
            day.setSubject(6,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_8)),null,null);
            day.setSubject(7,subject);
            subject=new Subject(cursor.getString(cursor.getColumnIndex(ProductsMetaData.CALENDAR_HOUR_9)),null,null);
            day.setSubject(8,subject);
        }
        catch (Exception e){e.printStackTrace();return null;};
        return day;
    }

    static class ProductsMetaData
    {
        static final String SUBJECTS_TABLE = "subjects";
        static final String SUBJECT_CODE = "code";
        static final String SUBJECT_NAME = "name";
        static final String SUBJECT_COLOR = "color";

        static final String EVENTS_TABLE = "events";
        static final String EVENT_ID = "id";
        static final String EVENT_SUBJECT = "subject";
        static final String EVENT_TYPE = "type";
        static final String EVENT_ARGUMENTS = "arguments";
        static final String EVENT_DATE = "date";


        static final String CALENDAR_TABLE = "calendar";
        static final String CALENDAR_DAY = "subject";
        static final String CALENDAR_HOUR_1= "hour1";
        static final String CALENDAR_HOUR_2= "hour2";
        static final String CALENDAR_HOUR_3= "hour3";
        static final String CALENDAR_HOUR_4= "hour4";
        static final String CALENDAR_HOUR_5= "hour5";
        static final String CALENDAR_HOUR_6= "hour6";
        static final String CALENDAR_HOUR_7= "hour7";
        static final String CALENDAR_HOUR_8= "hour8";
        static final String CALENDAR_HOUR_9= "hour9";

        static final String CALENDAR_HOUR_1C= "color1";
        static final String CALENDAR_HOUR_2C= "color2";
        static final String CALENDAR_HOUR_3C= "color3";
        static final String CALENDAR_HOUR_4C= "color4";
        static final String CALENDAR_HOUR_5C= "color5";
        static final String CALENDAR_HOUR_6C= "color6";
        static final String CALENDAR_HOUR_7C= "color7";
        static final String CALENDAR_HOUR_8C= "color8";
        static final String CALENDAR_HOUR_9C= "color9";


        static String FAVOURITE_TABLE = "favourite";
        static String FAVOURITE_NAME = "name";
        static String FAVOURITE_URL = "url";
    }

    private static final String FAVOURITE_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
            + ProductsMetaData.FAVOURITE_TABLE + " ("
            + ProductsMetaData.FAVOURITE_NAME + " text not null, "
            + ProductsMetaData.FAVOURITE_URL+ " text not null);";

    private static final String SUBJECTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
            + ProductsMetaData.SUBJECTS_TABLE + " ("
            + ProductsMetaData.SUBJECT_CODE + " text not null, "
            + ProductsMetaData.SUBJECT_NAME + " text not null, "
            + ProductsMetaData.SUBJECT_COLOR+ " text not null);";

    private static final String EVENTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
            + ProductsMetaData.EVENTS_TABLE + " ("
            + ProductsMetaData.EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + ProductsMetaData.EVENT_SUBJECT + " text not null, "
            + ProductsMetaData.EVENT_TYPE + " text not null, "
            + ProductsMetaData.EVENT_ARGUMENTS+ " text not null,"
            + ProductsMetaData.EVENT_DATE+ " datetime not null);";

    private static final String CALENDAR_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
            + ProductsMetaData.CALENDAR_TABLE+ " ("
            + ProductsMetaData.CALENDAR_DAY + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_1 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_2 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_3 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_4 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_5 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_6 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_7 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_8 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_9 + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_1C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_2C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_3C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_4C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_5C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_6C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_7C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_8C + " text not null, "
            + ProductsMetaData.CALENDAR_HOUR_9C+ " text not null);";

    private class DbHelper extends SQLiteOpenHelper
    {

        public DbHelper(Context context, String name, CursorFactory factory,int version)
        {
            super(context, name, factory, version);
        }

        @Override
        public void onCreate(SQLiteDatabase _db)
        { //solo quando il db viene creato, creiamo la tabella
            _db.execSQL(SUBJECTS_TABLE_CREATE);
            _db.execSQL(EVENTS_TABLE_CREATE);
            _db.execSQL(CALENDAR_TABLE_CREATE);
            _db.execSQL(FAVOURITE_TABLE_CREATE);
            Log.d("TABLE CREATE","OK");
        }

        @Override
        public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)
        {
            _db.execSQL(SUBJECTS_TABLE_CREATE);
            _db.execSQL(EVENTS_TABLE_CREATE);
            _db.execSQL(CALENDAR_TABLE_CREATE);
            _db.execSQL(FAVOURITE_TABLE_CREATE);

        }
    }

}