public static List<Message> getMyMessage( CassandraClient cassandraClient, String userId, String afterTimeStamp, String maxCount) { // TODO Auto-generated method stub UUID endUUID = getTimeStampUUID(afterTimeStamp); List<HColumn<UUID, String>> resultList = null; if (afterTimeStamp != null) { int max = getMaxCount(maxCount); resultList = cassandraClient.getColumnKeyByRange( DBConstants.INDEX_MY_MESSAGE, userId, null, endUUID, max); } else { int max = DEFAULE_MESSAGE_COUNT; resultList = cassandraClient.getColumnKeyByRange(DBConstants.INDEX_MY_MESSAGE, userId, null, max); } if (resultList == null) { return null; } List<Message> messageList = getMessageList(cassandraClient, resultList, userId); return messageList; }
public static Message createMessage( CassandraClient cassandraClient, String appId, String fromUserId, String toUserId, String messageContent) { String messageId = IdGenerator.generateId(); HashMap<String, String> map = new HashMap<String, String>(); map.put(DBConstants.F_MESSAGEID, messageId); map.put(DBConstants.F_FROM_USERID, fromUserId); map.put(DBConstants.F_TO_USERID, toUserId); map.put(DBConstants.F_MESSAGE_CONTENT, messageContent); map.put(DBConstants.F_CREATE_DATE, DateUtil.currentDate()); map.put(DBConstants.F_CREATE_SOURCE_ID, appId); log.info("<createMessage> messageId=" + messageId + ", fromUserId=" + fromUserId); cassandraClient.insert(DBConstants.MESSAGE, messageId, map); return new Message(map); }
private static List<Message> getMessageList( CassandraClient cassandraClient, List<HColumn<UUID, String>> messageIdIndexList, String userId) { int size = messageIdIndexList.size(); String[] messageIds = new String[size]; int i = 0; for (HColumn<UUID, String> result : messageIdIndexList) { String messageId = result.getName().toString(); messageIds[i++] = messageId; } Rows<String, String, String> rows = cassandraClient.getMultiRow(DBConstants.MESSAGE, messageIds); if (rows == null) { return null; } // convert rows to List<Message> // change the implementation to sort the return result in right order List<Message> messageList = new ArrayList<Message>(); int count = messageIds.length; String userIds[] = new String[count]; for (i = 0; i < count; i++) { Row<String, String, String> row = rows.getByKey(messageIds[i]); ColumnSlice<String, String> columnSlice = row.getColumnSlice(); if (columnSlice != null) { List<HColumn<String, String>> columns = columnSlice.getColumns(); if (columns != null) { Message message = new Message(columns); String messageType = null; // get the message type if (!userId.equals(message.getFromUserId())) { messageType = MESSAGE_TYPE_RECEIVE; userIds[i] = message.getFromUserId(); } else { messageType = MESSAGE_TYPE_SEND; userIds[i] = message.getToUserId(); } message.addValues(DBConstants.F_MESSAGE_TYPE, messageType); messageList.add(message); } } } Rows<String, String, String> userRows = cassandraClient.getMultiRow( DBConstants.USER, userIds, DBConstants.F_USERID, DBConstants.F_NICKNAME, DBConstants.F_AVATAR, DBConstants.F_GENDER); for (Message message : messageList) { // set user nickname and avatar to message String uid = null; String messageType = message.getMessageType(); if (messageType.equals(MESSAGE_TYPE_SEND)) { uid = message.getToUserId(); } else { uid = message.getFromUserId(); } if (uid != null) { Row<String, String, String> userRow = userRows.getByKey(uid); ColumnSlice<String, String> columnSlice = userRow.getColumnSlice(); if (columnSlice != null) { List<HColumn<String, String>> columns = columnSlice.getColumns(); if (columns != null) { message.addValues(columns); } } } } return messageList; }
public static void deleteMessage( CassandraClient cassandraClient, String userId, String messageId) { // TODO Auto-generated method stub UUID uuid = UUID.fromString(messageId); cassandraClient.deleteUUIDColumn(DBConstants.INDEX_MY_MESSAGE, userId, uuid); }
public static void createUserPostIndex( CassandraClient cassandraClient, String fromUserId, String toUserId, String messageId) { UUID uuid = UUID.fromString(messageId); cassandraClient.insert(DBConstants.INDEX_MY_MESSAGE, fromUserId, uuid, toUserId); cassandraClient.insert(DBConstants.INDEX_MY_MESSAGE, toUserId, uuid, fromUserId); }