summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Oeh <daniel@daniel-pc.(none)>2011-12-24 20:19:31 +0100
committerDaniel Oeh <daniel@daniel-pc.(none)>2011-12-24 20:19:31 +0100
commit53daf91337a70859edae9c3cfb9ec2a8ea3d6229 (patch)
tree71909c09a4be19259c45a31033ecbf20131980af /src
parent1f6bcb3659def2c2160477adb3d494a1030e9511 (diff)
downloadAntennaPod-53daf91337a70859edae9c3cfb9ec2a8ea3d6229.zip
Implemented run-Method in FeedSyncThread
Diffstat (limited to 'src')
-rw-r--r--src/de/podfetcher/feed/FeedManager.java13
-rw-r--r--src/de/podfetcher/service/FeedSyncService.java26
2 files changed, 24 insertions, 15 deletions
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index c88237fc0..af003bdda 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -56,18 +56,17 @@ public class FeedManager {
}
- /** Adds a new Feeditem if its not in the list
- * This Method is only called if the downloaded Feed was already in the feedlist
- * */
+ /** Adds a new Feeditem if its not in the list */
public void addFeedItem(Context context, FeedItem item) {
PodDBAdapter adapter = new PodDBAdapter(context);
// Search list for feeditem
Feed foundFeed = searchFeedByLink(item.link);
- FeedItem foundItem = searchFeedItemByLink(foundFeed, item.link)
+ FeedItem foundItem = searchFeedItemByLink(foundFeed, item.link);
if(foundItem != null) {
- // Update Information, mark as read
+ // Update Information
item.id = foundItem.id;
- foundItem = item
+ foundItem = item;
+ item.read = foundItem.read;
adapter.setFeedItem(item);
} else {
foundFeed.items.add(item);
@@ -75,6 +74,7 @@ public class FeedManager {
}
}
+ /** Get a Feed by its link */
private Feed searchFeedByLink(String link) {
for(Feed feed : feeds) {
if(feed.link.equals(link)) {
@@ -84,6 +84,7 @@ public class FeedManager {
return null;
}
+ /** Get a FeedItem by its link */
private FeedItem searchFeedItemByLink(Feed feed, String link) {
for(FeedItem item : feed.items) {
if(item.link.equals(link)) {
diff --git a/src/de/podfetcher/service/FeedSyncService.java b/src/de/podfetcher/service/FeedSyncService.java
index 569cfbced..5fd748351 100644
--- a/src/de/podfetcher/service/FeedSyncService.java
+++ b/src/de/podfetcher/service/FeedSyncService.java
@@ -4,14 +4,13 @@
*
* */
-package de.podfetcher.service
+package de.podfetcher.service;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.lang.Runtime;
-import de.podfetcher.FeedManager;
-import de.podfetcher.Feed;
-import de.podfetcher.FeedHandler;
+import de.podfetcher.feed.*;
+import de.podfetcher.storage.DownloadRequester;
import android.app.Service;
import android.content.Intent;
@@ -21,13 +20,15 @@ import android.content.Context;
public class FeedSyncService extends Service {
- private ScheduledThreadPoolExecutor executor;
+ private volatile ScheduledThreadPoolExecutor executor;
private FeedManager manager;
+ private DownloadRequester requester;
@Override
public void onCreate() {
- executor = new ScheduledThreadPoolExecutor(Runtime.availableProcessors() + 2);
+ executor = new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() + 2);
manager = FeedManager.getInstance();
+ requester = DownloadRequester.getInstance();
}
@Override
@@ -37,13 +38,14 @@ public class FeedSyncService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- executor.submit(new FeedSyncThread(handleIntent(intent)));
+ executor.submit(new FeedSyncThread(handleIntent(intent), this));
+ return START_STICKY;
}
/** Extracts a Feed object from the given Intent */
private Feed handleIntent(Intent intent) {
Feed feed = manager.getFeed(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
- feed.file_url = requester.getFeedfilePath(context) + requester.getFeedfileName(feed.id);
+ feed.file_url = requester.getFeedfilePath(this) + requester.getFeedfileName(feed.id);
return feed;
}
@@ -51,9 +53,11 @@ public class FeedSyncService extends Service {
class FeedSyncThread implements Runnable {
private Feed feed;
+ private FeedSyncService service;
- public FeedSyncThread(Feed feed) {
+ public FeedSyncThread(Feed feed, FeedSyncService service) {
this.feed = feed;
+ this.service = service;
}
public void run() {
@@ -61,6 +65,10 @@ public class FeedSyncService extends Service {
FeedHandler handler = new FeedHandler();
feed = handler.parseFeed(feed);
+ // Add Feeditems to the database
+ for(FeedItem item : feed.items) {
+ manager.addFeedItem(service, item);
+ }
}
}