OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / apps / CtsVerifier / src / com / android / cts / verifier / TestResultsProvider.java
diff --git a/cts/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsProvider.java b/cts/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsProvider.java
new file mode 100644 (file)
index 0000000..a41cb43
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2010 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 com.android.cts.verifier;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.database.sqlite.SQLiteQueryBuilder;
+import android.net.Uri;
+
+/** {@link ContentProvider} that provides read and write access to the test results. */
+public class TestResultsProvider extends ContentProvider {
+
+    private static final String RESULTS_PATH = "results";
+
+    public static final String AUTHORITY = "com.android.cts.verifier.testresultsprovider";
+    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
+    public static final Uri RESULTS_CONTENT_URI =
+            Uri.withAppendedPath(CONTENT_URI, RESULTS_PATH);
+
+    public static Uri getTestNameUri(String testName) {
+        return Uri.withAppendedPath(RESULTS_CONTENT_URI, testName);
+    }
+
+    public static final String _ID = "_id";
+
+    /** String name of the test like "com.android.cts.verifier.foo.FooTestActivity" */
+    public static final String COLUMN_TEST_NAME = "testname";
+
+    /** Integer test result corresponding to constants in {@link TestResult}. */
+    public static final String COLUMN_TEST_RESULT = "testresult";
+
+    /** Boolean indicating whether the test info has been seen. */
+    public static final String COLUMN_TEST_INFO_SEEN = "testinfoseen";
+
+    public static final String[] ALL_COLUMNS = {
+        _ID,
+        COLUMN_TEST_NAME,
+        COLUMN_TEST_RESULT,
+        COLUMN_TEST_INFO_SEEN,
+    };
+
+    private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
+    private static final int RESULTS_ALL = 1;
+    private static final int RESULTS_ID = 2;
+    private static final int RESULTS_TEST_NAME = 3;
+    static {
+        URI_MATCHER.addURI(AUTHORITY, RESULTS_PATH, RESULTS_ALL);
+        URI_MATCHER.addURI(AUTHORITY, RESULTS_PATH + "/#", RESULTS_ID);
+        URI_MATCHER.addURI(AUTHORITY, RESULTS_PATH + "/*", RESULTS_TEST_NAME);
+    }
+
+    private static final String TABLE_NAME = "results";
+
+    private SQLiteOpenHelper mOpenHelper;
+
+    @Override
+    public boolean onCreate() {
+        mOpenHelper = new TestResultsOpenHelper(getContext());
+        return false;
+    }
+
+    private static class TestResultsOpenHelper extends SQLiteOpenHelper {
+
+        private static final String DATABASE_NAME = "results.db";
+
+        private static final int DATABASE_VERSION = 5;
+
+        TestResultsOpenHelper(Context context) {
+            super(context, DATABASE_NAME, null, DATABASE_VERSION);
+        }
+
+        @Override
+        public void onCreate(SQLiteDatabase db) {
+            db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
+                    + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+                    + COLUMN_TEST_NAME + " TEXT, "
+                    + COLUMN_TEST_RESULT + " INTEGER,"
+                    + COLUMN_TEST_INFO_SEEN + " INTEGER DEFAULT 0);");
+        }
+
+        @Override
+        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
+            onCreate(db);
+        }
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        SQLiteQueryBuilder query = new SQLiteQueryBuilder();
+        query.setTables(TABLE_NAME);
+
+        int match = URI_MATCHER.match(uri);
+        switch (match) {
+            case RESULTS_ALL:
+                break;
+
+            case RESULTS_ID:
+                query.appendWhere(_ID);
+                query.appendWhere("=");
+                query.appendWhere(uri.getPathSegments().get(1));
+                break;
+
+            case RESULTS_TEST_NAME:
+                query.appendWhere(COLUMN_TEST_NAME);
+                query.appendWhere("=");
+                query.appendWhere("\"" + uri.getPathSegments().get(1) + "\"");
+                break;
+
+            default:
+                throw new IllegalArgumentException("Unknown URI: " + uri);
+        }
+
+        SQLiteDatabase db = mOpenHelper.getReadableDatabase();
+        return query.query(db, projection, selection, selectionArgs, null, null, sortOrder);
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        long id = db.insert(TABLE_NAME, null, values);
+        getContext().getContentResolver().notifyChange(uri, null);
+        return Uri.withAppendedPath(RESULTS_CONTENT_URI, "" + id);
+
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+
+        int match = URI_MATCHER.match(uri);
+        switch (match) {
+            case RESULTS_ALL:
+                break;
+
+            case RESULTS_ID:
+                String idSelection = _ID + "=" + uri.getPathSegments().get(1);
+                if (selection != null && selection.length() > 0) {
+                    selection = idSelection + " AND " + selection;
+                } else {
+                    selection = idSelection;
+                }
+                break;
+
+            case RESULTS_TEST_NAME:
+                String testNameSelection = COLUMN_TEST_NAME + "=\""
+                        + uri.getPathSegments().get(1) + "\"";
+                if (selection != null && selection.length() > 0) {
+                    selection = testNameSelection + " AND " + selection;
+                } else {
+                    selection = testNameSelection;
+                }
+                break;
+
+            default:
+                throw new IllegalArgumentException("Unknown URI: " + uri);
+        }
+
+        int numUpdated = db.update(TABLE_NAME, values, selection, selectionArgs);
+        if (numUpdated > 0) {
+            getContext().getContentResolver().notifyChange(uri, null);
+        }
+        return numUpdated;
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        int numDeleted = db.delete(TABLE_NAME, selection, selectionArgs);
+        if (numDeleted > 0) {
+            getContext().getContentResolver().notifyChange(uri, null);
+        }
+        return numDeleted;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        return null;
+    }
+}