1fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert/*
2fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Copyright (C) 2009 The Android Open Source Project
3fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert *
4fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * you may not use this file except in compliance with the License.
6fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * You may obtain a copy of the License at
7fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert *
8fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert *
10fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Unless required by applicable law or agreed to in writing, software
11fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * See the License for the specific language governing permissions and
14fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * limitations under the License.
15fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert */
16fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
17fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringertpackage com.android.quicksearchbox;
18fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
1926d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringertimport android.database.DataSetObserver;
20fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
21fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringertimport java.util.Collection;
22b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringertimport java.util.List;
23fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
24fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert/**
25fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Maintains the set of available and enabled corpora.
26fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert */
27fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringertpublic interface Corpora {
28fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
29fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    /**
30fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * Gets all corpora, including the web corpus.
31fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     *
32fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * @return Callers must not modify the returned collection.
33fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     */
34fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    Collection<Corpus> getAllCorpora();
35fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
3662adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert    /**
3762adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * Gets all enabled corpora.
3862adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     *
39b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert     * @return Callers must not modify the returned list.
4062adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     */
41b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert    List<Corpus> getEnabledCorpora();
42fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
43fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    /**
44f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     * Gets all corpora that should be included in the blended All mode.
45f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     *
46f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     * @return Callers must not modify the returned list.
47f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     */
48f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    List<Corpus> getCorporaInAll();
49f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert
50f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    /**
51fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * Gets a corpus by name.
52fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     *
53fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * @return A corpus, or null.
54fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     */
55fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    Corpus getCorpus(String name);
56fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
5762adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert    /**
5862adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * Gets the web search corpus.
5962adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     *
6062adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * @return The web search corpus, or {@code null} if there is no web search corpus.
6162adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     */
62c29c9f854db8fa0c85f17cc32bae33dc17c6b127Bjorn Bringert    Corpus getWebCorpus();
63c29c9f854db8fa0c85f17cc32bae33dc17c6b127Bjorn Bringert
6462adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert    /**
6562adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * Gets a source by name.
6662adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     *
6762adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * @param name Source name.
6862adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     * @return A source, or {@code null} if no source with the given name exists.
6962adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert     */
7062adab88055fd0ef6779242245cdc8c3ae5f999cBjorn Bringert    Source getSource(String name);
71fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
72fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    /**
73fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     * Gets the corpus that contains the given source.
74fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert     */
75fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    Corpus getCorpusForSource(Source source);
76883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert
77dbdffd8316e75bc2813dbbcbef13d357970e8c84Bjorn Bringert    /**
7821bff9bbf4286907b01d3153bff2fbd6b5ec5df8Bjorn Bringert     * Updates the corpora.
79dbdffd8316e75bc2813dbbcbef13d357970e8c84Bjorn Bringert     */
8021bff9bbf4286907b01d3153bff2fbd6b5ec5df8Bjorn Bringert    void update();
8126d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert
8226d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert    /**
8326d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     * Registers an observer that is called when corpus set changes.
8426d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     *
8526d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     * @param observer gets notified when the data set changes.
8626d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     */
8726d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert    void registerDataSetObserver(DataSetObserver observer);
8826d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert
8926d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert    /**
9026d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     * Unregisters an observer that has previously been registered with
9126d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     * {@link #registerDataSetObserver(DataSetObserver)}
9226d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     *
9326d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     * @param observer the observer to unregister.
9426d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert     */
9526d85260316193a1aeff5d407d4f32f5297be012Bjorn Bringert    void unregisterDataSetObserver(DataSetObserver observer);
96fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert}
97