package edu.mit.mobile.android.livingpostcards.data; /* * Copyright (C) 2012-2013 MIT Mobile Experience Lab * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import android.accounts.Account; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; import edu.mit.mobile.android.content.DBSortOrder; import edu.mit.mobile.android.content.ProviderUtils; import edu.mit.mobile.android.content.UriPath; import edu.mit.mobile.android.content.column.DBForeignKeyColumn; import edu.mit.mobile.android.locast.data.Authorable; import edu.mit.mobile.android.locast.data.ImageContent; import edu.mit.mobile.android.locast.data.JsonSyncableItem; import edu.mit.mobile.android.locast.data.MediaProcessingException; import edu.mit.mobile.android.locast.data.SyncMap; @UriPath(CardMedia.PATH) @DBSortOrder(CardMedia.SORT_DEFAULT) public class CardMedia extends ImageContent implements Authorable.Columns { public CardMedia(Cursor c) { super(c); } public static final String TYPE_DIR = "vnd.android.cursor.dir/vnd.edu.mit.mobile.android.flipr.cardmedia"; public static final String TYPE_ITEM = "vnd.android.cursor.dir/vnd.edu.mit.mobile.android.flipr.cardmedia"; @DBForeignKeyColumn(parent = Card.class) public static final String COL_CARD = "card"; public static final Uri getCard(Uri cardMedia) { if (cardMedia.getLastPathSegment().matches("\\d+")) { return ProviderUtils.removeLastPathSegments(cardMedia, 2); } else { return ProviderUtils.removeLastPathSegment(cardMedia); } } public static final String SORT_DEFAULT = COL_CREATED_DATE + " ASC"; public static final String PATH = "media"; /** * Creates a new card with a random UUID * * @param cr * @param title * @return */ public static ContentValues createNewCardMedia(Context context, Account account) { final ContentValues cv = JsonSyncableItem.newContentItem(); Authorable.putAuthorInformation(context, account, cv); return cv; } public static CastMediaInfo addMediaToCard(Context context, Account account, Uri cardMedia, Uri content) throws MediaProcessingException { final ContentValues cv = CardMedia.createNewCardMedia(context, account); final CastMediaInfo cmi = CardMedia.addMedia(context, account, cardMedia, content, cv); return cmi; } public static class ItemSyncMap extends ImageContent.ItemSyncMap { /** * */ private static final long serialVersionUID = 6879723724633413905L; public ItemSyncMap() { super(); putAll(Authorable.SYNC_MAP); put("_title", new SyncLiteral("title", "untitled")); } }; @Override public SyncMap getSyncMap() { return SYNC_MAP; } public static final ItemSyncMap SYNC_MAP = new ItemSyncMap(); @Override public Uri getContentUri() { return Card.MEDIA.getUri(ContentUris.withAppendedId(Card.CONTENT_URI, getLong(getColumnIndexOrThrow(COL_CARD)))); } }