aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOguz Kocer <oguz.kocer@automattic.com>2016-06-13 15:35:30 +0300
committerOguz Kocer <oguz.kocer@automattic.com>2016-06-13 15:35:30 +0300
commitbe662a72efdae7dfe3ad3fb1277756a2a72637a2 (patch)
tree98fe946649ee020f5f4823995e02623652d999e7
parentf0ecda395170ebd8a98f35aa9b146a6f82430b8a (diff)
downloadgradle-perf-android-medium-be662a72efdae7dfe3ad3fb1277756a2a72637a2.tar.gz
Big refactor to PeopleTable methods to accommodate for followers
-rw-r--r--WordPress/src/main/java/org/wordpress/android/WordPressDB.java6
-rw-r--r--WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java75
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/people/PeopleListFragment.java2
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java6
4 files changed, 65 insertions, 24 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/WordPressDB.java b/WordPress/src/main/java/org/wordpress/android/WordPressDB.java
index 79c70d5d6..6ba4364d2 100644
--- a/WordPress/src/main/java/org/wordpress/android/WordPressDB.java
+++ b/WordPress/src/main/java/org/wordpress/android/WordPressDB.java
@@ -767,7 +767,8 @@ public class WordPressDB {
int rowsAffected = db.delete(BLOGS_TABLE, "id=?", new String[]{Integer.toString(id)});
deleteQuickPressShortcutsForLocalTableBlogId(ctx, id);
deleteAllPostsForLocalTableBlogId(id);
- PeopleTable.deletePeopleForLocalBlogId(id);
+ PeopleTable.deleteUsersForLocalBlogId(id);
+ PeopleTable.deleteFollowersForLocalBlogId(id);
return (rowsAffected > 0);
}
@@ -777,7 +778,8 @@ public class WordPressDB {
int localBlogId = MapUtils.getMapInt(blog, "id");
deleteQuickPressShortcutsForLocalTableBlogId(ctx, localBlogId);
deleteAllPostsForLocalTableBlogId(localBlogId);
- PeopleTable.deletePeopleForLocalBlogId(localBlogId);
+ PeopleTable.deleteUsersForLocalBlogId(localBlogId);
+ PeopleTable.deleteFollowersForLocalBlogId(localBlogId);
}
// H4ck alert: We need to delete the Jetpack sites that were added in the initial
diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java
index 1d190976a..2fd95e6e7 100644
--- a/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java
+++ b/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java
@@ -73,12 +73,12 @@ public class PeopleTable {
database.insertWithOnConflict(PEOPLE_TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE);
}
- public static void savePeople(List<Person> peopleList, int localTableBlogId, boolean isFreshList) {
+ public static void saveUsers(List<Person> peopleList, int localTableBlogId, boolean isFreshList) {
getWritableDb().beginTransaction();
try {
- //We have a fresh list, remove the previous list of people in case it was deleted on remote
+ // We have a fresh list, remove the previous list of users in case it was deleted on remote
if (isFreshList) {
- PeopleTable.deletePeopleForLocalBlogId(localTableBlogId);
+ PeopleTable.deleteUsersForLocalBlogId(localTableBlogId);
}
for (Person person : peopleList) {
@@ -90,42 +90,81 @@ public class PeopleTable {
}
}
- public static int getPeopleCountForLocalBlogId(int localTableBlogId) {
- String[] args = new String[]{Integer.toString(localTableBlogId)};
- String sql = "SELECT COUNT(*) FROM " + PEOPLE_TABLE + " WHERE local_blog_id=?";
- return SqlUtils.intForQuery(getReadableDb(), sql, args);
+ public static void saveFollowers(List<Person> peopleList, int localTableBlogId, boolean isFreshList) {
+ getWritableDb().beginTransaction();
+ try {
+ // We have a fresh list, remove the previous list of followers in case it was deleted on remote
+ if (isFreshList) {
+ PeopleTable.deleteFollowersForLocalBlogId(localTableBlogId);
+ }
+
+ for (Person person : peopleList) {
+ PeopleTable.save(person);
+ }
+ getWritableDb().setTransactionSuccessful();
+ } finally {
+ getWritableDb().endTransaction();
+ }
}
- public static void deletePeopleForLocalBlogId(int localTableBlogId) {
- String[] args = new String[]{Integer.toString(localTableBlogId)};
- getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?", args);
+ public static void deleteUsersForLocalBlogId(int localTableBlogId) {
+ String[] args = new String[]{Integer.toString(localTableBlogId), Boolean.toString(false)};
+ getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?&is_follower=?", args);
}
- public static void deletePeopleForLocalBlogIdExceptForFirstPage(int localTableBlogId) {
- int size = getPeopleCountForLocalBlogId(localTableBlogId);
+ public static void deleteFollowersForLocalBlogId(int localTableBlogId) {
+ String[] args = new String[]{Integer.toString(localTableBlogId), Boolean.toString(true)};
+ getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?&is_follower=?", args);
+ }
+
+ public static void deleteUsersForLocalBlogIdExceptForFirstPage(int localTableBlogId) {
+ PeopleTable.deletePeopleForLocalBlogIdExceptForFirstPage(localTableBlogId, false);
+ }
+
+ public static void deleteFollowersForLocalBlogIdExceptForFirstPage(int localTableBlogId) {
+ PeopleTable.deletePeopleForLocalBlogIdExceptForFirstPage(localTableBlogId, false);
+ }
+
+ private static void deletePeopleForLocalBlogIdExceptForFirstPage(int localTableBlogId, boolean isFollower) {
+ int size = getPeopleCountForLocalBlogId(localTableBlogId, isFollower);
int fetchLimit = PeopleUtils.FETCH_USERS_LIMIT;
if (size > fetchLimit) {
int deleteCount = size - fetchLimit;
String[] args = new String[] {
Integer.toString(localTableBlogId),
+ Boolean.toString(isFollower),
Integer.toString(deleteCount)
};
- getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?1 AND person_id " +
- "IN (SELECT person_id FROM " + PEOPLE_TABLE + " WHERE local_blog_id=?1 " +
- "ORDER BY display_name DESC LIMIT ?2)", args);
+ getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?1 AND is_follower=?2 AND person_id " +
+ "IN (SELECT person_id FROM " + PEOPLE_TABLE + " WHERE local_blog_id=?1 AND is_follower=?2 " +
+ "ORDER BY display_name DESC LIMIT ?3)", args);
}
}
+ public static int getUsersCountForLocalBlogId(int localTableBlogId) {
+ return PeopleTable.getPeopleCountForLocalBlogId(localTableBlogId, false);
+ }
+
+ private static int getPeopleCountForLocalBlogId(int localTableBlogId, boolean isFollower) {
+ String[] args = new String[]{Integer.toString(localTableBlogId), Boolean.toString(isFollower)};
+ String sql = "SELECT COUNT(*) FROM " + PEOPLE_TABLE + " WHERE local_blog_id=?&is_follower=?";
+ return SqlUtils.intForQuery(getReadableDb(), sql, args);
+ }
+
public static void deletePerson(long personID, int localTableBlogId) {
String[] args = new String[]{Long.toString(personID), Integer.toString(localTableBlogId)};
getWritableDb().delete(PEOPLE_TABLE, "person_id=? AND local_blog_id=?", args);
}
- public static List<Person> getPeople(int localTableBlogId) {
+ public static List<Person> getUsers(int localTableBlogId) {
+ return PeopleTable.getPeople(localTableBlogId, false);
+ }
+
+ private static List<Person> getPeople(int localTableBlogId, boolean isFollower) {
List<Person> people = new ArrayList<>();
- String[] args = { Integer.toString(localTableBlogId) };
+ String[] args = { Integer.toString(localTableBlogId), Boolean.toString(isFollower) };
Cursor c = getReadableDb().rawQuery("SELECT * FROM " + PEOPLE_TABLE +
- " WHERE local_blog_id=? ORDER BY lower(display_name), lower(user_name)", args);
+ " WHERE local_blog_id=? AND is_follower=? ORDER BY lower(display_name), lower(user_name)", args);
try {
while (c.moveToNext()) {
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleListFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleListFragment.java
index ea9b2a648..cddcce8b1 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleListFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleListFragment.java
@@ -183,7 +183,7 @@ public class PeopleListFragment extends Fragment {
public void refreshPeopleList() {
if (!isAdded()) return;
- List<Person> peopleList = PeopleTable.getPeople(mLocalTableBlogID);
+ List<Person> peopleList = PeopleTable.getUsers(mLocalTableBlogID);
PeopleAdapter peopleAdapter = (PeopleAdapter) mFilteredRecyclerView.getAdapter();
if (peopleAdapter == null) {
peopleAdapter = new PeopleAdapter(getActivity(), peopleList);
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java
index b3bba113c..2bf168cd4 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java
@@ -66,7 +66,7 @@ public class PeopleManagementActivity extends AppCompatActivity
if (savedInstanceState == null) {
// only delete cached people if there is a connection
if (NetworkUtils.isNetworkAvailable(this)) {
- PeopleTable.deletePeopleForLocalBlogIdExceptForFirstPage(blog.getLocalTableBlogId());
+ PeopleTable.deleteUsersForLocalBlogIdExceptForFirstPage(blog.getLocalTableBlogId());
}
if (actionBar != null) {
@@ -190,7 +190,7 @@ public class PeopleManagementActivity extends AppCompatActivity
public void onSuccess(List<Person> peopleList, boolean isEndOfList) {
boolean isFreshList = (offset == 0);
mPeopleEndOfListReached = isEndOfList;
- PeopleTable.savePeople(peopleList, localTableBlogId, isFreshList);
+ PeopleTable.saveUsers(peopleList, localTableBlogId, isFreshList);
refreshOnScreenFragmentDetails();
mFetchRequestInProgress = false;
@@ -401,7 +401,7 @@ public class PeopleManagementActivity extends AppCompatActivity
return;
}
Blog blog = WordPress.getCurrentBlog();
- int count = PeopleTable.getPeopleCountForLocalBlogId(blog.getLocalTableBlogId());
+ int count = PeopleTable.getUsersCountForLocalBlogId(blog.getLocalTableBlogId());
fetchUsersList(blog.getDotComBlogId(), blog.getLocalTableBlogId(), count);
}