package org.ohmage.db.test; import org.ohmage.OhmageApplication; import org.ohmage.db.DbContract.Campaigns; import org.ohmage.db.Models.Campaign; import android.app.Application; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import java.util.concurrent.CountDownLatch; public class CampaignContentProvider extends DelegatingMockContentProvider { Campaign[] mCampaigns; private final CountDownLatch latch; private String mLastSelection; public CampaignContentProvider(Application application, String name) { super(application, name); latch = new CountDownLatch(1); } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { mLastSelection = selection; try { latch.await(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } switch(OhmageUriMatcher.getMatcher().match(uri)) { case OhmageUriMatcher.CAMPAIGNS: return new CampaignCursor(projection, mCampaigns); case OhmageUriMatcher.CAMPAIGN_BY_URN: return new CampaignCursor(projection, mCampaigns[0]); default: return new EmptyMockCursor(); } } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { if(mCampaigns != null && values != null && values.containsKey(Campaigns.CAMPAIGN_STATUS)) { for(Campaign campaign : mCampaigns) { campaign.mStatus = values.getAsInteger(Campaigns.CAMPAIGN_STATUS); OhmageApplication.getContext().getContentResolver().notifyChange(uri, null, false); } return mCampaigns.length; } return 0; } public void setCampaigns(Campaign... campaigns) { mCampaigns = campaigns; latch.countDown(); } public Campaign[] getCampaigns() { return mCampaigns; } public String getLastSelection() { return mLastSelection; } }