blob: 2d100e4a7eebb372455459d530e7a9745ae13c95 [file] [log] [blame]
package com.android.bluetooth.tests;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.test.AndroidTestCase;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.android.bluetooth.mapapi.BluetoothMapContract;
import com.android.bluetooth.mapapi.BluetoothMapContract.ConversationColumns;
//import info.guardianproject.otr.app.im.provider.Imps;
//import info.guardianproject.otr.app.im.provider.ImpsBluetoothProvider;
public class BluetoothMapIMContentTest extends AndroidTestCase {
private static final String TAG = "BluetoothMapIMContentTest";
private static final boolean D = true;
private static final boolean V = true;
private Context mContext;
private ContentResolver mResolver;
private String getDateTimeString(long timestamp) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
Date date = new Date(timestamp);
return format.format(date); // Format to YYYYMMDDTHHMMSS local time
}
private void printCursor(Cursor c) {
StringBuilder sb = new StringBuilder();
sb.append("\nprintCursor:\n");
for(int i = 0; i < c.getColumnCount(); i++) {
if(c.getColumnName(i).equals(BluetoothMapContract.MessageColumns.DATE) ||
c.getColumnName(i).equals(BluetoothMapContract.ConversationColumns.LAST_THREAD_ACTIVITY) ||
c.getColumnName(i).equals(BluetoothMapContract.ChatStatusColumns.LAST_ACTIVE) ||
c.getColumnName(i).equals(BluetoothMapContract.PresenceColumns.LAST_ONLINE) ){
sb.append(" ").append(c.getColumnName(i)).append(" : ").append(getDateTimeString(c.getLong(i))).append("\n");
} else {
sb.append(" ").append(c.getColumnName(i)).append(" : ").append(c.getString(i)).append("\n");
}
}
Log.d(TAG, sb.toString());
}
private void dumpImMessageTable() {
Log.d(TAG, "**** Dump of im message table ****");
Cursor c = mResolver.query(
BluetoothMapContract.buildMessageUri("info.guardianproject.otr.app.im.provider.bluetoothprovider"),
BluetoothMapContract.BT_INSTANT_MESSAGE_PROJECTION, null, null, "_id DESC");
if (c != null) {
Log.d(TAG, "c.getCount() = " + c.getCount());
c.moveToPosition(-1);
while (c.moveToNext()) {
printCursor(c);
}
} else {
Log.d(TAG, "query failed");
c.close();
}
}
private void insertImMessage( ) {
Log.d(TAG, "**** Insert message in im message table ****");
ContentValues cv = new ContentValues();
cv.put(BluetoothMapContract.MessageColumns.BODY, "This is a test to insert a message");
cv.put(BluetoothMapContract.MessageColumns.DATE, System.currentTimeMillis());
cv.put(BluetoothMapContract.MessageColumns.THREAD_ID, 2);
Uri uri = BluetoothMapContract.buildMessageUri("info.guardianproject.otr.app.im.provider.bluetoothprovider");
Uri uriWithId = mResolver.insert(uri, cv);
if (uriWithId != null) {
Log.d(TAG, "uriWithId = " + uriWithId.toString());
} else {
Log.d(TAG, "query failed");
}
}
private void dumpImConversationTable() {
Log.d(TAG, "**** Dump of conversation message table ****");
Uri uri = BluetoothMapContract.buildConversationUri(
"info.guardianproject.otr.app.im.provider.bluetoothprovider", "1");
uri = uri.buildUpon().appendQueryParameter(BluetoothMapContract.FILTER_ORIGINATOR_SUBSTRING,
"asp").build();
Cursor convo = mResolver.query(
uri,
BluetoothMapContract.BT_CONVERSATION_PROJECTION, null, null,
null);
if (convo != null) {
Log.d(TAG, "c.getCount() = " + convo.getCount());
while(convo.moveToNext()) {
printCursor(convo);
}
convo.close();
} else {
Log.d(TAG, "query failed");
}
}
private void dumpImContactsTable() {
Log.d(TAG, "**** Dump of contacts message table ****");
Cursor cContact = mResolver.query(
BluetoothMapContract.buildConvoContactsUri("info.guardianproject.otr.app.im.provider.bluetoothprovider","1"),
BluetoothMapContract.BT_CONTACT_CHATSTATE_PRESENCE_PROJECTION, null, null, "_id DESC");
if (cContact != null && cContact.moveToFirst()) {
Log.d(TAG, "c.getCount() = " + cContact.getCount());
do {
printCursor(cContact);
} while(cContact.moveToNext());
} else {
Log.d(TAG, "query failed");
cContact.close();
}
}
private void dumpImAccountsTable() {
Log.d(TAG, "**** Dump of accounts table ****");
Cursor cContact = mResolver.query(
BluetoothMapContract.buildAccountUri("info.guardianproject.otr.app.im.provider.bluetoothprovider"),
BluetoothMapContract.BT_ACCOUNT_PROJECTION, null, null, "_id DESC");
if (cContact != null && cContact.moveToFirst()) {
Log.d(TAG, "c.getCount() = " + cContact.getCount());
do {
printCursor(cContact);
} while(cContact.moveToNext());
} else {
Log.d(TAG, "query failed");
cContact.close();
}
}
public BluetoothMapIMContentTest() {
super();
}
public void testDumpMessages() {
mContext = this.getContext();
mResolver = mContext.getContentResolver();
dumpImMessageTable();
dumpImConversationTable();
dumpImContactsTable();
dumpImAccountsTable();
insertImMessage();
}
public void testDumpConversations() {
mContext = this.getContext();
mResolver = mContext.getContentResolver();
dumpImConversationTable();
}
}