aboutsummaryrefslogtreecommitdiffstats
path: root/org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java')
-rw-r--r--org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java381
1 files changed, 381 insertions, 0 deletions
diff --git a/org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java b/org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java
new file mode 100644
index 000000000..e377fc8c4
--- /dev/null
+++ b/org_apg/src/org/thialfihar/android/apg/deprecated/DataProvider.java
@@ -0,0 +1,381 @@
+///*
+// * Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
+// *
+// * 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 org.thialfihar.android.apg.deprecated;
+//
+//import java.io.File;
+//import java.io.FileNotFoundException;
+//import java.util.HashMap;
+//
+//import org.thialfihar.android.apg.Id;
+//
+//import android.content.ContentProvider;
+//import android.content.ContentValues;
+//import android.content.UriMatcher;
+//import android.database.Cursor;
+//import android.database.DatabaseUtils;
+//import android.database.sqlite.SQLiteQueryBuilder;
+//import android.net.Uri;
+//import android.os.ParcelFileDescriptor;
+//import android.text.TextUtils;
+//
+//public class DataProvider extends ContentProvider {
+// public static final String AUTHORITY = "org.thialfihar.android.apg.provider";
+//
+// private static final int PUBLIC_KEY_RING = 101;
+// private static final int PUBLIC_KEY_RING_ID = 102;
+// private static final int PUBLIC_KEY_RING_BY_KEY_ID = 103;
+// private static final int PUBLIC_KEY_RING_BY_EMAILS = 104;
+// private static final int PUBLIC_KEY_RING_KEY = 111;
+// private static final int PUBLIC_KEY_RING_KEY_RANK = 112;
+// private static final int PUBLIC_KEY_RING_USER_ID = 121;
+// private static final int PUBLIC_KEY_RING_USER_ID_RANK = 122;
+//
+// private static final int SECRET_KEY_RING = 201;
+// private static final int SECRET_KEY_RING_ID = 202;
+// private static final int SECRET_KEY_RING_BY_KEY_ID = 203;
+// private static final int SECRET_KEY_RING_BY_EMAILS = 204;
+// private static final int SECRET_KEY_RING_KEY = 211;
+// private static final int SECRET_KEY_RING_KEY_RANK = 212;
+// private static final int SECRET_KEY_RING_USER_ID = 221;
+// private static final int SECRET_KEY_RING_USER_ID_RANK = 222;
+//
+// private static final int DATA_STREAM = 301;
+//
+// private static final String PUBLIC_KEY_RING_CONTENT_DIR_TYPE =
+// "vnd.android.cursor.dir/vnd.thialfihar.apg.public.key_ring";
+// private static final String PUBLIC_KEY_RING_CONTENT_ITEM_TYPE =
+// "vnd.android.cursor.item/vnd.thialfihar.apg.public.key_ring";
+//
+// private static final String PUBLIC_KEY_CONTENT_DIR_TYPE =
+// "vnd.android.cursor.dir/vnd.thialfihar.apg.public.key";
+// private static final String PUBLIC_KEY_CONTENT_ITEM_TYPE =
+// "vnd.android.cursor.item/vnd.thialfihar.apg.public.key";
+//
+// private static final String SECRET_KEY_RING_CONTENT_DIR_TYPE =
+// "vnd.android.cursor.dir/vnd.thialfihar.apg.secret.key_ring";
+// private static final String SECRET_KEY_RING_CONTENT_ITEM_TYPE =
+// "vnd.android.cursor.item/vnd.thialfihar.apg.secret.key_ring";
+//
+// private static final String SECRET_KEY_CONTENT_DIR_TYPE =
+// "vnd.android.cursor.dir/vnd.thialfihar.apg.secret.key";
+// private static final String SECRET_KEY_CONTENT_ITEM_TYPE =
+// "vnd.android.cursor.item/vnd.thialfihar.apg.secret.key";
+//
+// private static final String USER_ID_CONTENT_DIR_TYPE =
+// "vnd.android.cursor.dir/vnd.thialfihar.apg.user_id";
+// private static final String USER_ID_CONTENT_ITEM_TYPE =
+// "vnd.android.cursor.item/vnd.thialfihar.apg.user_id";
+//
+// public static final String _ID = "_id";
+// public static final String MASTER_KEY_ID = "master_key_id";
+// public static final String KEY_ID = "key_id";
+// public static final String USER_ID = "user_id";
+//
+// private static final UriMatcher mUriMatcher;
+//
+// private Database mDb;
+//
+// static {
+// mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/key_id/*", PUBLIC_KEY_RING_BY_KEY_ID);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/emails/*", PUBLIC_KEY_RING_BY_EMAILS);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/*/keys", PUBLIC_KEY_RING_KEY);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/*/keys/#", PUBLIC_KEY_RING_KEY_RANK);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/*/user_ids", PUBLIC_KEY_RING_USER_ID);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/*/user_ids/#", PUBLIC_KEY_RING_USER_ID_RANK);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public", PUBLIC_KEY_RING);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/public/*", PUBLIC_KEY_RING_ID);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/key_id/*", SECRET_KEY_RING_BY_KEY_ID);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/emails/*", SECRET_KEY_RING_BY_EMAILS);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*/keys", SECRET_KEY_RING_KEY);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*/keys/#", SECRET_KEY_RING_KEY_RANK);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*/user_ids", SECRET_KEY_RING_USER_ID);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*/user_ids/#", SECRET_KEY_RING_USER_ID_RANK);
+//
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret", SECRET_KEY_RING);
+// mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*", SECRET_KEY_RING_ID);
+//
+// mUriMatcher.addURI(AUTHORITY, "data/*", DATA_STREAM);
+// }
+//
+// @Override
+// public boolean onCreate() {
+// mDb = new Database(getContext());
+// return true;
+// }
+//
+// @Override
+// public Cursor query(Uri uri, String[] projection, String selection,
+// String[] selectionArgs, String sortOrder) {
+// // TODO: implement the others, then use them for the lists
+// SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
+// HashMap<String, String> projectionMap = new HashMap<String, String>();
+//
+// int match = mUriMatcher.match(uri);
+// int type;
+// switch (match) {
+// case PUBLIC_KEY_RING:
+// case PUBLIC_KEY_RING_ID:
+// case PUBLIC_KEY_RING_BY_KEY_ID:
+// case PUBLIC_KEY_RING_BY_EMAILS:
+// case PUBLIC_KEY_RING_KEY:
+// case PUBLIC_KEY_RING_KEY_RANK:
+// case PUBLIC_KEY_RING_USER_ID:
+// case PUBLIC_KEY_RING_USER_ID_RANK:
+// type = Id.database.type_public;
+// break;
+//
+// case SECRET_KEY_RING:
+// case SECRET_KEY_RING_ID:
+// case SECRET_KEY_RING_BY_KEY_ID:
+// case SECRET_KEY_RING_BY_EMAILS:
+// case SECRET_KEY_RING_KEY:
+// case SECRET_KEY_RING_KEY_RANK:
+// case SECRET_KEY_RING_USER_ID:
+// case SECRET_KEY_RING_USER_ID_RANK:
+// type = Id.database.type_secret;
+// break;
+//
+// default: {
+// throw new IllegalArgumentException("Unknown URI " + uri);
+// }
+// }
+//
+// qb.appendWhere(KeyRings.TABLE_NAME + "." + KeyRings.TYPE + " = " + type);
+//
+// switch (match) {
+// case PUBLIC_KEY_RING_ID:
+// case SECRET_KEY_RING_ID: {
+// qb.appendWhere(" AND " +
+// KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID + " = ");
+// qb.appendWhereEscapeString(uri.getPathSegments().get(2));
+//
+// // break omitted intentionally
+// }
+//
+// case PUBLIC_KEY_RING:
+// case SECRET_KEY_RING: {
+// qb.setTables(KeyRings.TABLE_NAME + " INNER JOIN " + Keys.TABLE_NAME + " ON " +
+// "(" + KeyRings.TABLE_NAME + "." + KeyRings._ID + " = " +
+// Keys.TABLE_NAME + "." + Keys.KEY_RING_ID + " AND " +
+// Keys.TABLE_NAME + "." + Keys.IS_MASTER_KEY + " = '1'" +
+// ") " +
+// " INNER JOIN " + UserIds.TABLE_NAME + " ON " +
+// "(" + Keys.TABLE_NAME + "." + Keys._ID + " = " +
+// UserIds.TABLE_NAME + "." + UserIds.KEY_ID + " AND " +
+// UserIds.TABLE_NAME + "." + UserIds.RANK + " = '0') ");
+//
+// projectionMap.put(_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings._ID);
+// projectionMap.put(MASTER_KEY_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID);
+// projectionMap.put(USER_ID,
+// UserIds.TABLE_NAME + "." + UserIds.USER_ID);
+//
+// if (TextUtils.isEmpty(sortOrder)) {
+// sortOrder = UserIds.TABLE_NAME + "." + UserIds.USER_ID + " ASC";
+// }
+//
+// break;
+// }
+//
+// case SECRET_KEY_RING_BY_KEY_ID:
+// case PUBLIC_KEY_RING_BY_KEY_ID: {
+// qb.setTables(Keys.TABLE_NAME + " AS tmp INNER JOIN " +
+// KeyRings.TABLE_NAME + " ON (" +
+// KeyRings.TABLE_NAME + "." + KeyRings._ID + " = " +
+// "tmp." + Keys.KEY_RING_ID + ")" +
+// " INNER JOIN " + Keys.TABLE_NAME + " ON " +
+// "(" + KeyRings.TABLE_NAME + "." + KeyRings._ID + " = " +
+// Keys.TABLE_NAME + "." + Keys.KEY_RING_ID + " AND " +
+// Keys.TABLE_NAME + "." + Keys.IS_MASTER_KEY + " = '1'" +
+// ") " +
+// " INNER JOIN " + UserIds.TABLE_NAME + " ON " +
+// "(" + Keys.TABLE_NAME + "." + Keys._ID + " = " +
+// UserIds.TABLE_NAME + "." + UserIds.KEY_ID + " AND " +
+// UserIds.TABLE_NAME + "." + UserIds.RANK + " = '0') ");
+//
+// projectionMap.put(_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings._ID);
+// projectionMap.put(MASTER_KEY_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID);
+// projectionMap.put(USER_ID,
+// UserIds.TABLE_NAME + "." + UserIds.USER_ID);
+//
+// qb.appendWhere(" AND tmp." + Keys.KEY_ID + " = ");
+// qb.appendWhereEscapeString(uri.getPathSegments().get(3));
+//
+// break;
+// }
+//
+// case SECRET_KEY_RING_BY_EMAILS:
+// case PUBLIC_KEY_RING_BY_EMAILS: {
+// qb.setTables(KeyRings.TABLE_NAME + " INNER JOIN " + Keys.TABLE_NAME + " ON " +
+// "(" + KeyRings.TABLE_NAME + "." + KeyRings._ID + " = " +
+// Keys.TABLE_NAME + "." + Keys.KEY_RING_ID + " AND " +
+// Keys.TABLE_NAME + "." + Keys.IS_MASTER_KEY + " = '1'" +
+// ") " +
+// " INNER JOIN " + UserIds.TABLE_NAME + " ON " +
+// "(" + Keys.TABLE_NAME + "." + Keys._ID + " = " +
+// UserIds.TABLE_NAME + "." + UserIds.KEY_ID + " AND " +
+// UserIds.TABLE_NAME + "." + UserIds.RANK + " = '0') ");
+//
+// projectionMap.put(_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings._ID);
+// projectionMap.put(MASTER_KEY_ID,
+// KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID);
+// projectionMap.put(USER_ID,
+// UserIds.TABLE_NAME + "." + UserIds.USER_ID);
+//
+// String emails = uri.getPathSegments().get(3);
+// String chunks[] = emails.split(" *, *");
+// boolean gotCondition = false;
+// String emailWhere = "";
+// for (int i = 0; i < chunks.length; ++i) {
+// if (chunks[i].length() == 0) {
+// continue;
+// }
+// if (i != 0) {
+// emailWhere += " OR ";
+// }
+// emailWhere += "tmp." + UserIds.USER_ID + " LIKE ";
+// // match '*<email>', so it has to be at the *end* of the user id
+// emailWhere += DatabaseUtils.sqlEscapeString("%<" + chunks[i] + ">");
+// gotCondition = true;
+// }
+//
+// if (gotCondition) {
+// qb.appendWhere(" AND EXISTS (SELECT tmp." + UserIds._ID +
+// " FROM " + UserIds.TABLE_NAME +
+// " AS tmp WHERE tmp." + UserIds.KEY_ID + " = " +
+// Keys.TABLE_NAME + "." + Keys._ID +
+// " AND (" + emailWhere + "))");
+// }
+//
+// break;
+// }
+//
+// default: {
+// throw new IllegalArgumentException("Unknown URI " + uri);
+// }
+// }
+//
+// qb.setProjectionMap(projectionMap);
+//
+// // If no sort order is specified use the default
+// String orderBy;
+// if (TextUtils.isEmpty(sortOrder)) {
+// orderBy = null;
+// } else {
+// orderBy = sortOrder;
+// }
+//
+// //System.out.println(qb.buildQuery(projection, selection, selectionArgs, null, null, sortOrder, null).replace("WHERE", "WHERE\n"));
+// Cursor c = qb.query(mDb.db(), projection, selection, selectionArgs, null, null, orderBy);
+//
+// // Tell the cursor what uri to watch, so it knows when its source data changes
+// c.setNotificationUri(getContext().getContentResolver(), uri);
+// return c;
+// }
+//
+// @Override
+// public String getType(Uri uri) {
+// switch (mUriMatcher.match(uri)) {
+// case PUBLIC_KEY_RING:
+// case PUBLIC_KEY_RING_BY_EMAILS:
+// return PUBLIC_KEY_RING_CONTENT_DIR_TYPE;
+//
+// case PUBLIC_KEY_RING_ID:
+// return PUBLIC_KEY_RING_CONTENT_ITEM_TYPE;
+//
+// case PUBLIC_KEY_RING_BY_KEY_ID:
+// return PUBLIC_KEY_RING_CONTENT_ITEM_TYPE;
+//
+// case PUBLIC_KEY_RING_KEY:
+// return PUBLIC_KEY_CONTENT_DIR_TYPE;
+//
+// case PUBLIC_KEY_RING_KEY_RANK:
+// return PUBLIC_KEY_CONTENT_ITEM_TYPE;
+//
+// case PUBLIC_KEY_RING_USER_ID:
+// return USER_ID_CONTENT_DIR_TYPE;
+//
+// case PUBLIC_KEY_RING_USER_ID_RANK:
+// return USER_ID_CONTENT_ITEM_TYPE;
+//
+// case SECRET_KEY_RING:
+// case SECRET_KEY_RING_BY_EMAILS:
+// return SECRET_KEY_RING_CONTENT_DIR_TYPE;
+//
+// case SECRET_KEY_RING_ID:
+// return SECRET_KEY_RING_CONTENT_ITEM_TYPE;
+//
+// case SECRET_KEY_RING_BY_KEY_ID:
+// return SECRET_KEY_RING_CONTENT_ITEM_TYPE;
+//
+// case SECRET_KEY_RING_KEY:
+// return SECRET_KEY_CONTENT_DIR_TYPE;
+//
+// case SECRET_KEY_RING_KEY_RANK:
+// return SECRET_KEY_CONTENT_ITEM_TYPE;
+//
+// case SECRET_KEY_RING_USER_ID:
+// return USER_ID_CONTENT_DIR_TYPE;
+//
+// case SECRET_KEY_RING_USER_ID_RANK:
+// return USER_ID_CONTENT_ITEM_TYPE;
+//
+// default:
+// throw new IllegalArgumentException("Unknown URI " + uri);
+// }
+// }
+//
+// @Override
+// public Uri insert(Uri uri, ContentValues initialValues) {
+// // not supported
+// return null;
+// }
+//
+// @Override
+// public int delete(Uri uri, String where, String[] whereArgs) {
+// // not supported
+// return 0;
+// }
+//
+// @Override
+// public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
+// // not supported
+// return 0;
+// }
+//
+// @Override
+// public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+// int match = mUriMatcher.match(uri);
+// if (match != DATA_STREAM) {
+// throw new FileNotFoundException();
+// }
+// String fileName = uri.getPathSegments().get(1);
+// File file = new File(getContext().getFilesDir().getAbsolutePath(), fileName);
+// return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
+// }
+//}