OSDN Git Service

android-2.1_r1 snapshot
[android-x86/packages-apps-Gallery2.git] / src / com / cooliris / media / ConcatenatedDataSource.java
diff --git a/src/com/cooliris/media/ConcatenatedDataSource.java b/src/com/cooliris/media/ConcatenatedDataSource.java
new file mode 100644 (file)
index 0000000..896065e
--- /dev/null
@@ -0,0 +1,62 @@
+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();
+    }
+}