summaryrefslogtreecommitdiff
path: root/src/de
diff options
context:
space:
mode:
Diffstat (limited to 'src/de')
-rw-r--r--src/de/podfetcher/feed/Feed.java11
-rw-r--r--src/de/podfetcher/feed/FeedFile.java22
-rw-r--r--src/de/podfetcher/feed/FeedImage.java10
-rw-r--r--src/de/podfetcher/feed/FeedManager.java152
-rw-r--r--src/de/podfetcher/feed/FeedMedia.java9
-rw-r--r--src/de/podfetcher/service/DownloadService.java4
-rw-r--r--src/de/podfetcher/storage/PodDBAdapter.java17
7 files changed, 122 insertions, 103 deletions
diff --git a/src/de/podfetcher/feed/Feed.java b/src/de/podfetcher/feed/Feed.java
index c4ab4924d..d136e0056 100644
--- a/src/de/podfetcher/feed/Feed.java
+++ b/src/de/podfetcher/feed/Feed.java
@@ -29,17 +29,6 @@ public class Feed extends FeedFile{
this();
this.download_url = url;
}
-
- public Feed(String title, String link, String description, String download_url,
- FeedCategory category) {
- super();
- this.title = title;
- this.link = link;
- this.description = description;
- this.download_url = download_url;
- this.category = category;
- items = new ArrayList<FeedItem>();
- }
public String getTitle() {
return title;
diff --git a/src/de/podfetcher/feed/FeedFile.java b/src/de/podfetcher/feed/FeedFile.java
index 722a968b9..f06f79a62 100644
--- a/src/de/podfetcher/feed/FeedFile.java
+++ b/src/de/podfetcher/feed/FeedFile.java
@@ -5,11 +5,19 @@ public abstract class FeedFile extends FeedComponent {
protected String file_url;
protected String download_url;
protected long downloadId; // temporary id given by the Android DownloadManager
+ protected boolean downloaded;
+
+ public FeedFile(String file_url, String download_url, boolean downloaded) {
+ super();
+ this.file_url = file_url;
+ this.download_url = download_url;
+ this.downloaded = downloaded;
+ }
public FeedFile() {
- downloadId = -1;
+ this(null, null, false);
}
-
+
public String getFile_url() {
return file_url;
}
@@ -32,10 +40,16 @@ public abstract class FeedFile extends FeedComponent {
}
public boolean isDownloaded() {
- return downloadId == -1 && file_url != null;
+ return downloaded;
+ }
+
+ public void setDownloaded(boolean downloaded) {
+ this.downloaded = downloaded;
}
public boolean isDownloading() {
- return downloadId != -1 && file_url != null;
+ return downloaded == false && file_url != null;
}
+
+
}
diff --git a/src/de/podfetcher/feed/FeedImage.java b/src/de/podfetcher/feed/FeedImage.java
index 5d39b69b4..c10aeebaa 100644
--- a/src/de/podfetcher/feed/FeedImage.java
+++ b/src/de/podfetcher/feed/FeedImage.java
@@ -8,21 +8,19 @@ public class FeedImage extends FeedFile {
protected Bitmap image_bitmap;
public FeedImage(String download_url, String title) {
- super();
+ super(null, download_url, false);
this.download_url = download_url;
this.title = title;
}
- public FeedImage(long id, String title, String file_url, String download_url) {
- super();
+ public FeedImage(long id, String title, String file_url, String download_url, boolean downloaded) {
+ super(file_url, download_url, downloaded);
this.id = id;
this.title = title;
- this.file_url = file_url;
- this.download_url = download_url;
}
public FeedImage() {
-
+ super();
}
public String getTitle() {
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index 91e897f65..1d448e8b8 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -2,19 +2,16 @@ package de.podfetcher.feed;
import java.util.ArrayList;
-
import de.podfetcher.storage.*;
import android.content.Context;
import android.database.Cursor;
import android.util.Log;
-
/**
- * Singleton class
- * Manages all feeds, categories and feeditems
- *
- *
- * */
+ * Singleton class Manages all feeds, categories and feeditems
+ *
+ *
+ * */
public class FeedManager {
private static final String TAG = "FeedManager";
@@ -22,8 +19,7 @@ public class FeedManager {
private ArrayList<Feed> feeds;
private ArrayList<FeedCategory> categories;
- private DownloadRequester requester;
-
+ private DownloadRequester requester;
private FeedManager() {
feeds = new ArrayList<Feed>();
@@ -32,16 +28,16 @@ public class FeedManager {
}
- public static FeedManager getInstance(){
- if(singleton == null) {
+ public static FeedManager getInstance() {
+ if (singleton == null) {
singleton = new FeedManager();
}
- return singleton;
+ return singleton;
}
public void refreshAllFeeds(Context context) {
Log.d(TAG, "Refreshing all feeds.");
- for(Feed feed : feeds) {
+ for (Feed feed : feeds) {
requester.downloadFeed(context, feed);
}
}
@@ -49,11 +45,10 @@ public class FeedManager {
private void addNewFeed(Context context, Feed feed) {
feeds.add(feed);
feed.setId(setFeed(context, feed));
- for(FeedItem item : feed.getItems()) {
+ for (FeedItem item : feed.getItems()) {
setFeedItem(context, item);
}
- }
-
+ }
/** Adds a new Feeditem if its not in the list */
public void addFeedItem(Context context, FeedItem item) {
@@ -61,14 +56,14 @@ public class FeedManager {
// Search list for feeditem
Feed feed = item.getFeed();
FeedItem foundItem = searchFeedItemByLink(feed, item.getLink());
- if(foundItem != null) {
+ if (foundItem != null) {
// Update Information
item.id = foundItem.id;
foundItem = item;
item.setRead(foundItem.isRead());
adapter.setFeedItem(item);
} else {
- feed.getItems().add(item);
+ feed.getItems().add(item);
item.id = adapter.setFeedItem(item);
}
}
@@ -76,33 +71,38 @@ public class FeedManager {
public void updateFeed(Context context, Feed newFeed) {
// Look up feed in the feedslist
Feed savedFeed = searchFeedByLink(newFeed.getLink());
- if(savedFeed == null) {
- Log.d(TAG, "Found no existing Feed with title " + newFeed.getTitle() + ". Adding as new one.");
+ if (savedFeed == null) {
+ Log.d(TAG,
+ "Found no existing Feed with title " + newFeed.getTitle()
+ + ". Adding as new one.");
// Add a new Feed
addNewFeed(context, newFeed);
- }else {
- Log.d(TAG, "Feed with title " + newFeed.getTitle() + " already exists. Syncing new with existing one.");
+ } else {
+ Log.d(TAG, "Feed with title " + newFeed.getTitle()
+ + " already exists. Syncing new with existing one.");
// Look for new or updated Items
- for(FeedItem item : newFeed.getItems()) {
- FeedItem oldItem = searchFeedItemByLink(savedFeed, item.getLink());
- if(oldItem != null) {
- FeedItem newItem = searchFeedItemByLink(newFeed, item.getLink());
- if(newItem != null) {
+ for (FeedItem item : newFeed.getItems()) {
+ FeedItem oldItem = searchFeedItemByLink(savedFeed,
+ item.getLink());
+ if (oldItem != null) {
+ FeedItem newItem = searchFeedItemByLink(newFeed,
+ item.getLink());
+ if (newItem != null) {
newItem.setRead(oldItem.isRead());
}
}
}
newFeed.setId(savedFeed.getId());
savedFeed = newFeed;
- setFeed(context, newFeed);
+ setFeed(context, newFeed);
}
}
/** Get a Feed by its link */
private Feed searchFeedByLink(String link) {
- for(Feed feed : feeds) {
- if(feed.getLink().equals(link)) {
+ for (Feed feed : feeds) {
+ if (feed.getLink().equals(link)) {
return feed;
}
}
@@ -111,8 +111,8 @@ public class FeedManager {
/** Get a FeedItem by its link */
private FeedItem searchFeedItemByLink(Feed feed, String link) {
- for(FeedItem item : feed.getItems()) {
- if(item.getLink().equals(link)) {
+ for (FeedItem item : feed.getItems()) {
+ if (item.getLink().equals(link)) {
return item;
}
}
@@ -139,13 +139,13 @@ public class FeedManager {
/** Updates information of an existing FeedMedia object. */
public long setFeedMedia(Context context, FeedMedia media) {
PodDBAdapter adapter = new PodDBAdapter(context);
- return adapter.setMedia(media);
+ return adapter.setMedia(media);
}
/** Get a Feed by its id */
public Feed getFeed(long id) {
- for(Feed f : feeds) {
- if(f.id == id) {
+ for (Feed f : feeds) {
+ if (f.id == id) {
return f;
}
}
@@ -154,19 +154,19 @@ public class FeedManager {
/** Get a Feed Image by its id */
public FeedImage getFeedImage(long id) {
- for(Feed f : feeds) {
+ for (Feed f : feeds) {
FeedImage image = f.getImage();
- if(image != null && image.getId() == id) {
+ if (image != null && image.getId() == id) {
return image;
}
}
return null;
}
- /** Get a Feed Item by its id and its feed*/
+ /** Get a Feed Item by its id and its feed */
public FeedItem getFeedItem(long id, Feed feed) {
- for(FeedItem item : feed.getItems()) {
- if(item.getId() == id) {
+ for (FeedItem item : feed.getItems()) {
+ if (item.getId() == id) {
return item;
}
}
@@ -177,7 +177,7 @@ public class FeedManager {
/** Get a FeedMedia object by the id of the Media object and the feed object */
public FeedMedia getFeedMedia(long id, Feed feed) {
for (FeedItem item : feed.getItems()) {
- if(item.getMedia().getId() == id) {
+ if (item.getMedia().getId() == id) {
return item.getMedia();
}
}
@@ -191,60 +191,77 @@ public class FeedManager {
updateArrays(context);
}
-
public void updateArrays(Context context) {
feeds.clear();
categories.clear();
- extractFeedlistFromCursor(context);
+ extractFeedlistFromCursor(context);
}
private void extractFeedlistFromCursor(Context context) {
PodDBAdapter adapter = new PodDBAdapter(context);
adapter.open();
Cursor feedlistCursor = adapter.getAllFeedsCursor();
- if(feedlistCursor.moveToFirst()) {
+ if (feedlistCursor.moveToFirst()) {
do {
Feed feed = new Feed();
- feed.id = feedlistCursor.getLong(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_ID));
- feed.setTitle(feedlistCursor.getString(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_TITLE)));
- feed.setLink(feedlistCursor.getString(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_LINK)));
- feed.setDescription(feedlistCursor.getString(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_DESCRIPTION)));
- feed.setImage(adapter.getFeedImage(feedlistCursor.getLong(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_IMAGE))));
- feed.file_url = feedlistCursor.getString(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_FILE_URL));
- feed.download_url = feedlistCursor.getString(feedlistCursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOAD_URL));
-
+ feed.id = feedlistCursor.getLong(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_ID));
+ feed.setTitle(feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_TITLE)));
+ feed.setLink(feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_LINK)));
+ feed.setDescription(feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_DESCRIPTION)));
+ feed.setImage(adapter.getFeedImage(feedlistCursor
+ .getLong(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_IMAGE))));
+ feed.file_url = feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_FILE_URL));
+ feed.download_url = feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_DOWNLOAD_URL));
+ feed.setDownloaded(feedlistCursor.getInt(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_DOWNLOADED)) > 0);
// Get FeedItem-Object
Cursor itemlistCursor = adapter.getAllItemsOfFeedCursor(feed);
- feed.setItems(extractFeedItemsFromCursor(context, feed, itemlistCursor));
+ feed.setItems(extractFeedItemsFromCursor(context, feed,
+ itemlistCursor));
feeds.add(feed);
- }while(feedlistCursor.moveToNext());
+ } while (feedlistCursor.moveToNext());
}
adapter.close();
}
- private ArrayList<FeedItem> extractFeedItemsFromCursor(Context context, Feed feed, Cursor itemlistCursor) {
+ private ArrayList<FeedItem> extractFeedItemsFromCursor(Context context,
+ Feed feed, Cursor itemlistCursor) {
ArrayList<FeedItem> items = new ArrayList<FeedItem>();
PodDBAdapter adapter = new PodDBAdapter(context);
adapter.open();
- if(itemlistCursor.moveToFirst()) {
+ if (itemlistCursor.moveToFirst()) {
do {
FeedItem item = new FeedItem();
- item.id = itemlistCursor.getLong(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_ID));
+ item.id = itemlistCursor.getLong(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_ID));
item.setFeed(feed);
- item.setTitle(itemlistCursor.getString(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_TITLE)));
- item.setLink(itemlistCursor.getString(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_LINK)));
- item.setDescription(itemlistCursor.getString(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_DESCRIPTION)));
- item.setPubDate(itemlistCursor.getString(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_PUBDATE)));
- item.setMedia(adapter.getFeedMedia(
- itemlistCursor.getLong(
- itemlistCursor.getColumnIndex(PodDBAdapter.KEY_MEDIA)), item));
- item.setRead((itemlistCursor.getInt(itemlistCursor.getColumnIndex(PodDBAdapter.KEY_READ)) > 0) ? true : false);
+ item.setTitle(itemlistCursor.getString(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_TITLE)));
+ item.setLink(itemlistCursor.getString(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_LINK)));
+ item.setDescription(itemlistCursor.getString(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_DESCRIPTION)));
+ item.setPubDate(itemlistCursor.getString(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_PUBDATE)));
+ item.setMedia(adapter.getFeedMedia(itemlistCursor
+ .getLong(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_MEDIA)), item));
+ item.setRead((itemlistCursor.getInt(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_READ)) > 0) ? true
+ : false);
items.add(item);
- } while(itemlistCursor.moveToNext());
+ } while (itemlistCursor.moveToNext());
}
adapter.close();
return items;
@@ -254,7 +271,4 @@ public class FeedManager {
return feeds;
}
-
-
-
}
diff --git a/src/de/podfetcher/feed/FeedMedia.java b/src/de/podfetcher/feed/FeedMedia.java
index a74947411..44926e6cf 100644
--- a/src/de/podfetcher/feed/FeedMedia.java
+++ b/src/de/podfetcher/feed/FeedMedia.java
@@ -8,24 +8,21 @@ public class FeedMedia extends FeedFile{
private FeedItem item;
public FeedMedia(FeedItem i, String download_url, long size, String mime_type) {
- super();
+ super(null, download_url, false);
this.item = i;
- this.download_url = download_url;
this.size = size;
this.mime_type = mime_type;
}
public FeedMedia(long id, FeedItem item, int duration, int position, long size, String mime_type,
- String file_url, String download_url) {
- super();
+ String file_url, String download_url, boolean downloaded) {
+ super(file_url, download_url, downloaded);
this.id = id;
this.item = item;
this.duration = duration;
this.position = position;
this.size = size;
this.mime_type = mime_type;
- this.file_url = file_url;
- this.download_url = download_url;
}
public int getDuration() {
diff --git a/src/de/podfetcher/service/DownloadService.java b/src/de/podfetcher/service/DownloadService.java
index baf2336f6..c9620be90 100644
--- a/src/de/podfetcher/service/DownloadService.java
+++ b/src/de/podfetcher/service/DownloadService.java
@@ -181,7 +181,7 @@ public class DownloadService extends Service {
public void run() {
FeedManager manager = FeedManager.getInstance();
FeedHandler handler = new FeedHandler();
-
+ feed.setDownloaded(true);
feed = handler.parseFeed(feed);
Log.d(TAG, feed.getTitle() + " parsed");
// Download Feed Image if provided
@@ -220,6 +220,7 @@ public class DownloadService extends Service {
@Override
public void run() {
+ image.setDownloaded(true);
requester.removeFeedImage(image);
manager.setFeedImage(service, image);
}
@@ -239,6 +240,7 @@ public class DownloadService extends Service {
@Override
public void run() {
requester.removeFeedMedia(media);
+ media.setDownloaded(true);
// Get duration
try {
mediaplayer.setDataSource(media.getFile_url());
diff --git a/src/de/podfetcher/storage/PodDBAdapter.java b/src/de/podfetcher/storage/PodDBAdapter.java
index fce4ff32d..b2cdfb6a6 100644
--- a/src/de/podfetcher/storage/PodDBAdapter.java
+++ b/src/de/podfetcher/storage/PodDBAdapter.java
@@ -40,6 +40,7 @@ public class PodDBAdapter {
public static final String KEY_CATEGORY = "category";
public static final String KEY_FEED = "feed";
public static final String KEY_MEDIA = "media";
+ public static final String KEY_DOWNLOADED = "downloaded";
// Table names
public static final String TABLE_NAME_FEEDS = "Feeds";
@@ -56,7 +57,7 @@ public class PodDBAdapter {
+ " TEXT," + KEY_LINK + " TEXT," + KEY_DESCRIPTION
+ " TEXT," + KEY_IMAGE + " INTEGER," + KEY_CATEGORY
+ " INTEGER," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL
- + " TEXT)";
+ + " TEXT," + KEY_DOWNLOADED + " INTEGER)";
private static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE "
+ TABLE_NAME_FEED_ITEMS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
@@ -72,13 +73,13 @@ public class PodDBAdapter {
private static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE "
+ TABLE_NAME_FEED_IMAGES + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_FILE_URL + " TEXT,"
- + KEY_DOWNLOAD_URL + " TEXT)";
+ + KEY_DOWNLOAD_URL + " TEXT," + KEY_DOWNLOADED + " INTEGER)";
private static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE "
+ TABLE_NAME_FEED_MEDIA + " (" + TABLE_PRIMARY_KEY + KEY_DURATION
+ " INTEGER," + KEY_POSITION + " INTEGER,"
+ KEY_SIZE + " INTEGER," + KEY_MIME_TYPE + " TEXT,"
- + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT)";
+ + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT," + KEY_DOWNLOADED + " INTEGER)";
private SQLiteDatabase db;
private final Context context;
@@ -128,7 +129,7 @@ public class PodDBAdapter {
values.put(KEY_FILE_URL, feed.getFile_url());
}
values.put(KEY_DOWNLOAD_URL, feed.getDownload_url());
-
+ values.put(KEY_DOWNLOADED, feed.isDownloaded());
open();
if(feed.getId() == 0) {
// Create new entry
@@ -168,6 +169,7 @@ public class PodDBAdapter {
ContentValues values = new ContentValues();
values.put(KEY_TITLE, image.getTitle());
values.put(KEY_DOWNLOAD_URL, image.getDownload_url());
+ values.put(KEY_DOWNLOADED, image.isDownloaded());
if(image.getFile_url() != null) {
values.put(KEY_FILE_URL, image.getFile_url());
}
@@ -192,6 +194,7 @@ public class PodDBAdapter {
values.put(KEY_SIZE, media.getSize());
values.put(KEY_MIME_TYPE, media.getMime_type());
values.put(KEY_DOWNLOAD_URL, media.getDownload_url());
+ values.put(KEY_DOWNLOADED, media.isDownloaded());
if(media.getFile_url() != null) {
values.put(KEY_FILE_URL, media.getFile_url());
}
@@ -309,7 +312,8 @@ public class PodDBAdapter {
cursor.getLong(cursor.getColumnIndex(KEY_SIZE)),
cursor.getString(cursor.getColumnIndex(KEY_MIME_TYPE)),
cursor.getString(cursor.getColumnIndex(KEY_FILE_URL)),
- cursor.getString(cursor.getColumnIndex(KEY_DOWNLOAD_URL)));
+ cursor.getString(cursor.getColumnIndex(KEY_DOWNLOAD_URL)),
+ cursor.getInt(cursor.getColumnIndex(KEY_DOWNLOADED)) > 0);
close();
return media;
}
@@ -330,7 +334,8 @@ public class PodDBAdapter {
cursor.getString(
cursor.getColumnIndex(KEY_FILE_URL)),
cursor.getString(
- cursor.getColumnIndex(KEY_DOWNLOAD_URL)));
+ cursor.getColumnIndex(KEY_DOWNLOAD_URL)),
+ cursor.getInt(cursor.getColumnIndex(KEY_DOWNLOADED)) > 0);
close();
return image;
}