File indexing completed on 2024-04-28 03:51:53

0001 /*
0002     This file is part of the KDE Baloo Project
0003     SPDX-FileCopyrightText: 2015 Pinak Ahuja <pinak.ahuja@gmail.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #include "indexer.h"
0009 #include "basicindexingjob.h"
0010 #include "database.h"
0011 #include "./extractor/result.h"
0012 
0013 #include <KFileMetaData/Extractor>
0014 #include <KFileMetaData/PropertyInfo>
0015 
0016 using namespace Baloo;
0017 
0018 Indexer::Indexer(const QString& url, Transaction* tr)
0019     : m_url(url)
0020     , m_tr(tr)
0021 {
0022 }
0023 
0024 void Indexer::index()
0025 {
0026     const QString mimetype = m_mimeDB.mimeTypeForFile(m_url).name();
0027     BasicIndexingJob basicIJ(m_url, mimetype, BasicIndexingJob::NoLevel);
0028     basicIJ.index();
0029     Baloo::Document doc = basicIJ.document();
0030 
0031     Result result(m_url, mimetype, KFileMetaData::ExtractionResult::ExtractMetaData | KFileMetaData::ExtractionResult::ExtractPlainText);
0032     result.setDocument(doc);
0033 
0034     const QList<KFileMetaData::Extractor*> exList = m_extractorCollection.fetchExtractors(mimetype);
0035 
0036     for (KFileMetaData::Extractor* ex : exList) {
0037         ex->extract(&result);
0038     }
0039 
0040     result.finish();
0041     if (m_tr->hasDocument(doc.id())) {
0042         m_tr->replaceDocument(doc, Everything);
0043     } else {
0044         m_tr->addDocument(result.document());
0045     }
0046 }