package ru.bsuirhelper.android.core.notes; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by Влад on 01.11.13. */ public class NoteDatabase extends SQLiteOpenHelper { private static final String DATABASE_NAME = "Note"; private static final int VERSION = 2; private final String TABLE_NAME = "notes"; private final String _ID = "id"; private final String COLUMN_NAME_TITLE = "title"; private final String COLUMN_NAME_NOTE = "text"; private final String COLUMN_NAME_CREATE_DATE = "create_date"; private final String COLUMN_NAME_LESSOND_ID = "lesson_id"; private final String COLUMN_NAME_SUBJECT = "subject"; private SQLiteDatabase db; private static NoteDatabase instance; private NoteDatabase(Context context) { super(context, DATABASE_NAME, null, VERSION); } public static NoteDatabase getInstance(Context context) { if (instance == null) { instance = new NoteDatabase(context); } return instance; } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY," + COLUMN_NAME_TITLE + " TEXT," + COLUMN_NAME_NOTE + " TEXT," + COLUMN_NAME_CREATE_DATE + " INTEGER," + COLUMN_NAME_SUBJECT + " INTEGER," + COLUMN_NAME_LESSOND_ID + " INTEGER" + ");"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } public Note[] fetchAllNotes() { this.open(); Cursor c = db.rawQuery("SELECT*FROM notes", null); Note[] notes = new Note[c.getCount()]; while (c.moveToNext()) { String title = c.getString(c.getColumnIndex(COLUMN_NAME_TITLE)); String text = c.getString(c.getColumnIndex(COLUMN_NAME_NOTE)); String subject = c.getString(c.getColumnIndex(COLUMN_NAME_SUBJECT)); long dateCreated = c.getLong(c.getColumnIndex(COLUMN_NAME_CREATE_DATE)); Note note = new Note(title, text, subject, dateCreated); note.setId(c.getInt(c.getColumnIndex(_ID))); notes[c.getPosition()] = note; } this.close(); return notes; } public void addNote(Note note) { this.open(); ContentValues cv = new ContentValues(); cv.put(COLUMN_NAME_TITLE, note.title); cv.put(COLUMN_NAME_NOTE, note.text); cv.put(COLUMN_NAME_SUBJECT, note.subject); cv.put(COLUMN_NAME_CREATE_DATE, note.dateCreated); cv.put(COLUMN_NAME_LESSOND_ID, note.lesson_id); db.insert(TABLE_NAME, null, cv); this.close(); } public Note fetchNote(int rowId) { this.open(); Cursor c = db.rawQuery("SELECT*FROM notes WHERE " + _ID + "=" + rowId, null); Note note = null; if (c.moveToNext()) { String title = c.getString(c.getColumnIndex(COLUMN_NAME_TITLE)); String text = c.getString(c.getColumnIndex(COLUMN_NAME_NOTE)); String subject = c.getString(c.getColumnIndex(COLUMN_NAME_SUBJECT)); long dateCreated = c.getLong(c.getColumnIndex(COLUMN_NAME_CREATE_DATE)); int id = c.getInt(c.getColumnIndex(_ID)); note = new Note(title, text, subject, dateCreated); note.setId(id); } this.close(); return note; } public Note fetchNoteByLessonId(int lessonId) { this.open(); Cursor c = db.rawQuery("SELECT*FROM notes WHERE " + COLUMN_NAME_LESSOND_ID + "=" + lessonId, null); Note note = null; if (c.moveToNext()) { String title = c.getString(c.getColumnIndex(COLUMN_NAME_TITLE)); String text = c.getString(c.getColumnIndex(COLUMN_NAME_NOTE)); String subject = c.getString(c.getColumnIndex(COLUMN_NAME_SUBJECT)); long dateCreated = c.getLong(c.getColumnIndex(COLUMN_NAME_CREATE_DATE)); int id = c.getInt(c.getColumnIndex(_ID)); note = new Note(title, text, subject, dateCreated); note.lesson_id = lessonId; note.setId(id); } this.close(); return note; } public void updateNote(int id, Note note) { this.open(); ContentValues cv = new ContentValues(); cv.put(COLUMN_NAME_TITLE, note.title); cv.put(COLUMN_NAME_NOTE, note.text); cv.put(COLUMN_NAME_SUBJECT, note.subject); cv.put(COLUMN_NAME_CREATE_DATE, note.dateCreated); cv.put(COLUMN_NAME_LESSOND_ID, note.lesson_id); db.update(TABLE_NAME, cv, _ID + " = " + id, null); this.close(); } public void removeNote(int id) { this.open(); db.delete(TABLE_NAME, _ID + " = " + id, null); this.close(); } private void open() { db = getWritableDatabase(); } public void close() { db.close(); } }