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