aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/search/SuggestionProvider.java
blob: c0a77282a53185ba58b1ddf6a69412ed388c3bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package cgeo.geocaching.search;

import cgeo.geocaching.DataStore;

import org.apache.commons.lang3.StringUtils;

import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;

public class SuggestionProvider extends ContentProvider {

    private static Cursor lastCursor;

    @Override
    public boolean onCreate() {
        return true;
    }

    @Override
    public String getType(final Uri arg0) {
        return SearchManager.SUGGEST_MIME_TYPE;
    }

    @Override
    public Cursor query(final Uri uri, final String[] projection, final String selection, final String[] selectionArgs, final String sortOrder) {
        final String searchTerm = uri.getLastPathSegment();
        // can be empty when deleting the query
        if (StringUtils.equals(searchTerm, SearchManager.SUGGEST_URI_PATH_QUERY)) {
            return lastCursor;
        }
        return getSuggestions(searchTerm);
    }

    private static Cursor getSuggestions(final String searchTerm) {
        lastCursor = DataStore.findSuggestions(searchTerm);
        return lastCursor;
    }

    @Override
    public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
        throw new UnsupportedOperationException();
    }

    @Override
    public Uri insert(final Uri uri, final ContentValues values) {
        throw new UnsupportedOperationException();
    }

    @Override
    public int update(final Uri uri, final ContentValues values, final String selection, final String[] selectionArgs) {
        throw new UnsupportedOperationException();
    }

}