1e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown/*
2e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * Copyright (C) 2011 The Android Open Source Project
3e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown *
4e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * you may not use this file except in compliance with the License.
6e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * You may obtain a copy of the License at
7e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown *
8e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown *
10e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * Unless required by applicable law or agreed to in writing, software
11e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * See the License for the specific language governing permissions and
14e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * limitations under the License.
15e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown */
16e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown
17e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownpackage android.database.sqlite;
18e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown
19e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown/**
20e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * Describes a custom SQL function.
21e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown *
22e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown * @hide
23e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown */
24e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownpublic final class SQLiteCustomFunction {
25e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    public final String name;
26e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    public final int numArgs;
27e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    public final SQLiteDatabase.CustomFunction callback;
28e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown
29e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    /**
30e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     * Create custom function.
31e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     *
32e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     * @param name The name of the sqlite3 function.
33e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     * @param numArgs The number of arguments for the function, or -1 to
34e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     * support any number of arguments.
35e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     * @param callback The callback to invoke when the function is executed.
36e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown     */
37e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    public SQLiteCustomFunction(String name, int numArgs,
38e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown            SQLiteDatabase.CustomFunction callback) {
39e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        if (name == null) {
40e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown            throw new IllegalArgumentException("name must not be null.");
41e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        }
42e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown
43e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        this.name = name;
44e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        this.numArgs = numArgs;
45e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        this.callback = callback;
46e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    }
47e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown
48e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    // Called from native.
49e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    @SuppressWarnings("unused")
50e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    private void dispatchCallback(String[] args) {
51e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown        callback.callback(args);
52e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown    }
53e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown}
54