/** {@inheritDoc} */
 @Override
 public Uri insert(Uri uri, ContentValues values) {
   if (LOGV) Log.v(TAG, "insert(uri=" + uri + ", values=" + values.toString() + ")");
   final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
   final int match = sUriMatcher.match(uri);
   switch (match) {
     case BLOCKS:
       {
         db.insertOrThrow(Tables.BLOCKS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Blocks.buildBlockUri(values.getAsString(Blocks.BLOCK_ID));
       }
     case TRACKS:
       {
         db.insertOrThrow(Tables.TRACKS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Tracks.buildTrackUri(values.getAsString(Tracks.TRACK_ID));
       }
     case ROOMS:
       {
         db.insertOrThrow(Tables.ROOMS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Rooms.buildRoomUri(values.getAsString(Rooms.ROOM_ID));
       }
     case SESSIONS:
       {
         db.insertOrThrow(Tables.SESSIONS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Sessions.buildSessionUri(values.getAsString(Sessions.SESSION_ID));
       }
     case SESSIONS_ID_SPEAKERS:
       {
         db.insertOrThrow(Tables.SESSIONS_SPEAKERS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Speakers.buildSpeakerUri(values.getAsString(SessionsSpeakers.SPEAKER_ID));
       }
     case SESSIONS_ID_TAGS:
       {
         db.insertOrThrow(Tables.SESSIONS_TAGS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Tags.buildTagUri(values.getAsString(SessionsTags.TAG_ID));
       }
     case SPEAKERS:
       {
         db.insertOrThrow(Tables.SPEAKERS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Speakers.buildSpeakerUri(values.getAsString(Speakers.SPEAKER_ID));
       }
     case TAGS:
       {
         db.insertOrThrow(Tables.TAGS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Tags.buildTagUri(values.getAsString(Tags.TAG_ID));
       }
     case SESSION_TYPES:
       {
         db.insertOrThrow(Tables.SESSION_TYPES, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return SessionTypes.buildSessionTypeUri(values.getAsString(SessionTypes.SESSION_TYPE_ID));
       }
     case TWEETS:
       {
         db.insertOrThrow(Tables.TWEETS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Tweets.buildTweetUri(values.getAsString(Tweets.TWEET_ID));
       }
     case NEWS:
       {
         db.insertOrThrow(Tables.NEWS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return News.buildNewsUri(values.getAsString(News.NEWS_ID));
       }
     case PARLEYS:
       {
         db.insertOrThrow(Tables.PARLEYS_PRESENTATIONS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Sessions.buildSessionUri(values.getAsString(ParleysPresentations.PRESENTATION_ID));
       }
     case PARLEYS_ID_TAGS:
       {
         db.insertOrThrow(Tables.PARLEYS_PRESENTATIONS_TAGS, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return Tags.buildTagUri(values.getAsString(ParleysPresentationsTags.TAG_ID));
       }
     case SEARCH_SUGGEST:
       {
         db.insertOrThrow(Tables.SEARCH_SUGGEST, null, values);
         getContext().getContentResolver().notifyChange(uri, null);
         return SearchSuggest.CONTENT_URI;
       }
     default:
       {
         throw new UnsupportedOperationException("Unknown uri: " + uri);
       }
   }
 }