--- /dev/null
+package com.cooliris.media;
+
+import java.util.ArrayList;
+
+import android.util.Log;
+
+public final class ConcatenatedDataSource implements DataSource {
+ private static final String TAG = "ConcatenatedDataSource";
+ private final DataSource mFirst;
+ private final DataSource mSecond;
+
+ public ConcatenatedDataSource(DataSource first, DataSource second) {
+ mFirst = first;
+ mSecond = second;
+ }
+
+ public void loadMediaSets(final MediaFeed feed) {
+ mFirst.loadMediaSets(feed);
+ mSecond.loadMediaSets(feed);
+ }
+
+ public void loadItemsForSet(final MediaFeed feed, final MediaSet parentSet, int rangeStart, int rangeEnd) {
+ if (parentSet != null) {
+ DataSource dataSource = parentSet.mDataSource;
+ if (dataSource != null) {
+ dataSource.loadItemsForSet(feed, parentSet, rangeStart, rangeEnd);
+ } else {
+ Log.e(TAG, "MediaSet was not added to the feed");
+ }
+ }
+ }
+
+ public boolean performOperation(int operation, final ArrayList<MediaBucket> mediaBuckets, Object data) {
+ ArrayList<MediaBucket> singleBucket = new ArrayList<MediaBucket>(1);
+ singleBucket.add(null);
+ int numBuckets = mediaBuckets.size();
+ boolean retVal = true;
+ for (int i = 0; i < numBuckets; ++i) { // CR: iterator for
+ MediaBucket bucket = mediaBuckets.get(i);
+ MediaSet set = bucket.mediaSet;
+ if (set != null) {
+ DataSource dataSource = set.mDataSource;
+ if (dataSource != null) {
+ singleBucket.set(0, bucket);
+ retVal &= dataSource.performOperation(operation, singleBucket, data);
+ } else {
+ Log.e(TAG, "MediaSet was not added to the feed");
+ }
+ }
+ }
+ return retVal;
+ }
+
+ public DiskCache getThumbnailCache() {
+ throw new UnsupportedOperationException("ConcatenatedDataSource should not create MediaItems");
+ }
+
+ public void shutdown() {
+ mFirst.shutdown();
+ mSecond.shutdown();
+ }
+}