1b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio/*
2b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Copyright (C) 2010 The Android Open Source Project
3b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio *
4b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License");
5b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * you may not use this file except in compliance with the License.
6b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * You may obtain a copy of the License at
7b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio *
8b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio *      http://www.apache.org/licenses/LICENSE-2.0
9b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio *
10b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software
11b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS,
12b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * See the License for the specific language governing permissions and
14b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * limitations under the License.
15b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio */
16b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
17b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Megliopackage com.android.providers.calendar;
18b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
19b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglioimport android.net.Uri;
20b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
21b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Megliopublic class QueryParameterUtils {
22b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
23b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    public static boolean readBooleanQueryParameter(Uri uri, String name,
24b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            boolean defaultValue) {
25b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        final String flag = getQueryParameter(uri, name);
26b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        return flag == null
27b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                ? defaultValue
28b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                : (!"false".equals(flag.toLowerCase()) && !"0".equals(flag.toLowerCase()));
29b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    }
30b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
31b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    // Duplicated from ContactsProvider2.
32b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    /**
33b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio     * A fast re-implementation of {@link android.net.Uri#getQueryParameter}
34b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio     */
35b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    public static String getQueryParameter(Uri uri, String parameter) {
36b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        String query = uri.getEncodedQuery();
37b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        if (query == null) {
38b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            return null;
39b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        }
40b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
41b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        int queryLength = query.length();
42b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        int parameterLength = parameter.length();
43b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
44b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        String value;
45b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        int index = 0;
46b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        while (true) {
47b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            index = query.indexOf(parameter, index);
48b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            if (index == -1) {
49b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                return null;
50b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            }
51b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
52b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            index += parameterLength;
53b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
54b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            if (queryLength == index) {
55b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                return null;
56b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            }
57b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
58b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            if (query.charAt(index) == '=') {
59b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                index++;
60b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio                break;
61b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            }
62b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        }
63b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
64b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        int ampIndex = query.indexOf('&', index);
65b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        if (ampIndex == -1) {
66b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            value = query.substring(index);
67b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        } else {
68b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio            value = query.substring(index, ampIndex);
69b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        }
70b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio
71b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio        return Uri.decode(value);
72b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio    }
73b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio}
74