Example #1
0
  private void updateDb(ArrayList<GolfCourse> gc) {
    ContentResolver cr = context.getContentResolver();
    for (GolfCourse cc : gc) {
      // Check if course exist already in db
      String name = cc.getCourceName();
      String tee = cc.getCourceTee();
      int id = -1;

      String selection =
          TourContentProvider.KEY_COURSE_NAME
              + "=? AND "
              + TourContentProvider.KEY_COURSE_TEE
              + "=?";
      String[] selectionArgs = {name, tee};
      Cursor cur =
          cr.query(TourContentProvider.CONTENT_URI_COURSES, null, selection, selectionArgs, null);
      boolean newEntry = true;

      // If No Match, populate database
      if (cur != null) newEntry = false;

      // Update course
      ContentValues cv = new ContentValues();
      cv.put(TourContentProvider.KEY_COURSE_NAME, name);
      cv.put(TourContentProvider.KEY_COURSE_TEE, tee);
      cv.put(TourContentProvider.KEY_COURSE_PAR, cc.getCourcePar());
      cv.put(TourContentProvider.KEY_COURSE_SLOPE, cc.getCourceSlope());
      cv.put(TourContentProvider.KEY_COURSE_VALUE, cc.getCourceValue());
      cv.put(TourContentProvider.KEY_COURSE_LENGTH, cc.getCourceLength());
      if (newEntry) {
        Uri courseId = cr.insert(TourContentProvider.CONTENT_URI_COURSES, cv);
        id = Integer.parseInt(courseId.getPathSegments().get(1));
      } else {
        cur.moveToFirst();
        int key_index = cur.getColumnIndexOrThrow(TourContentProvider.KEY_ID);
        id = cur.getInt(key_index);
        cr.update(
            Uri.withAppendedPath(TourContentProvider.CONTENT_URI_COURSES, Integer.toString(id)),
            cv,
            null,
            null);
      }

      // update holes
      for (int i = 1; i <= 18; i++) {
        cv = new ContentValues();
        cv.put(TourContentProvider.KEY_COURSE_ID, id);
        cv.put(TourContentProvider.KEY_HOLE_NAME, cc.getHoleName(i));
        cv.put(TourContentProvider.KEY_HOLE_NR, i);
        cv.put(TourContentProvider.KEY_HOLE_PAR, cc.getHolePar(i));
        cv.put(TourContentProvider.KEY_HOLE_INDEX, cc.getHoleIndex(i));
        cv.put(TourContentProvider.KEY_HOLE_LENGTH, cc.getHoleLength(i));
        if (newEntry) cr.insert(TourContentProvider.CONTENT_URI_HOLES, cv);
        else {
          selection =
              TourContentProvider.KEY_COURSE_ID
                  + "=? AND "
                  + TourContentProvider.KEY_HOLE_NR
                  + "=?";
          selectionArgs = new String[2];
          selectionArgs[0] = Integer.toString(id);
          selectionArgs[1] = Integer.toString(i);
          cur =
              cr.query(TourContentProvider.CONTENT_URI_HOLES, null, selection, selectionArgs, null);
          cur.moveToFirst();
          int key_index = cur.getColumnIndexOrThrow(TourContentProvider.KEY_ID);
          int hole_id = cur.getInt(key_index);
          cr.update(
              Uri.withAppendedPath(
                  TourContentProvider.CONTENT_URI_HOLES, Integer.toString(hole_id)),
              cv,
              null,
              null);
        } // else
      } // for
    } // for
  } // updatedb