Search in sources :

Example 1 with SupportSQLiteQuery

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);
    });
}
Also used : Sending(com.fanap.podchat.cachemodel.queue.Sending) SupportSQLiteQuery(android.arch.persistence.db.SupportSQLiteQuery) Failed(com.fanap.podchat.cachemodel.queue.Failed) ArrayList(java.util.ArrayList) Uploading(com.fanap.podchat.cachemodel.queue.Uploading) ResultHistory(com.fanap.podchat.model.ResultHistory) SimpleSQLiteQuery(android.arch.persistence.db.SimpleSQLiteQuery) ChatResponse(com.fanap.podchat.model.ChatResponse) CacheMessageVO(com.fanap.podchat.cachemodel.CacheMessageVO) PinMessageVO(com.fanap.podchat.mainmodel.PinMessageVO) MessageVO(com.fanap.podchat.mainmodel.MessageVO) GapMessageVO(com.fanap.podchat.cachemodel.GapMessageVO) CacheMessageVO(com.fanap.podchat.cachemodel.CacheMessageVO)

Example 2 with SupportSQLiteQuery

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);
}
Also used : SupportSQLiteQuery(android.arch.persistence.db.SupportSQLiteQuery) SimpleSQLiteQuery(android.arch.persistence.db.SimpleSQLiteQuery)

Example 3 with SupportSQLiteQuery

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);
    });
}
Also used : Sending(com.fanap.podchat.cachemodel.queue.Sending) SupportSQLiteQuery(android.arch.persistence.db.SupportSQLiteQuery) Failed(com.fanap.podchat.cachemodel.queue.Failed) ArrayList(java.util.ArrayList) Uploading(com.fanap.podchat.cachemodel.queue.Uploading) ResultHistory(com.fanap.podchat.model.ResultHistory) SimpleSQLiteQuery(android.arch.persistence.db.SimpleSQLiteQuery) ChatResponse(com.fanap.podchat.model.ChatResponse) CacheMessageVO(com.fanap.podchat.cachemodel.CacheMessageVO) PinMessageVO(com.fanap.podchat.mainmodel.PinMessageVO) MessageVO(com.fanap.podchat.mainmodel.MessageVO) GapMessageVO(com.fanap.podchat.cachemodel.GapMessageVO) CacheMessageVO(com.fanap.podchat.cachemodel.CacheMessageVO)

Example 4 with SupportSQLiteQuery

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;
}
Also used : SupportSQLiteQuery(android.arch.persistence.db.SupportSQLiteQuery) SimpleSQLiteQuery(android.arch.persistence.db.SimpleSQLiteQuery) CacheMessageVO(com.fanap.podchat.cachemodel.CacheMessageVO)

Example 5 with SupportSQLiteQuery

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);
    });
}
Also used : SupportSQLiteQuery(android.arch.persistence.db.SupportSQLiteQuery) SimpleSQLiteQuery(android.arch.persistence.db.SimpleSQLiteQuery)

Aggregations

SimpleSQLiteQuery (android.arch.persistence.db.SimpleSQLiteQuery)9 SupportSQLiteQuery (android.arch.persistence.db.SupportSQLiteQuery)9 CacheMessageVO (com.fanap.podchat.cachemodel.CacheMessageVO)7 GapMessageVO (com.fanap.podchat.cachemodel.GapMessageVO)6 MessageVO (com.fanap.podchat.mainmodel.MessageVO)6 PinMessageVO (com.fanap.podchat.mainmodel.PinMessageVO)6 ArrayList (java.util.ArrayList)6 Failed (com.fanap.podchat.cachemodel.queue.Failed)3 Sending (com.fanap.podchat.cachemodel.queue.Sending)3 Uploading (com.fanap.podchat.cachemodel.queue.Uploading)3 ChatResponse (com.fanap.podchat.model.ChatResponse)3 ResultHistory (com.fanap.podchat.model.ResultHistory)3 NonNull (android.support.annotation.NonNull)1