blob: ce5a3e2eab61faa5a210429e228b85e96a3b59d8 [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package #packageName#;
import java.util.*;
import android.content.*;
import android.database.*;
import android.database.sqlite.*;
import android.net.*;
import android.text.*;
import #databaseOpenHelperPackageName#.*;
public class #className# extends ContentProvider {
private #databaseOpenHelperClassName# dbHelper;
private static HashMap<String, String> #tableNameUpperCase#_PROJECTION_MAP;
private static final String TABLE_NAME = "#tableNameLowerCase#";
private static final String AUTHORITY = "#authority#";
public static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/"+TABLE_NAME);
#uriConstants#
#defaultSortOrder#
private static final UriMatcher URL_MATCHER;
#constIndexesProjectMap#
//Content values keys (using column names)
#constContentValuesKeys#
public boolean onCreate() {
dbHelper = new #databaseOpenHelperClassName#(getContext(),true);
return (dbHelper == null) ? false : true;
}
public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) {
SQLiteDatabase mDB = dbHelper.getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
switch (URL_MATCHER.match(url)) {
#queryUrlCases#
default:
throw new IllegalArgumentException("Unknown URL " + url);
}
String orderBy = "";
if (TextUtils.isEmpty(sort)) {
orderBy = DEFAULT_SORT_ORDER;
} else {
orderBy = sort;
}
Cursor c = qb.query(mDB, projection, selection, selectionArgs, null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
public String getType(Uri url) {
switch (URL_MATCHER.match(url)) {
#typeRecordCases#
default:
throw new IllegalArgumentException("Unknown URL " + url);
}
}
public Uri insert(Uri url, ContentValues initialValues) {
SQLiteDatabase mDB = dbHelper.getWritableDatabase();
long rowID;
ContentValues values;
if (initialValues != null) {
values = new ContentValues(initialValues);
} else {
values = new ContentValues();
}
if (URL_MATCHER.match(url) != #tableNameUpperCase#) {
throw new IllegalArgumentException("Unknown URL " + url);
}
#insertStatementCases#
rowID = mDB.insert("#tableNameLowerCase#", "#tableNameLowerCase#", values);
if (rowID > 0) {
Uri uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
getContext().getContentResolver().notifyChange(uri, null);
return uri;
}
throw new SQLException("Failed to insert row into " + url);
}
public int delete(Uri url, String where, String[] whereArgs) {
SQLiteDatabase mDB = dbHelper.getWritableDatabase();
int count;
String segment = "";
switch (URL_MATCHER.match(url)) {
#deleteStatementCases#
default:
throw new IllegalArgumentException("Unknown URL " + url);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
public int update(Uri url, ContentValues values, String where, String[] whereArgs) {
SQLiteDatabase mDB = dbHelper.getWritableDatabase();
int count;
String segment = "";
switch (URL_MATCHER.match(url)) {
#updateStatementCases#
default:
throw new IllegalArgumentException("Unknown URL " + url);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
static {
URL_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
#UrlMatcherStatementCases#
#tableNameUpperCase#_PROJECTION_MAP = new HashMap<String, String>();
#ProjectionMapStatementCases#
}
}