• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.cellbroadcastreceiver;
18 
19 import android.content.Context;
20 import android.database.Cursor;
21 import android.database.sqlite.SQLiteDatabase;
22 import android.database.sqlite.SQLiteOpenHelper;
23 import android.provider.BaseColumns;
24 
25 public class CellBroadcastDatabase {
26     private static final String TAG = "CellBroadcastDatabase";
27 
CellBroadcastDatabase()28     private CellBroadcastDatabase() {}
29 
30     static final String DATABASE_NAME = "cell_broadcasts.db";
31     static final String TABLE_NAME = "broadcasts";
32 
33     static final int DATABASE_VERSION = 1;
34 
35     static final class Columns implements BaseColumns {
36 
Columns()37         private Columns() {}
38 
39         /**
40          * Message geographical scope.
41          * <P>Type: INTEGER</P>
42          */
43         public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
44 
45         /**
46          * Message serial number.
47          * <P>Type: INTEGER</P>
48          */
49         public static final String SERIAL_NUMBER = "serial_number";
50 
51         /**
52          * Message code.
53          * <P>Type: INTEGER</P>
54          */
55         public static final String MESSAGE_CODE = "message_code";
56 
57         /**
58          * Message identifier.
59          * <P>Type: INTEGER</P>
60          */
61         public static final String MESSAGE_IDENTIFIER = "message_id";
62 
63         /**
64          * Message language code.
65          * <P>Type: TEXT</P>
66          */
67         public static final String LANGUAGE_CODE = "language";
68 
69         /**
70          * Message body.
71          * <P>Type: TEXT</P>
72          */
73         public static final String MESSAGE_BODY = "body";
74 
75         /**
76          * Message delivery time.
77          * <P>Type: INTEGER (long)</P>
78          */
79         public static final String DELIVERY_TIME = "date";
80 
81         /**
82          * Has the message been viewed?
83          * <P>Type: INTEGER (boolean)</P>
84          */
85         public static final String MESSAGE_READ = "read";
86 
87         /**
88          * Query for list view adapter.
89          */
90         static final String[] QUERY_COLUMNS = {
91                 _ID,
92                 GEOGRAPHICAL_SCOPE,
93                 SERIAL_NUMBER,
94                 MESSAGE_CODE,
95                 MESSAGE_IDENTIFIER,
96                 LANGUAGE_CODE,
97                 MESSAGE_BODY,
98                 DELIVERY_TIME,
99                 MESSAGE_READ,
100         };
101     }
102 
103     /* Column indexes for reading from cursor. */
104 
105     static final int COLUMN_ID                  = 0;
106     static final int COLUMN_GEOGRAPHICAL_SCOPE  = 1;
107     static final int COLUMN_SERIAL_NUMBER       = 2;
108     static final int COLUMN_MESSAGE_CODE        = 3;
109     static final int COLUMN_MESSAGE_IDENTIFIER  = 4;
110     static final int COLUMN_LANGUAGE_CODE       = 5;
111     static final int COLUMN_MESSAGE_BODY        = 6;
112     static final int COLUMN_DELIVERY_TIME       = 7;
113     static final int COLUMN_MESSAGE_READ        = 8;
114 
115     static class DatabaseHelper extends SQLiteOpenHelper {
116 
DatabaseHelper(Context context)117         DatabaseHelper(Context context) {
118             super(context, DATABASE_NAME, null, DATABASE_VERSION);
119         }
120 
121         @Override
onCreate(SQLiteDatabase db)122         public void onCreate(SQLiteDatabase db) {
123             db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
124                     + Columns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
125                     + Columns.GEOGRAPHICAL_SCOPE + " INTEGER,"
126                     + Columns.SERIAL_NUMBER + " INTEGER,"
127                     + Columns.MESSAGE_CODE + " INTEGER,"
128                     + Columns.MESSAGE_IDENTIFIER + " INTEGER,"
129                     + Columns.LANGUAGE_CODE + " TEXT,"
130                     + Columns.MESSAGE_BODY + " TEXT,"
131                     + Columns.DELIVERY_TIME + " INTEGER,"
132                     + Columns.MESSAGE_READ + " INTEGER);");
133         }
134 
135         @Override
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)136         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
137             // ignored for now
138         }
139     }
140 
141     /**
142      * Returns a Cursor for the list view adapter, in reverse chronological order.
143      * @param db an open readable database
144      * @return the cursor for the list view adapter
145      */
getCursor(SQLiteDatabase db)146     static Cursor getCursor(SQLiteDatabase db) {
147         return db.query(false, TABLE_NAME, Columns.QUERY_COLUMNS,
148                 null, null, null, null, Columns.DELIVERY_TIME + " DESC", null);
149     }
150 }