use of android.arch.persistence.db.SupportSQLiteQuery in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadHistory.
public Observable<ChatResponse<ResultHistory>> getThreadHistory(@NonNull SearchSystemMetadataRequest request) {
return rx.Observable.create(subscriber -> {
List<MessageVO> messageVOS = new ArrayList<>();
List<CacheMessageVO> cacheMessageVOS;
long offset = request.getOffset();
long count = request.getCount();
String order = request.getOrder();
offset = offset >= 0 ? offset : 0;
count = count > 0 ? count : 50;
if (Util.isNullOrEmpty(order)) {
order = "desc";
}
String rawQuery = "SELECT * FROM CacheMessageVO WHERE threadVoId =" + request.getMessageThreadId();
// rawQuery = rawQuery + " AND system_metadata_" + request.getMetadataCriteria().getField() + " >= " + request.getMetadataCriteria().getGte();
long contentCount = messageDao.getHistoryContentCount(new SimpleSQLiteQuery(rawQuery.replaceFirst("SELECT \\* ", "SELECT COUNT(ID) ")));
rawQuery = addOrderAndLimitAndOffset(offset, count, order, rawQuery);
SupportSQLiteQuery sqLiteQuery = new SimpleSQLiteQuery(rawQuery);
cacheMessageVOS = messageDao.getRawHistory(sqLiteQuery);
prepareMessageVOs(messageVOS, cacheMessageVOS);
List<Sending> sendingList = getAllSendingQueueByThreadId(request.getMessageThreadId());
List<Uploading> uploadingList = getAllUploadingQueueByThreadId(request.getMessageThreadId());
List<Failed> failedList = getAllWaitQueueCacheByThreadId(request.getMessageThreadId());
ChatResponse<ResultHistory> chatResponse = new ChatResponse<>();
chatResponse.setCache(true);
ResultHistory resultHistory = new ResultHistory();
resultHistory.setHistory(messageVOS);
resultHistory.setNextOffset(request.getOffset() + messageVOS.size());
resultHistory.setContentCount(contentCount);
if (messageVOS.size() + request.getOffset() < contentCount) {
resultHistory.setHasNext(true);
} else {
resultHistory.setHasNext(false);
}
resultHistory.setHistory(messageVOS);
resultHistory.setSending(sendingList);
resultHistory.setUploadingQueue(uploadingList);
resultHistory.setFailed(failedList);
chatResponse.setErrorCode(0);
chatResponse.setHasError(false);
chatResponse.setErrorMessage("");
chatResponse.setResult(resultHistory);
chatResponse.setCache(true);
chatResponse.setSubjectId(request.getMessageThreadId());
subscriber.onNext(chatResponse);
});
}
use of android.arch.persistence.db.SupportSQLiteQuery in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method deleteMessages.
public void deleteMessages(@NonNull History history, long threadId) {
long fromTime = history.getFromTime();
long fromTimeNanos = history.getFromTimeNanos();
long toTime = history.getToTime();
long toTimeNanos = history.getToTimeNanos();
long messageId = history.getId();
long offset = history.getOffset();
long count = history.getCount();
String query = history.getQuery();
String order = history.getOrder();
offset = offset >= 0 ? offset : 0;
count = count > 0 ? count : 50;
if (Util.isNullOrEmpty(order)) {
order = "desc";
}
String rawQuery = "DELETE FROM CacheMessageVO WHERE threadVoId =" + threadId + " ORDER BY timeStamp desc LIMIT 50 OFFSET 0";
// rawQuery = rawQuery + " LIMIT " + count + " OFFSET " + offset;
SupportSQLiteQuery sqLiteQuery = new SimpleSQLiteQuery(rawQuery);
messageDao.deleteMessages(sqLiteQuery);
}
use of android.arch.persistence.db.SupportSQLiteQuery in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadHistory.
public Observable<ChatResponse<ResultHistory>> getThreadHistory(@NonNull History history, long threadId) {
return rx.Observable.create(subscriber -> {
List<MessageVO> messageVOS = new ArrayList<>();
List<CacheMessageVO> cacheMessageVOS;
long fromTime = history.getFromTime();
long fromTimeNanos = history.getFromTimeNanos();
long toTime = history.getToTime();
long toTimeNanos = history.getToTimeNanos();
long messageId = history.getId();
long offset = history.getOffset();
long count = history.getCount();
int messageType = history.getMessageType();
String query = history.getQuery();
String order = history.getOrder();
offset = offset >= 0 ? offset : 0;
count = count > 0 ? count : 50;
if (Util.isNullOrEmpty(order)) {
order = "desc";
}
String rawQuery = "SELECT * FROM CacheMessageVO WHERE threadVoId =" + threadId;
rawQuery = addMessageIdIfExist(messageId, rawQuery);
rawQuery = addFromTimeIfExist(fromTime, fromTimeNanos, rawQuery);
rawQuery = addToTimeIfExist(toTime, toTimeNanos, rawQuery);
rawQuery = addQueryIfExist(query, rawQuery);
rawQuery = addMessageTypeIfExist(messageType, rawQuery);
long contentCount = messageDao.getHistoryContentCount(new SimpleSQLiteQuery(rawQuery.replaceFirst("SELECT \\* ", "SELECT COUNT(ID) ")));
rawQuery = addOrderAndLimitAndOffset(offset, count, order, rawQuery);
SupportSQLiteQuery sqLiteQuery = new SimpleSQLiteQuery(rawQuery);
cacheMessageVOS = messageDao.getRawHistory(sqLiteQuery);
prepareMessageVOs(messageVOS, cacheMessageVOS);
List<Sending> sendingList = getAllSendingQueueByThreadId(threadId);
List<Uploading> uploadingList = getAllUploadingQueueByThreadId(threadId);
List<Failed> failedList = getAllWaitQueueCacheByThreadId(threadId);
ChatResponse<ResultHistory> chatResponse = new ChatResponse<>();
chatResponse.setCache(true);
ResultHistory resultHistory = new ResultHistory();
resultHistory.setHistory(messageVOS);
resultHistory.setNextOffset(history.getOffset() + messageVOS.size());
resultHistory.setContentCount(contentCount);
if (messageVOS.size() + history.getOffset() < contentCount) {
resultHistory.setHasNext(true);
} else {
resultHistory.setHasNext(false);
}
resultHistory.setHistory(messageVOS);
resultHistory.setSending(sendingList);
resultHistory.setUploadingQueue(uploadingList);
resultHistory.setFailed(failedList);
chatResponse.setErrorCode(0);
chatResponse.setHasError(false);
chatResponse.setErrorMessage("");
chatResponse.setResult(resultHistory);
chatResponse.setCache(true);
chatResponse.setSubjectId(threadId);
subscriber.onNext(chatResponse);
});
}
use of android.arch.persistence.db.SupportSQLiteQuery in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getCacheHistories.
public List<CacheMessageVO> getCacheHistories(@NonNull History history, long threadId) {
List<CacheMessageVO> cacheMessageVOS;
long fromTime = history.getFromTime();
long fromTimeNanos = history.getFromTimeNanos();
long toTime = history.getToTime();
long toTimeNanos = history.getToTimeNanos();
long messageId = history.getId();
long offset = history.getOffset();
long count = history.getCount();
String query = history.getQuery();
String order = history.getOrder();
offset = offset >= 0 ? offset : 0;
count = count > 0 ? count : 50;
if (Util.isNullOrEmpty(order)) {
order = "desc";
}
String rawQuery = "SELECT * FROM CacheMessageVO WHERE threadVoId =" + threadId;
rawQuery = addMessageIdIfExist(messageId, rawQuery);
rawQuery = addFromTimeIfExist(fromTime, fromTimeNanos, rawQuery);
rawQuery = addToTimeIfExist(toTime, toTimeNanos, rawQuery);
rawQuery = addQueryIfExist(query, rawQuery);
rawQuery = addOrderAndLimitAndOffset(offset, count, order, rawQuery);
SupportSQLiteQuery sqLiteQuery = new SimpleSQLiteQuery(rawQuery);
cacheMessageVOS = messageDao.getRawHistory(sqLiteQuery);
return cacheMessageVOS;
}
use of android.arch.persistence.db.SupportSQLiteQuery in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadIdsList.
public void getThreadIdsList(OnWorkDone listener) {
worker(() -> {
if (!canUseDatabase()) {
listener.onWorkDone(null);
return;
}
String rawQuery = "select id from ThreadVo";
SupportSQLiteQuery query = new SimpleSQLiteQuery(rawQuery);
List<Long> tvo = messageDao.getThreadIds(query);
listener.onWorkDone(tvo);
});
}
Aggregations