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.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.HashMap; | ||||
| import java.util.jar.JarEntry; | ||||
| import java.util.jar.JarFile; | ||||
| 
 | ||||
| @ -55,7 +57,8 @@ public class RepoXMLHandler extends DefaultHandler { | ||||
|     // The repo we're processing. | ||||
|     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.Apk curapk = null; | ||||
| @ -89,9 +92,11 @@ public class RepoXMLHandler extends DefaultHandler { | ||||
| 
 | ||||
|     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.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; | ||||
|         name = null; | ||||
|         description = null; | ||||
| @ -118,18 +123,13 @@ public class RepoXMLHandler extends DefaultHandler { | ||||
| 
 | ||||
|             // If we already have this application (must be from scanning a | ||||
|             // different repo) then just merge in the apks. | ||||
|             // TODO: Scanning the whole app list like this every time is | ||||
|             // going to be stupid if the list gets very big! | ||||
|             boolean merged = false; | ||||
|             for (DB.App app : apps) { | ||||
|                 if (app.id.equals(curapp.id)) { | ||||
|                     app.apks.addAll(curapp.apks); | ||||
|                     merged = true; | ||||
|                     break; | ||||
|                 } | ||||
|             DB.App app = apps.get(curapp.id); | ||||
|             if (app != null) { | ||||
|                 app.apks.addAll(curapp.apks); | ||||
|             } else { | ||||
|                 appsList.add(curapp); | ||||
|                 apps.put(curapp.id, curapp); | ||||
|             } | ||||
|             if (!merged) | ||||
|                 apps.add(curapp); | ||||
| 
 | ||||
|             curapp = null; | ||||
| 
 | ||||
| @ -354,7 +354,7 @@ public class RepoXMLHandler extends DefaultHandler { | ||||
|     // value for the index that was successfully processed, or it may contain | ||||
|     // null if none was available. | ||||
|     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) { | ||||
|         try { | ||||
| 
 | ||||
| @ -439,7 +439,7 @@ public class RepoXMLHandler extends DefaultHandler { | ||||
|                 SAXParserFactory spf = SAXParserFactory.newInstance(); | ||||
|                 SAXParser sp = spf.newSAXParser(); | ||||
|                 XMLReader xr = sp.getXMLReader(); | ||||
|                 RepoXMLHandler handler = new RepoXMLHandler(repo, apps, progressListener); | ||||
|                 RepoXMLHandler handler = new RepoXMLHandler(repo, appsList, progressListener); | ||||
|                 xr.setContentHandler(handler); | ||||
| 
 | ||||
|                 File tempIndex = new File(ctx.getFilesDir() + "/tempindex.xml"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Daniel Martí
						Daniel Martí