Several bugfixes
This commit is contained in:
parent
cc71896137
commit
9073343a95
@ -37,7 +37,7 @@ public class DownloadLogActivity extends ActionBarActivity {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
listview = (ListView) findViewById(R.layout.listview_activity);
|
||||
listview = (ListView) findViewById(R.id.listview);
|
||||
|
||||
dla = new DownloadLogAdapter(this, itemAccess);
|
||||
listview.setAdapter(dla);
|
||||
|
@ -314,13 +314,6 @@ public class Feed extends FeedFile {
|
||||
this.items = list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array that contains all the feeditems of this feed.
|
||||
*/
|
||||
public FeedItem[] getItemsArray() {
|
||||
return items.toArray(new FeedItem[items.size()]);
|
||||
}
|
||||
|
||||
public Date getLastUpdate() {
|
||||
return lastUpdate;
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ public class FeedMedia extends FeedFile implements Playable {
|
||||
@Override
|
||||
public void saveCurrentPosition(SharedPreferences pref, int newPosition) {
|
||||
position = newPosition;
|
||||
DBWriter.setFeedMediaPosition(PodcastApp.getInstance(), this);
|
||||
DBWriter.setFeedMediaPlaybackInformation(PodcastApp.getInstance(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -159,10 +159,15 @@ public class FeedlistFragment extends Fragment implements
|
||||
EventDistributor.getInstance().register(contentUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventDistributor.getInstance().unregister(contentUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
EventDistributor.getInstance().unregister(contentUpdate);
|
||||
if (mActionMode != null) {
|
||||
mActionMode.finish();
|
||||
}
|
||||
|
@ -561,7 +561,7 @@ public class DownloadService extends Service {
|
||||
Log.d(TAG, numberOfDownloads.get() + " downloads left");
|
||||
}
|
||||
|
||||
if (numberOfDownloads.get() <= 0) {
|
||||
if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) {
|
||||
if (AppConfig.DEBUG)
|
||||
Log.d(TAG, "Number of downloads is " + numberOfDownloads.get() + ", attempting shutdown");
|
||||
stopSelf();
|
||||
@ -647,28 +647,21 @@ public class DownloadService extends Service {
|
||||
Log.d(TAG, "Feed has image; Downloading....");
|
||||
savedFeed.getImage().setFeed(savedFeed);
|
||||
final Feed savedFeedRef = savedFeed;
|
||||
handler.post(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
requester.downloadImage(DownloadService.this,
|
||||
savedFeedRef.getImage());
|
||||
} catch (DownloadRequestException e) {
|
||||
e.printStackTrace();
|
||||
DBWriter.addDownloadStatus(
|
||||
DownloadService.this,
|
||||
new DownloadStatus(
|
||||
savedFeedRef.getImage(),
|
||||
savedFeedRef
|
||||
.getImage()
|
||||
.getHumanReadableIdentifier(),
|
||||
DownloadError.ERROR_REQUEST_ERROR,
|
||||
false, e.getMessage()));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
requester.downloadImage(DownloadService.this,
|
||||
savedFeedRef.getImage());
|
||||
} catch (DownloadRequestException e) {
|
||||
e.printStackTrace();
|
||||
DBWriter.addDownloadStatus(
|
||||
DownloadService.this,
|
||||
new DownloadStatus(
|
||||
savedFeedRef.getImage(),
|
||||
savedFeedRef
|
||||
.getImage()
|
||||
.getHumanReadableIdentifier(),
|
||||
DownloadError.ERROR_REQUEST_ERROR,
|
||||
false, e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
} catch (SAXException e) {
|
||||
@ -730,7 +723,7 @@ public class DownloadService extends Service {
|
||||
}
|
||||
|
||||
private boolean hasValidFeedItems(Feed feed) {
|
||||
for (FeedItem item : feed.getItemsArray()) {
|
||||
for (FeedItem item : feed.getItems()) {
|
||||
if (item.getTitle() == null) {
|
||||
Log.e(TAG, "Item has no title");
|
||||
return false;
|
||||
|
@ -73,7 +73,10 @@ public class DBWriter {
|
||||
}
|
||||
media.setDownloaded(false);
|
||||
media.setFile_url(null);
|
||||
setFeedMedia(context, media);
|
||||
PodDBAdapter adapter = new PodDBAdapter(context);
|
||||
adapter.open();
|
||||
adapter.setMedia(media);
|
||||
adapter.close();
|
||||
|
||||
// If media is currently being played, change playback
|
||||
// type to 'stream' and shutdown playback service
|
||||
@ -654,18 +657,18 @@ public class DBWriter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves only value of the 'position'-attribute of a FeedMedia object.
|
||||
* Saves the 'position' and 'duration' attributes of a FeedMedia object
|
||||
*
|
||||
* @param context A context that is used for opening a database connection.
|
||||
* @param media The FeedMedia object.
|
||||
*/
|
||||
public static Future<?> setFeedMediaPosition(final Context context, final FeedMedia media) {
|
||||
public static Future<?> setFeedMediaPlaybackInformation(final Context context, final FeedMedia media) {
|
||||
return dbExec.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
PodDBAdapter adapter = new PodDBAdapter(context);
|
||||
adapter.open();
|
||||
adapter.setFeedMediaPosition(media);
|
||||
adapter.setFeedMediaPlaybackInformation(media);
|
||||
adapter.close();
|
||||
}
|
||||
});
|
||||
|
@ -361,6 +361,7 @@ public class PodDBAdapter {
|
||||
values.put(KEY_DOWNLOAD_URL, media.getDownload_url());
|
||||
values.put(KEY_DOWNLOADED, media.isDownloaded());
|
||||
values.put(KEY_FILE_URL, media.getFile_url());
|
||||
|
||||
if (media.getPlaybackCompletionDate() != null) {
|
||||
values.put(KEY_PLAYBACK_COMPLETION_DATE, media
|
||||
.getPlaybackCompletionDate().getTime());
|
||||
@ -379,14 +380,15 @@ public class PodDBAdapter {
|
||||
return media.getId();
|
||||
}
|
||||
|
||||
public void setFeedMediaPosition(FeedMedia media) {
|
||||
public void setFeedMediaPlaybackInformation(FeedMedia media) {
|
||||
if (media.getId() != 0) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(KEY_POSITION, media.getPosition());
|
||||
values.put(KEY_DURATION, media.getDuration());
|
||||
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
|
||||
new String[]{String.valueOf(media.getId())});
|
||||
} else {
|
||||
Log.e(TAG, "setFeedMediaPosition: ID of media was 0");
|
||||
Log.e(TAG, "setFeedMediaPlaybackInformation: ID of media was 0");
|
||||
}
|
||||
}
|
||||
|
||||
@ -397,8 +399,10 @@ public class PodDBAdapter {
|
||||
public void setCompleteFeed(Feed feed) {
|
||||
db.beginTransaction();
|
||||
setFeed(feed);
|
||||
for (FeedItem item : feed.getItemsArray()) {
|
||||
setFeedItem(item);
|
||||
if (feed.getItems() != null) {
|
||||
for (FeedItem item : feed.getItems()) {
|
||||
setFeedItem(item, false);
|
||||
}
|
||||
}
|
||||
db.setTransactionSuccessful();
|
||||
db.endTransaction();
|
||||
@ -407,7 +411,7 @@ public class PodDBAdapter {
|
||||
public void setFeedItemlist(List<FeedItem> items) {
|
||||
db.beginTransaction();
|
||||
for (FeedItem item : items) {
|
||||
setFeedItem(item);
|
||||
setFeedItem(item, true);
|
||||
}
|
||||
db.setTransactionSuccessful();
|
||||
db.endTransaction();
|
||||
@ -415,7 +419,7 @@ public class PodDBAdapter {
|
||||
|
||||
public long setSingleFeedItem(FeedItem item) {
|
||||
db.beginTransaction();
|
||||
long result = setFeedItem(item);
|
||||
long result = setFeedItem(item, true);
|
||||
db.setTransactionSuccessful();
|
||||
db.endTransaction();
|
||||
return result;
|
||||
@ -423,10 +427,12 @@ public class PodDBAdapter {
|
||||
|
||||
/**
|
||||
* Inserts or updates a feeditem entry
|
||||
*
|
||||
* @param item The FeedItem
|
||||
* @param saveFeed true if the Feed of the item should also be saved. This should be set to
|
||||
* false if the method is executed on a list of FeedItems of the same Feed.
|
||||
* @return the id of the entry
|
||||
*/
|
||||
private long setFeedItem(FeedItem item) {
|
||||
private long setFeedItem(FeedItem item, boolean saveFeed) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(KEY_TITLE, item.getTitle());
|
||||
values.put(KEY_LINK, item.getLink());
|
||||
@ -438,7 +444,7 @@ public class PodDBAdapter {
|
||||
}
|
||||
values.put(KEY_PUBDATE, item.getPubDate().getTime());
|
||||
values.put(KEY_PAYMENT_LINK, item.getPaymentLink());
|
||||
if (item.getFeed() != null) {
|
||||
if (saveFeed && item.getFeed() != null) {
|
||||
setFeed(item.getFeed());
|
||||
}
|
||||
values.put(KEY_FEED, item.getFeed().getId());
|
||||
@ -603,8 +609,10 @@ public class PodDBAdapter {
|
||||
if (feed.getImage() != null) {
|
||||
removeFeedImage(feed.getImage());
|
||||
}
|
||||
for (FeedItem item : feed.getItemsArray()) {
|
||||
removeFeedItem(item);
|
||||
if (feed.getItems() != null) {
|
||||
for (FeedItem item : feed.getItems()) {
|
||||
removeFeedItem(item);
|
||||
}
|
||||
}
|
||||
db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?",
|
||||
new String[]{String.valueOf(feed.getId())});
|
||||
|
@ -84,37 +84,6 @@ public class DBWriterTest extends InstrumentationTestCase {
|
||||
assertNull(media.getFile_url());
|
||||
}
|
||||
|
||||
public void testDeleteFeedMediaOfItemFileDoesNotExists() throws IOException, ExecutionException, InterruptedException {
|
||||
File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile");
|
||||
|
||||
Feed feed = new Feed("url", new Date(), "title");
|
||||
List<FeedItem> items = new ArrayList<FeedItem>();
|
||||
feed.setItems(items);
|
||||
FeedItem item = new FeedItem();
|
||||
item.setTitle("title");
|
||||
item.setPubDate(new Date());
|
||||
item.setFeed(feed);
|
||||
|
||||
FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", false, null);
|
||||
item.setMedia(media);
|
||||
|
||||
items.add(item);
|
||||
|
||||
PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
|
||||
adapter.open();
|
||||
adapter.setCompleteFeed(feed);
|
||||
adapter.close();
|
||||
assertTrue(media.getId() != 0);
|
||||
assertTrue(item.getId() != 0);
|
||||
|
||||
DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get();
|
||||
media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId());
|
||||
assertNotNull(media);
|
||||
assertFalse(dest.exists());
|
||||
assertFalse(media.isDownloaded());
|
||||
assertNull(media.getFile_url());
|
||||
}
|
||||
|
||||
public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException {
|
||||
File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
|
||||
assertNotNull(destFolder);
|
||||
|
@ -124,7 +124,7 @@ public class FeedHandlerTest extends AndroidTestCase {
|
||||
}
|
||||
|
||||
private boolean hasValidFeedItems(Feed feed) {
|
||||
for (FeedItem item : feed.getItemsArray()) {
|
||||
for (FeedItem item : feed.getItems()) {
|
||||
if (item.getTitle() == null) {
|
||||
Log.e(TAG, "Item has no title");
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user