public static boolean addNewArea(Area area, ContentResolver cr) {

    String w = BetaProvider.KEY_AREA_NAME + " = ?";

    Cursor c = cr.query(Area.CONTENT_URI, null, w, new String[] {area.getName()}, null);

    int dbCount;
    if (c != null) dbCount = c.getCount();
    else dbCount = 0;

    c.close();
    if (dbCount == 0) {

      ContentValues values = new ContentValues();

      if (area.getMasterId() > 0) { // coming from web server, put ID and CLEAN state
        values.put(BetaProvider.KEY_AREA_STATE, State.CLEAN);
        values.put(BetaProvider.KEY_AREA_ID_TYPE, IdType.MASTER);
      } else { // coming from user, mark as NEW for future sync AND leave MASTER as 0/default
        values.put(BetaProvider.KEY_AREA_STATE, State.NEW);
        values.put(BetaProvider.KEY_AREA_ID_TYPE, IdType.LOCAL);
      }
      values.put(BetaProvider.KEY_AREA_NAME, area.getName());
      if (null != area.getDateAdded())
        values.put(
            BetaProvider.KEY_AREA_DATE_ADDED,
            BetaProvider.sqliteDateFormater.format(area.getDateAdded()));
      else
        values.put(
            BetaProvider.KEY_AREA_DATE_ADDED,
            BetaProvider.sqliteDateFormater.format(Calendar.getInstance().getTime()));
      if (null != area.getDateModified())
        values.put(
            BetaProvider.KEY_AREA_DATE_MODIFIED,
            BetaProvider.sqliteDateFormater.format(area.getDateModified()));
      else
        values.put(
            BetaProvider.KEY_AREA_DATE_MODIFIED,
            BetaProvider.sqliteDateFormater.format(Calendar.getInstance().getTime()));

      values.put(BetaProvider.KEY_AREA_DETAILS, area.getDetails());
      values.put(BetaProvider.KEY_AREA_LATITUDE, area.getLatitude());
      values.put(BetaProvider.KEY_AREA_LONGITUDE, area.getLongitude());
      values.put(BetaProvider.KEY_AREA_PARENT, area.getParent());
      values.put(BetaProvider.KEY_AREA_MASTER, area.getMasterId());
      values.put(BetaProvider.KEY_AREA_PERMISSION, area.getPermission());

      cr.insert(Area.CONTENT_URI, values);
    }
    return true;
  }
  public static boolean updateArea(Area area, ContentResolver contentResolver) {

    ContentValues values = new ContentValues();

    values.put(BetaProvider.KEY_AREA_NAME, area.getName());
    values.put(BetaProvider.KEY_AREA_DETAILS, area.getDetails());
    values.put(BetaProvider.KEY_AREA_LONGITUDE, area.getLongitude());
    values.put(BetaProvider.KEY_AREA_LATITUDE, area.getLatitude());
    values.put(BetaProvider.KEY_AREA_PARENT, area.getParent());
    values.put(BetaProvider.KEY_AREA_STATE, area.getState());
    values.put(BetaProvider.KEY_AREA_MASTER, area.getMasterId());
    values.put(BetaProvider.KEY_AREA_ID_TYPE, area.getIdType());
    values.put(
        BetaProvider.KEY_AREA_DATE_MODIFIED,
        BetaProvider.sqliteDateFormater.format(Calendar.getInstance().getTime()));
    values.put(BetaProvider.KEY_AREA_PERMISSION, area.getPermission());

    String where = BetaProvider.KEY_AREA_ID + " = ?";

    contentResolver.update(
        Area.CONTENT_URI, values, where, new String[] {String.valueOf(area.getId())});

    return true;
  }