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; }
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; }
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(); } } }
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; }
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; } }