150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby/*
250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Copyright (C) 2011 The Android Open Source Project
350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby *
450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * you may not use this file except in compliance with the License.
650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * You may obtain a copy of the License at
750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby *
850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby *
1050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Unless required by applicable law or agreed to in writing, software
1150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
1250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * See the License for the specific language governing permissions and
1450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * limitations under the License.
1550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby */
1650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
1750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambypackage com.android.cellbroadcastreceiver;
1850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
1950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.content.Context;
2050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.database.Cursor;
2150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.database.sqlite.SQLiteDatabase;
2250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.database.sqlite.SQLiteOpenHelper;
2350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.provider.BaseColumns;
2450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
2550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambypublic class CellBroadcastDatabase {
2650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    private static final String TAG = "CellBroadcastDatabase";
2750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
2850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    private CellBroadcastDatabase() {}
2950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
3050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final String DATABASE_NAME = "cell_broadcasts.db";
3150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final String TABLE_NAME = "broadcasts";
3250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
3350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int DATABASE_VERSION = 1;
3450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
3550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final class Columns implements BaseColumns {
3650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
3750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        private Columns() {}
3850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
3950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
4050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message geographical scope.
4150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER</P>
4250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
4350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
4450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
4550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
4650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message serial number.
4750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER</P>
4850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
4950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String SERIAL_NUMBER = "serial_number";
5050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
5150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
5250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message code.
5350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER</P>
5450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
5550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String MESSAGE_CODE = "message_code";
5650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
5750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
5850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message identifier.
5950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER</P>
6050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
6150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String MESSAGE_IDENTIFIER = "message_id";
6250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
6350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
6450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message language code.
6550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: TEXT</P>
6650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
6750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String LANGUAGE_CODE = "language";
6850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
6950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
7050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message body.
7150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: TEXT</P>
7250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
7350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String MESSAGE_BODY = "body";
7450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
7550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
7650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Message delivery time.
7750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER (long)</P>
7850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
7950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String DELIVERY_TIME = "date";
8050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
8150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
8250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Has the message been viewed?
8350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * <P>Type: INTEGER (boolean)</P>
8450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
8550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public static final String MESSAGE_READ = "read";
8650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
8750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        /**
8850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         * Query for list view adapter.
8950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby         */
9050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        static final String[] QUERY_COLUMNS = {
9150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                _ID,
9250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                GEOGRAPHICAL_SCOPE,
9350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                SERIAL_NUMBER,
9450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                MESSAGE_CODE,
9550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                MESSAGE_IDENTIFIER,
9650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                LANGUAGE_CODE,
9750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                MESSAGE_BODY,
9850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                DELIVERY_TIME,
9950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                MESSAGE_READ,
10050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        };
10150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    }
10250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
10350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    /* Column indexes for reading from cursor. */
10450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
10550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_ID                  = 0;
10650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_GEOGRAPHICAL_SCOPE  = 1;
10750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_SERIAL_NUMBER       = 2;
10850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_MESSAGE_CODE        = 3;
10950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_MESSAGE_IDENTIFIER  = 4;
11050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_LANGUAGE_CODE       = 5;
11150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_MESSAGE_BODY        = 6;
11250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_DELIVERY_TIME       = 7;
11350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static final int COLUMN_MESSAGE_READ        = 8;
11450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
11550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static class DatabaseHelper extends SQLiteOpenHelper {
11650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
11750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        DatabaseHelper(Context context) {
11850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby            super(context, DATABASE_NAME, null, DATABASE_VERSION);
11950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        }
12050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
12150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        @Override
12250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public void onCreate(SQLiteDatabase db) {
12350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby            db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
12450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
12550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.GEOGRAPHICAL_SCOPE + " INTEGER,"
12650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.SERIAL_NUMBER + " INTEGER,"
12750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.MESSAGE_CODE + " INTEGER,"
12850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.MESSAGE_IDENTIFIER + " INTEGER,"
12950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.LANGUAGE_CODE + " TEXT,"
13050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.MESSAGE_BODY + " TEXT,"
13150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.DELIVERY_TIME + " INTEGER,"
13250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                    + Columns.MESSAGE_READ + " INTEGER);");
13350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        }
13450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
13550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        @Override
13650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
13750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby            // ignored for now
13850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        }
13950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    }
14050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby
14150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    /**
14250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby     * Returns a Cursor for the list view adapter, in reverse chronological order.
14350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby     * @param db an open readable database
14450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby     * @return the cursor for the list view adapter
14550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby     */
14650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    static Cursor getCursor(SQLiteDatabase db) {
14750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby        return db.query(false, TABLE_NAME, Columns.QUERY_COLUMNS,
14850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby                null, null, null, null, Columns.DELIVERY_TIME + " DESC", null);
14950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby    }
15050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby}