TODO done: Use a HashMap when updating app lists
This commit is contained in:
parent
ea0eae6b11
commit
994610c516
@ -34,6 +34,8 @@ import java.text.ParseException;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
|
|
||||||
@ -55,7 +57,8 @@ public class RepoXMLHandler extends DefaultHandler {
|
|||||||
// The repo we're processing.
|
// The repo we're processing.
|
||||||
private DB.Repo repo;
|
private DB.Repo repo;
|
||||||
|
|
||||||
private List<DB.App> apps;
|
private Map<String, DB.App> apps;
|
||||||
|
private List<DB.App> appsList;
|
||||||
|
|
||||||
private DB.App curapp = null;
|
private DB.App curapp = null;
|
||||||
private DB.Apk curapk = null;
|
private DB.Apk curapk = null;
|
||||||
@ -89,9 +92,11 @@ public class RepoXMLHandler extends DefaultHandler {
|
|||||||
|
|
||||||
private int totalAppCount;
|
private int totalAppCount;
|
||||||
|
|
||||||
public RepoXMLHandler(DB.Repo repo, List<DB.App> apps, ProgressListener listener) {
|
public RepoXMLHandler(DB.Repo repo, List<DB.App> appsList, ProgressListener listener) {
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
this.apps = apps;
|
this.apps = new HashMap<String, DB.App>();
|
||||||
|
for (DB.App app : appsList) this.apps.put(app.id, app);
|
||||||
|
this.appsList = appsList;
|
||||||
pubkey = null;
|
pubkey = null;
|
||||||
name = null;
|
name = null;
|
||||||
description = null;
|
description = null;
|
||||||
@ -118,18 +123,13 @@ public class RepoXMLHandler extends DefaultHandler {
|
|||||||
|
|
||||||
// If we already have this application (must be from scanning a
|
// If we already have this application (must be from scanning a
|
||||||
// different repo) then just merge in the apks.
|
// different repo) then just merge in the apks.
|
||||||
// TODO: Scanning the whole app list like this every time is
|
DB.App app = apps.get(curapp.id);
|
||||||
// going to be stupid if the list gets very big!
|
if (app != null) {
|
||||||
boolean merged = false;
|
|
||||||
for (DB.App app : apps) {
|
|
||||||
if (app.id.equals(curapp.id)) {
|
|
||||||
app.apks.addAll(curapp.apks);
|
app.apks.addAll(curapp.apks);
|
||||||
merged = true;
|
} else {
|
||||||
break;
|
appsList.add(curapp);
|
||||||
|
apps.put(curapp.id, curapp);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!merged)
|
|
||||||
apps.add(curapp);
|
|
||||||
|
|
||||||
curapp = null;
|
curapp = null;
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ public class RepoXMLHandler extends DefaultHandler {
|
|||||||
// value for the index that was successfully processed, or it may contain
|
// value for the index that was successfully processed, or it may contain
|
||||||
// null if none was available.
|
// null if none was available.
|
||||||
public static String doUpdate(Context ctx, DB.Repo repo,
|
public static String doUpdate(Context ctx, DB.Repo repo,
|
||||||
List<DB.App> apps, StringBuilder newetag, List<Integer> keeprepos,
|
List<DB.App> appsList, StringBuilder newetag, List<Integer> keeprepos,
|
||||||
ProgressListener progressListener) {
|
ProgressListener progressListener) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@ -439,7 +439,7 @@ public class RepoXMLHandler extends DefaultHandler {
|
|||||||
SAXParserFactory spf = SAXParserFactory.newInstance();
|
SAXParserFactory spf = SAXParserFactory.newInstance();
|
||||||
SAXParser sp = spf.newSAXParser();
|
SAXParser sp = spf.newSAXParser();
|
||||||
XMLReader xr = sp.getXMLReader();
|
XMLReader xr = sp.getXMLReader();
|
||||||
RepoXMLHandler handler = new RepoXMLHandler(repo, apps, progressListener);
|
RepoXMLHandler handler = new RepoXMLHandler(repo, appsList, progressListener);
|
||||||
xr.setContentHandler(handler);
|
xr.setContentHandler(handler);
|
||||||
|
|
||||||
File tempIndex = new File(ctx.getFilesDir() + "/tempindex.xml");
|
File tempIndex = new File(ctx.getFilesDir() + "/tempindex.xml");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user