Adding ability to query last repo update and number of repos.

This will be used to improve the empty state handling of the main list
of latest apps.
Šī revīzija ir iekļauta:
Peter Serwylo 2017-04-05 12:03:50 +10:00
vecāks d83c15d0d4
revīzija 510ec5f7c7
2 mainīti faili ar 88 papildinājumiem un 0 dzēšanām

Parādīt failu

@ -16,6 +16,7 @@ import org.fdroid.fdroid.data.Schema.RepoTable;
import org.fdroid.fdroid.data.Schema.RepoTable.Cols; import org.fdroid.fdroid.data.Schema.RepoTable.Cols;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
public class RepoProvider extends FDroidProvider { public class RepoProvider extends FDroidProvider {
@ -251,6 +252,40 @@ public class RepoProvider extends FDroidProvider {
} }
return count; return count;
} }
@Nullable
public static Date lastUpdate(Context context) {
ContentResolver resolver = context.getContentResolver();
final String[] projection = {Cols.LAST_UPDATED};
final String selection = Cols.IN_USE + " = 1";
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, Cols.LAST_UPDATED + " DESC");
Date lastUpdate = null;
if (cursor != null) {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
lastUpdate = Utils.parseDate(cursor.getString(0), null);
}
cursor.close();
}
return lastUpdate;
}
public static int countEnabledRepos(Context context) {
ContentResolver resolver = context.getContentResolver();
final String[] projection = {Cols._ID};
final String selection = Cols.IN_USE + " = 1";
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, null);
int count = 0;
if (cursor != null) {
count = cursor.getCount();
cursor.close();
}
return count;
}
} }
private static final String PROVIDER_NAME = "RepoProvider"; private static final String PROVIDER_NAME = "RepoProvider";

Parādīt failu

@ -36,6 +36,7 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import java.util.Date;
import java.util.List; import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@ -48,6 +49,58 @@ public class RepoProviderTest extends FDroidProviderTest {
private static final String[] COLS = RepoTable.Cols.ALL; private static final String[] COLS = RepoTable.Cols.ALL;
@Test
public void countEnabledRepos() {
// By default, f-droid is enabled.
assertEquals(1, RepoProvider.Helper.countEnabledRepos(context));
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
gpRepo = setEnabled(gpRepo, true);
assertEquals(2, RepoProvider.Helper.countEnabledRepos(context));
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
setEnabled(fdroidRepo, false);
setEnabled(gpRepo, false);
assertEquals(0, RepoProvider.Helper.countEnabledRepos(context));
}
private Repo setEnabled(Repo repo, boolean enabled) {
ContentValues enable = new ContentValues(1);
enable.put(RepoTable.Cols.IN_USE, enabled);
RepoProvider.Helper.update(context, repo, enable);
return RepoProvider.Helper.findByAddress(context, repo.address);
}
@Test
public void lastUpdated() {
assertNull(RepoProvider.Helper.lastUpdate(context));
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
// Set date to 2017-04-05 11:56:38
setLastUpdate(gpRepo, new Date(1491357408643L));
// GP is not yet enabled, so it is not counted.
assertNull(RepoProvider.Helper.lastUpdate(context));
// Set date to 2017-04-04 11:56:38
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
setLastUpdate(fdroidRepo, new Date(1491357408643L - (1000 * 60 * 60 * 24)));
assertEquals("2017-04-04", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
setEnabled(gpRepo, true);
assertEquals("2017-04-05", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
}
private Repo setLastUpdate(Repo repo, Date date) {
ContentValues values = new ContentValues(1);
values.put(RepoTable.Cols.LAST_UPDATED, Utils.formatDate(date, null));
RepoProvider.Helper.update(context, repo, values);
return RepoProvider.Helper.findByAddress(context, repo.address);
}
@Test @Test
public void findByUrl() { public void findByUrl() {