Migrate classifier loading in Reading off of legacy DB.

This commit is contained in:
dosiecki 2015-01-15 13:28:03 -08:00
parent 3a6557590e
commit 460f0ad9fa
8 changed files with 18 additions and 55 deletions

View file

@ -1,17 +1,9 @@
package com.newsblur.activity;
import android.database.Cursor;
import android.os.Bundle;
import android.content.CursorLoader;
import android.content.Loader;
import com.newsblur.R;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.MixedFeedsReadingAdapter;
import com.newsblur.util.FeedUtils;
import com.newsblur.util.PrefConstants;
import com.newsblur.util.PrefsUtils;
import com.newsblur.util.StoryOrder;
public class AllSharedStoriesReading extends Reading {
@ -22,7 +14,7 @@ public class AllSharedStoriesReading extends Reading {
setTitle(getResources().getString(R.string.all_shared_stories));
// No sourceUserId since this is all shared stories. The sourceUsedId for each story will be used.
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), getContentResolver(), defaultFeedView, null);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, null);
getLoaderManager().initLoader(0, null, this);
}

View file

@ -1,17 +1,9 @@
package com.newsblur.activity;
import android.database.Cursor;
import android.os.Bundle;
import android.content.CursorLoader;
import android.content.Loader;
import com.newsblur.R;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.MixedFeedsReadingAdapter;
import com.newsblur.util.FeedUtils;
import com.newsblur.util.PrefConstants;
import com.newsblur.util.PrefsUtils;
import com.newsblur.util.StoryOrder;
public class AllStoriesReading extends Reading {
@ -20,7 +12,7 @@ public class AllStoriesReading extends Reading {
super.onCreate(savedInstanceBundle);
setTitle(getResources().getString(R.string.all_stories_row_title));
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), getContentResolver(), defaultFeedView, null);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, null);
getLoaderManager().initLoader(0, null, this);
}

View file

@ -1,14 +1,8 @@
package com.newsblur.activity;
import android.database.Cursor;
import android.os.Bundle;
import android.content.CursorLoader;
import android.content.Loader;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.MixedFeedsReadingAdapter;
import com.newsblur.util.FeedUtils;
import com.newsblur.util.PrefsUtils;
public class FolderReading extends Reading {
@ -21,7 +15,7 @@ public class FolderReading extends Reading {
folderName = getIntent().getStringExtra(Reading.EXTRA_FOLDERNAME);
setTitle(folderName);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), getContentResolver(), defaultFeedView, null);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, null);
getLoaderManager().initLoader(0, null, this);
}

View file

@ -2,14 +2,11 @@ package com.newsblur.activity;
import android.database.Cursor;
import android.os.Bundle;
import android.content.CursorLoader;
import android.content.Loader;
import com.newsblur.R;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.MixedFeedsReadingAdapter;
import com.newsblur.util.FeedUtils;
import com.newsblur.util.StoryOrder;
public class SavedStoriesReading extends Reading {
@ -18,7 +15,7 @@ public class SavedStoriesReading extends Reading {
super.onCreate(savedInstanceBundle);
setTitle(getResources().getString(R.string.saved_stories_title));
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), getContentResolver(), defaultFeedView, null);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, null);
getLoaderManager().initLoader(0, null, this);
}

View file

@ -1,16 +1,8 @@
package com.newsblur.activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.content.CursorLoader;
import android.content.Loader;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.MixedFeedsReadingAdapter;
import com.newsblur.domain.SocialFeed;
import com.newsblur.util.FeedUtils;
import com.newsblur.util.PrefsUtils;
public class SocialFeedReading extends Reading {
@ -26,7 +18,7 @@ public class SocialFeedReading extends Reading {
setTitle(getIntent().getStringExtra(EXTRA_USERNAME));
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), getContentResolver(), defaultFeedView, userId);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, userId);
getLoaderManager().initLoader(0, null, this);
}

View file

@ -670,6 +670,14 @@ public class BlurDatabaseHelper {
bulkInsertValues(DatabaseConstants.CLASSIFIER_TABLE, classifier.getContentValues());
}
public Classifier getClassifierForFeed(String feedId) {
String[] selArgs = new String[] {feedId};
Cursor c = dbRO.query(DatabaseConstants.CLASSIFIER_TABLE, null, DatabaseConstants.CLASSIFIER_ID + " = ?", selArgs, null, null, null);
Classifier classifier = Classifier.fromCursor(c);
closeQuietly(c);
return classifier;
}
public static void closeQuietly(Cursor c) {
if (c == null) return;
try {c.close();} catch (Exception e) {;}

View file

@ -1,8 +1,5 @@
package com.newsblur.database;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.app.Fragment;
import android.app.FragmentManager;
@ -11,14 +8,12 @@ import com.newsblur.domain.Classifier;
import com.newsblur.domain.Story;
import com.newsblur.fragment.ReadingItemFragment;
import com.newsblur.util.DefaultFeedView;
import com.newsblur.util.FeedUtils;
public class MixedFeedsReadingAdapter extends ReadingAdapter {
private final ContentResolver resolver;
public MixedFeedsReadingAdapter(final FragmentManager fragmentManager, final ContentResolver resolver, DefaultFeedView defaultFeedView, String sourceUserId) {
public MixedFeedsReadingAdapter(FragmentManager fragmentManager, DefaultFeedView defaultFeedView, String sourceUserId) {
super(fragmentManager, defaultFeedView, sourceUserId);
this.resolver = resolver;
}
@Override
@ -30,9 +25,9 @@ public class MixedFeedsReadingAdapter extends ReadingAdapter {
String feedFaviconText = stories.getString(stories.getColumnIndex(DatabaseConstants.FEED_FAVICON_TEXT));
String feedFaviconUrl = stories.getString(stories.getColumnIndex(DatabaseConstants.FEED_FAVICON_URL));
Uri classifierUri = FeedProvider.CLASSIFIER_URI.buildUpon().appendPath(story.feedId).build();
Cursor feedClassifierCursor = resolver.query(classifierUri, null, null, null, null);
Classifier classifier = Classifier.fromCursor(feedClassifierCursor);
// TODO: does the pager generate new fragments in the UI thread? If so, classifiers should
// be loaded async by the fragment itself
Classifier classifier = FeedUtils.dbHelper.getClassifierForFeed(story.feedId);
return ReadingItemFragment.newInstance(story, feedTitle, feedFaviconColor, feedFaviconFade, feedFaviconBorder, feedFaviconText, feedFaviconUrl, classifier, true, defaultFeedView, sourceUserId);
}

View file

@ -8,12 +8,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import android.content.ContentProviderOperation;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.text.Html;
import android.text.TextUtils;
@ -23,13 +19,10 @@ import android.widget.Toast;
import com.newsblur.R;
import com.newsblur.activity.NbActivity;
import com.newsblur.database.BlurDatabaseHelper;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.FeedProvider;
import com.newsblur.domain.Classifier;
import com.newsblur.domain.Feed;
import com.newsblur.domain.SocialFeed;
import com.newsblur.domain.Story;
import com.newsblur.domain.ValueMultimap;
import com.newsblur.network.APIManager;
import com.newsblur.network.domain.NewsBlurResponse;
import com.newsblur.service.NBSyncService;