public Todo saveTodo(Todo todo) {

    if (todo.getId() > 0) {
      updateTodo(todo);
    } else {
      addNewTodo(todo);
    }
    return todo;
  }
  public List<Todo> getAllTodos() {
    SQLiteDatabase db = this.getReadableDatabase();
    List<Todo> todoList = new ArrayList<Todo>();
    Cursor cursor = null;

    cursor = db.query(TODOS_TABLE, null, null, null, null, null, null);

    if (cursor.moveToFirst()) {
      int idIndex = cursor.getColumnIndex(TODO_ID);
      int nameIndex = cursor.getColumnIndex(TODO_NAME);
      int contentIndex = cursor.getColumnIndex(TODO_CONTENT);
      int importantIndex = cursor.getColumnIndex(TODO_IMPORTANT);
      int dateIndex = cursor.getColumnIndex(TODO_DATE);
      int doneIndex = cursor.getColumnIndex(TODO_DONE);

      do {
        long id = cursor.getLong(idIndex);
        String name = cursor.getString(nameIndex);
        String content = cursor.getString(contentIndex);
        int important = cursor.getInt(importantIndex);
        String date = cursor.getString(dateIndex);
        int done = cursor.getInt(doneIndex);

        Todo todo = new Todo();
        todo.setId(id);
        todo.setName(name);
        todo.setContent(content);
        if (important == 1) {
          todo.setImportant(true);
        } else {
          todo.setImportant(false);
        }
        todo.setDate(date);
        if (done == 1) {
          todo.setDone(true);
        } else {
          todo.setDone(false);
        }

        todoList.add(todo);

      } while (cursor.moveToNext());
    }
    cursor.close();
    this.close();

    return todoList;
  }
  public Todo getTodoById(long id) {
    SQLiteDatabase db = this.getReadableDatabase();
    Todo todo = new Todo();
    Cursor cursor = null;

    cursor =
        db.query(
            TODOS_TABLE, null, TODO_ID + "=?", new String[] {String.valueOf(id)}, null, null, null);

    if (cursor.moveToFirst()) {
      int idIndex = cursor.getColumnIndex(TODO_ID);
      int nameIndex = cursor.getColumnIndex(TODO_NAME);
      int contentIndex = cursor.getColumnIndex(TODO_CONTENT);
      int importantIndex = cursor.getColumnIndex(TODO_IMPORTANT);
      int dateIndex = cursor.getColumnIndex(TODO_DATE);
      int doneIndex = cursor.getColumnIndex(TODO_DONE);

      long _id = cursor.getLong(idIndex);
      String name = cursor.getString(nameIndex);
      String content = cursor.getString(contentIndex);
      int important = cursor.getInt(importantIndex);
      String date = cursor.getString(dateIndex);
      int done = cursor.getInt(doneIndex);

      todo.setId(_id);
      todo.setName(name);
      todo.setContent(content);
      if (important == 1) {
        todo.setImportant(true);
      } else {
        todo.setImportant(false);
      }
      todo.setDate(date);
      if (done == 1) {
        todo.setDone(true);
      } else {
        todo.setDone(false);
      }
    }
    cursor.close();
    this.close();

    return todo;
  }
  public Todo updateTodo(Todo todo) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(TODO_NAME, todo.getName());
    values.put(TODO_CONTENT, todo.getContent());
    values.put(TODO_IMPORTANT, todo.isImportant());
    values.put(TODO_DATE, todo.getDate());
    values.put(TODO_DONE, todo.isDone());

    db.update(TODOS_TABLE, values, TODO_ID + "=?", new String[] {String.valueOf(todo.getId())});

    Log.i(logger, " updateTodo: " + todo.getData());

    this.close();
    return todo;
  }
  public Todo addNewTodo(Todo todo) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(TODO_NAME, todo.getName());
    values.put(TODO_CONTENT, todo.getContent());
    values.put(TODO_IMPORTANT, todo.isImportant());
    values.put(TODO_DATE, todo.getDate());
    values.put(TODO_DONE, todo.isDone());

    long id = db.insert(TODOS_TABLE, null, values);
    todo.setId(id);

    Log.i(logger, " addNewTodo: " + todo.getData());

    this.close();
    return todo;
  }
 public void deleteTodo(Todo todo) {
   SQLiteDatabase db = this.getWritableDatabase();
   db.delete(TODOS_TABLE, TODO_ID + "=?", new String[] {String.valueOf(todo.getId())});
   this.close();
 }