private HSBaseMessage getMessage(String msgID, SQLiteDatabase database) { Cursor c = database.rawQuery( "select * from " + getMessageTableName() + " where msg_c_id = ?", new String[] {msgID}); HSBaseMessage msg = null; if (c != null && c.moveToNext()) { msg = MessageFactory.messageWithCusor(c); } if (c != null) c.close(); return msg; }
public List<HSBaseMessage> queryMessages(String conditions, String[] selectionArgs) { SQLiteDatabase db = getReadableDatabase(); List<HSBaseMessage> messages = new ArrayList<HSBaseMessage>(); Cursor cursor = db.rawQuery("select * from " + getMessageTableName() + " " + conditions, selectionArgs); while (cursor != null && cursor.moveToNext()) { HSBaseMessage msg = MessageFactory.messageWithCusor(cursor); messages.add(msg); } if (null != cursor) { cursor.close(); } return messages; }
MessageDBOperationResult markRead(String mid) { List<HSBaseMessage> messagesMarked = new ArrayList<HSBaseMessage>(); ArrayList<UnreadCountChange> unreadCountChanges = new ArrayList<UnreadCountChange>(); unreadCountChanges.add(new UnreadCountChange(mid, 0)); String table = getMessageTableName(); Cursor c = getReadableDatabase() .rawQuery("select * from " + table + " where from_mid = ?", new String[] {mid}); SQLiteDatabase db = getWritableDatabase(); db.beginTransaction(); while (c != null && c.moveToNext()) { HSBaseMessage m = MessageFactory.messageWithCusor(c); messagesMarked.add(m); m.setStatus(HSMessageStatus.READ); ContentValues cv = new ContentValues(); cv.put(COLUMN_STATUS, HSMessageStatus.READ.getValue()); db.update(table, cv, "msg_c_id = ?", new String[] {m.getMsgID()}); } db.setTransactionSuccessful(); db.endTransaction(); return new MessageDBOperationResult(messagesMarked, unreadCountChanges); }
MessageDBOperationResult deleteMessages(String to) { ArrayList<UnreadCountChange> unreadCountChanges = new ArrayList<UnreadCountChange>(); unreadCountChanges.add(new UnreadCountChange(to, 0)); String table = getMessageTableName(); List<HSBaseMessage> messagesToDelete = new ArrayList<HSBaseMessage>(); Cursor c = getReadableDatabase() .rawQuery( "select * from " + table + " where to_mid = ? or from_mid = ?", new String[] {to, to}); while (c != null && c.moveToNext()) { HSBaseMessage m = MessageFactory.messageWithCusor(c); messagesToDelete.add(m); m.deleteAllMediaFiles(); } SQLiteDatabase db = getWritableDatabase(); db.beginTransaction(); db.delete(table, " to_mid = ? or from_mid = ?", new String[] {to, to}); db.setTransactionSuccessful(); db.endTransaction(); return new MessageDBOperationResult(messagesToDelete, unreadCountChanges); }