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}