1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/*
2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright (C) 2010 The Android Open Source Project
3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the "License");
5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License.
6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at
7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *      http://www.apache.org/licenses/LICENSE-2.0
9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software
11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an "AS IS" BASIS,
12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and
14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License.
15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */
16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.android.gallery3d.data;
18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.android.gallery3d.app.GalleryApp;
20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuclass ComboSource extends MediaSource {
22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private static final int COMBO_ALBUMSET = 0;
23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private static final int COMBO_ALBUM = 1;
24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private GalleryApp mApplication;
25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private PathMatcher mMatcher;
26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public ComboSource(GalleryApp application) {
28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        super("combo");
29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        mApplication = application;
30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        mMatcher = new PathMatcher();
31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        mMatcher.add("/combo/*", COMBO_ALBUMSET);
32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        mMatcher.add("/combo/*/*", COMBO_ALBUM);
33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    // The only path we accept is "/combo/{set1, set2, ...} and /combo/item/{set1, set2, ...}"
36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    @Override
37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public MediaObject createMediaObject(Path path) {
38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        String[] segments = path.split();
39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        if (segments.length < 2) {
40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu            throw new RuntimeException("bad path: " + path);
41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        }
42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        DataManager dataManager = mApplication.getDataManager();
44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        switch (mMatcher.match(path)) {
45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu            case COMBO_ALBUMSET:
46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu                return new ComboAlbumSet(path, mApplication,
47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu                        dataManager.getMediaSetsFromString(segments[1]));
48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu            case COMBO_ALBUM:
50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu                return new ComboAlbum(path,
51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu                        dataManager.getMediaSetsFromString(segments[2]), segments[1]);
52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        }
53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return null;
54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu}
56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu