Commit Graph

34 Commits

Author SHA1 Message Date
Peter Serwylo
038816e32a Renamed Apk.id to Apk.packageName 2015-12-25 08:04:52 +11:00
Peter Serwylo
5779736913 Renamed App.id to App.packageName 2015-12-25 08:04:48 +11:00
Peter Serwylo
756df4d635 Renamed Java constant APP_ID to PACKAGE_NAME
In both the ApkProvider and the AppProvider.

Left the underlying database name as 'id' for now because it is
not as important or visible.
2015-12-25 08:04:41 +11:00
Peter Serwylo
70bf49c3ac Correctly purge removed apks.
There were two bugs in this code that have been fixed. Both were
introduced while moving to a lower memory consumption version of
the repo updater.

The first is that for each app which is updated by a particular repo,
it was not correctly asking the question: "Which apks belonging to
this apk, and provided by this repo, are no longer provided by this
repo?". It was accidentally only comparing the version number of
existing apks in the DB and new apks from the index. This ensures
that the apks being checked to see if they need to be removed or
not are those with the same package name AND the same version code
(provided by the same repo).

The second bug is that when it was persisting a set of apps + apks
to the database, it would ask for existing apks already in the
database for these apps. In this case, there was a bug where of
the 50 apps being persisted, it would only retrieve the first of
these 50 apps from the database to decide if it needed to be
cleaned up or not. Now, it correctly retrieves data from the DB
belonging to all 50 apps.
2015-12-22 22:53:01 +11:00
Peter Serwylo
1d951e7689 Fixed repo updater tests. Fix to temp app/apk providers.
The repo xml handler now has a different mechanism for returning
data about the parsed xml file. This is done via a callback, rather
than storing the data in member variables. The tests now deal with
this correctly.

The update/delete operations of the TempAp[pk]Provider's didn't
work, so that has now been fixed.
2015-11-30 18:16:02 +11:00
Peter Serwylo
9a2d390279 WIP: Do repo update database work in temp table for apks, then copy at end.
At the start of a repo update, it will create a copy of the apk table.
Throughout the update, it will query the original apk table for info.
All inserts and updates happen to the temp table. After the repo has been
verified as trusted, the original apk table is emptied, and all apks are
copied from the temp table to the real one.

I realise that the work done to query the apk table for info during the update
could happen against the temp table, but it was not neccesary to move all of
the queries that are required for this task to the temp apk provider.
2015-11-30 18:14:44 +11:00
Peter Serwylo
b989ef3ecc WIP: Stream index details to database rather than waiting until end.
Refactored repo update to stream apks from network -> jar file reader ->
xml parser -> database. No longer build up large lists of app metadata
to save. Saves memory, but is MUCH slower.

Does sig verification properly, but does it at the END of the process
and DOESN'T ROLL BACK on failure.

Quick and dirty benchmarks show an increase in time from ~25 seconds
to ~30 seconds on my Nexus 4 with Android 5.0. This doesn't seem so
bad to me, for the tradeoff that people on low end devices can actually
update now.

Also, as @eighthave pointed out, if we are able to stream the download
directly from the internet, then that time will drop to essentially
the time it takes to download the index.
2015-11-30 18:14:42 +11:00
Daniel Martí
f5352eaf28 checkstyle: Add ArrayTrailingComma 2015-10-08 22:15:51 +02:00
Daniel Martí
174e37e4e0 checkstyle: Add ExplicitInitialization 2015-10-08 22:01:09 +02:00
Daniel Martí
561d7833d1 checkstyle: Add indentation 2015-10-08 21:41:38 +02:00
Daniel Martí
3eb758f1b2 checkstyle: Add WhitespaceAround 2015-10-08 20:01:37 +02:00
Daniel Martí
95b53706f9 checkstyle: Add NoWhitespace{Before,After} 2015-10-08 19:49:43 +02:00
Daniel Martí
be87a31b84 Apply some PMD fixes 2015-09-11 17:00:24 -07:00
Daniel Martí
90822e9258 Utils: don't capitalize method names 2015-09-11 16:43:03 -07:00
Daniel Martí
0f8c310c8d Optimize imports via AS 2015-09-11 15:32:22 -07:00
Daniel Martí
ce8c928337 Move some Log.i to debug logs
These don't look like they will be useful to users at all.
2015-08-20 19:09:27 -07:00
Daniel Martí
f5ce844803 Add some missing spacings 2015-05-19 14:40:59 +02:00
Daniel Martí
29b78df530 Remove "fdroid." from TAGs, add a comment on filtering by packagename 2015-05-08 23:28:32 +02:00
Daniel Martí
939efa5b17 Run "code cleanup" in Android Studio
This basically removes public, static and final from interfaces since it's
always that way.
2015-05-04 00:06:32 +02:00
Peter Serwylo
1b114b6bae Merge branch 'fix-202' into 'master'
Fix issue #202 - crash due to sqlite parameter limit being hit.

*NOTE: Queuing here for merge after next stable.*

The queries which have the potential to cause crashes due to too many parameters in the `ApkProvider` are now encapsulated in `ApkProvider` and can only be accessed by safe helper methods, which alleviate the problem by breaking big requests down into many smaller requests.

This will probably have to be done for the `ApkProvider`, but leaving for now because the limit is twice as big.

See merge request !70
2015-04-28 21:35:46 +00:00
Daniel Martí
b84e8ef7d6 Add some more final keywords 2015-04-21 17:24:19 +02:00
Peter Serwylo
424839c793 Encapsulate functions which can produce invalid SQL.
Now the other content provider functions which can result in broken SQL
due to the number of arguments is private, and can only be accessed
from a public helper method which ensures that limit is never hit.
2015-04-21 22:27:58 +10:00
Peter Serwylo
898f331bfd Fix #202: Deleting more apks than sqlite can handle in one query.
The static delete helper function in ApkProvider now supports
recursively reducing the size of the list of apks to delete, until
it is under the threshold that sqlite can handle.
2015-04-21 18:38:03 +10:00
Daniel Martí
e1a6e2386f Style all switches equally, without indentation 2015-04-16 18:41:39 +02:00
Daniel Martí
33fd77e3b8 style fix: no spaces before post-increment 2015-04-16 18:25:13 +02:00
Daniel Martí
0f18a0979d Run Android Studio's import optimizer
* Remove all wildcard imports
* Reorder alphabetically and by source
* Remove unused imports
2015-04-07 11:58:22 +02:00
Daniel Martí
dc86129cca More final keywords 2015-04-06 17:54:28 +02:00
Daniel Martí
9e82463e46 More final keywords 2015-04-01 17:12:52 +02:00
Daniel Martí
ea559d0675 Add some final keywords
Especially in constants within classes, which allows for inlining.
2015-04-01 16:17:34 +02:00
Daniel Martí
3eddb1402c Infer more types taking advantage of java 1.7 to simplify code 2015-04-01 12:11:23 +02:00
Daniel Martí
713e33bf57 Remove unnecessary "new Type[]" when declaring arrays 2015-03-31 02:24:39 +02:00
Daniel Martí
82f4a975bb Don't inline log tags, add missing TAG constants 2015-03-30 20:52:40 +02:00
Daniel Martí
2bd05dec38 Remove unnecessary spaces 2015-01-04 00:23:19 +01:00
Daniel Martí
06dd4c8dcb Move F-Droid project into subdir, keeping a root gradle project
Also improved .gitignore a tad
2014-12-09 15:36:07 +01:00