1/*
2 This file is part of the KDE Baloo Project
3 SPDX-FileCopyrightText: 2015 Pinak Ahuja <pinak.ahuja@gmail.com>
4
5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
6*/
7
8#include "indexer.h"
9#include "basicindexingjob.h"
10#include "database.h"
11#include "./extractor/result.h"
12
13#include <KFileMetaData/Extractor>
14#include <KFileMetaData/PropertyInfo>
15
16using namespace Baloo;
17
18Indexer::Indexer(const QString& url, Transaction* tr)
19 : m_url(url)
20 , m_tr(tr)
21{
22}
23
24void Indexer::index()
25{
26 const QString mimetype = m_mimeDB.mimeTypeForFile(fileName: m_url).name();
27 BasicIndexingJob basicIJ(m_url, mimetype, BasicIndexingJob::NoLevel);
28 basicIJ.index();
29 Baloo::Document doc = basicIJ.document();
30
31 Result result(m_url, mimetype, KFileMetaData::ExtractionResult::ExtractMetaData | KFileMetaData::ExtractionResult::ExtractPlainText);
32 result.setDocument(doc);
33
34 const QList<KFileMetaData::Extractor*> exList = m_extractorCollection.fetchExtractors(mimetype);
35
36 for (KFileMetaData::Extractor* ex : exList) {
37 ex->extract(result: &result);
38 }
39
40 result.finish();
41 if (m_tr->hasDocument(id: doc.id())) {
42 m_tr->replaceDocument(doc, operations: Everything);
43 } else {
44 m_tr->addDocument(doc: result.document());
45 }
46}
47

source code of baloo/src/tools/balooctl/indexer.cpp