Esempio n. 1
0
bool CWizSearchIndexer::updateDocuments(const CWizDocumentDataArray& arrayDocuments)
{
    Q_ASSERT(!arrayDocuments.empty());

    void* pHandle = NULL;
    bool ret = WizFTSBeginUpdateDocument(m_strIndexPath.toStdWString().c_str(), &pHandle);
    if (!ret) {
        TOLOG("begin update failed while update FTS index");
        return false;
    }

    int nErrors = 0;
    for (int i = 0; i < arrayDocuments.size(); i++) {
        WIZDOCUMENTDATAEX doc = arrayDocuments.at(i);
        if (!_updateDocumentImpl(pHandle, doc))
            nErrors++;
    }

    ret = WizFTSEndUpdateDocument(pHandle);
    if (!ret) {
        TOLOG("end update failed while update FTS index");
        return false;
    }

    if (nErrors >= 5) {
        return false;
    }

    return true;
}
Esempio n. 2
0
bool CWizIndexBase::DocumentFromGUID(const CString& strDocumentGUID, WIZDOCUMENTDATA& data)
{
    if (!strDocumentGUID || !*strDocumentGUID) {
        TOLOG(_T("DocumentGUID is empty"));
        return false;
    }

    CString strWhere;
    strWhere.Format(_T("DOCUMENT_GUID=%s"),
        STR2SQL(strDocumentGUID).utf16()
        );

    CString strSQL = FormatQuerySQL(TABLE_NAME_WIZ_DOCUMENT, FIELD_LIST_WIZ_DOCUMENT, strWhere);

    CWizDocumentDataArray arrayDocument;
    if (!SQLToDocumentDataArray(strSQL, arrayDocument)) {
        TOLOG(_T("Failed to get document by guid"));
        return false;
    }

    if (arrayDocument.empty()) {
        //TOLOG(_T("Failed to get document by guid, result is empty"));
        return false;
    }

    data = arrayDocument[0];
    return true;
}
Esempio n. 3
0
void MainWindow::on_category_itemSelectionChanged()
{
    CWizDocumentDataArray arrayDocument;

    CWizCategoryBaseView* category = qobject_cast<CWizCategoryBaseView *>(sender());
    if (!category)
        return;

    CWizCategoryViewMessageItem* pItem = category->currentCategoryItem<CWizCategoryViewMessageItem>();
    if (pItem) {
        if (!m_msgList->isVisible())
        {
            m_msgList->show();
            m_noteList->hide();
        }

        CWizMessageDataArray arrayMsg;
        pItem->getMessages(m_dbMgr.db(), arrayMsg);
        m_msgList->setMessages(arrayMsg);
        return;

    // FIXME: use id instead of name.
    //QString strName = category->currentItem()->text(0);
    //if (strName == CATEGORY_MESSAGES_ALL ||
    //        strName == CATEGORY_MESSAGES_SEND_TO_ME ||
    //        strName == CATEGORY_MESSAGES_MODIFY ||
    //        strName == CATEGORY_MESSAGES_COMMENTS ||
    //        strName == CATEGORY_MESSAGES_SEND_FROM_ME) {
    //    m_msgList->show();
    //    m_noteList->hide();

    //    CWizMessageDataArray arrayMsg;
    //    m_dbMgr.db().getLastestMessages(arrayMsg);
    //    m_msgList->setMessages(arrayMsg);

    //    return;
    } else {
        if (!m_noteList->isVisible())
        {
            m_noteList->show();
            m_msgList->hide();
        }
        QString kbGUID = category->selectedItemKbGUID();
        if (!kbGUID.isEmpty()) {
            resetPermission(kbGUID, "");
        }

        category->getDocuments(arrayDocument);
        m_documents->setDocuments(arrayDocument);

        if (arrayDocument.empty()) {
            on_documents_itemSelectionChanged();
        }
    }
}
Esempio n. 4
0
bool CWizSearchIndexer::deleteDocuments(const CWizDocumentDataArray& arrayDocuments)
{
    Q_ASSERT(!arrayDocuments.empty());

    bool ret = true;
    for (int i = 0; i < arrayDocuments.size(); i++) {
        WIZDOCUMENTDATAEX doc = arrayDocuments.at(i);
        int ret = WizFTSDeleteDocument(m_strIndexPath.toStdWString().c_str(), doc.strGUID.toStdWString().c_str());
        if (!ret) {
            TOLOG("delete FTS index failed: " + doc.strTitle);
            ret = false;
        }
    }

    return ret;
}
Esempio n. 5
0
bool CWizSearchIndexer::buildFTSIndexByDatabase(CWizDatabase& db)
{
    CWizDocumentDataArray arrayDocuments;

    if (!db.getAllDocumentsNeedToBeSearchIndexed(arrayDocuments))
        return false;

    if (arrayDocuments.empty()) {
        return true;
    }

    bool ret = updateDocuments(arrayDocuments);

    if (ret) {
        db.setDocumentFTSEnabled(true);
        return true;
    } else {
        db.setDocumentFTSEnabled(false);
        return false;
    }
}