public void populateExerciseCategory(SQLiteDatabase db) {
    ContentValues values;

    for (Category category : Category.values()) {
      values = new ContentValues();
      values.put(KEY_NAME, category.name());
      db.insert(TABLE_EXERCISE_CATEGORY, null, values);
    }
  }
  public List<Exercise> getAllExerciseDetails() {
    List<Exercise> exercises = new ArrayList<>();
    String selectQuery =
        "SELECT "
            + KEY_ID
            + ", "
            + KEY_NAME
            + ", "
            + KEY_DESCRIPTION
            + ", "
            + TABLE_EXERCISE_CATEGORY
            + KEY_NAME
            + " FROM "
            + TABLE_EXERCISE_DETAIL
            + " INNER JOIN "
            + TABLE_EXERCISE_DETAIL_CATEGORY
            + " ON "
            + KEY_ID
            + " = "
            + TABLE_EXERCISE_DETAIL
            + KEY_ID;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c = db.rawQuery(selectQuery, null);

    int id;
    Exercise exercise;
    if (c.moveToFirst()) {
      do {
        id = c.getInt(c.getColumnIndex(KEY_ID));
        exercise = Exercise.getById(exercises, id);
        if (exercise == null) {
          exercise = new Exercise();
          exercise.setId(id);
          exercise.setName(c.getString(c.getColumnIndex(KEY_NAME)));
          exercise.setDescription(c.getString(c.getColumnIndex(KEY_DESCRIPTION)));
          exercise
              .getCategories()
              .add(
                  Category.valueOf(
                      c.getString(c.getColumnIndex(TABLE_EXERCISE_CATEGORY + KEY_NAME))));

          exercises.add(exercise);
        } else {
          exercise
              .getCategories()
              .add(
                  Category.valueOf(
                      c.getString(c.getColumnIndex(TABLE_EXERCISE_CATEGORY + KEY_NAME))));
        }
      } while (c.moveToNext());
    }
    c.close();
    return exercises;
  }
 public void createExerciseDetailCategory(long exerciseDetailId, Category category) {
   SQLiteDatabase db = this.getWritableDatabase();
   ContentValues values = new ContentValues();
   values.put(TABLE_EXERCISE_DETAIL + KEY_ID, exerciseDetailId);
   values.put(TABLE_EXERCISE_CATEGORY + KEY_NAME, category.name());
   db.insert(TABLE_EXERCISE_DETAIL_CATEGORY, null, values);
 }
  public Exercise getExerciseDetail(int id) {
    SQLiteDatabase db = this.getWritableDatabase();

    String selectQuery = "SELECT * FROM " + TABLE_EXERCISE_DETAIL + " WHERE " + KEY_ID + " = " + id;
    Cursor c = db.rawQuery(selectQuery, null);

    if (c != null) c.moveToFirst();
    Exercise exercise = new Exercise();
    exercise.setId(c.getInt(c.getColumnIndex(KEY_ID)));
    exercise.setName(c.getString(c.getColumnIndex(KEY_NAME)));
    exercise.setDescription(c.getString(c.getColumnIndex(KEY_DESCRIPTION)));

    selectQuery =
        "SELECT * FROM "
            + TABLE_EXERCISE_DETAIL_CATEGORY
            + " WHERE "
            + TABLE_EXERCISE_DETAIL
            + KEY_ID
            + " = "
            + exercise.getId();
    c.close();
    c = db.rawQuery(selectQuery, null);
    while (c.moveToNext()) {
      exercise.addCategory(
          Category.valueOf(c.getString(c.getColumnIndex(TABLE_EXERCISE_CATEGORY + KEY_NAME))));
    }
    c.close();
    return exercise;
  }