package grevian.MediaLibrary;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
public class MediaFactory {
private final static String TAG = "GrevianMedia";
public static Media getMediaByUPC(Context mContext, String UPC) throws LookupException
{
Media mMedia = null;
ContentResolver cr = mContext.getContentResolver();
// Try to lookup the content with the CR first
Uri myItem = ContentUris.withAppendedId(Media.CONTENT_URI, Long.valueOf(UPC));
Cursor cur = cr.query(myItem, null, null, null, null);
if ( cur.getCount() > 0 )
{
cur.moveToFirst();
mMedia = new Media(cur, cr);
}
cur.close();
if ( mMedia != null )
return mMedia;
// Look it up online, then insert it into the CR if we successfully find it
Log.w(TAG, "ContentResolver Miss for UPC: " + UPC);
Log.i(TAG, "Looking up UPC Online...");
String Title = UPCDataSource.getUPCText(UPC).trim();
Log.i(TAG, "UPC Lookup Result: " + Title);
if ( Title == "" )
throw new LookupException("Could not find Title Anywhere!");
ContentValues mVals = new ContentValues();
mVals.put(Media.TITLE, Title);
mVals.put(Media.BARCODE, UPC);
mVals.put(Media.OWNED, 0);
mVals.put(Media.LOANED, "");
cr.insert(Media.CONTENT_URI, mVals);
// Ok, Mobile platforms probably don't like recursion, but this really is the most graceful way to handle things...
return MediaFactory.getMediaByUPC(mContext, UPC);
}
}