1 /*
2    SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "storeresourcejob.h"
8 #include "pimdataexportcore_debug.h"
9 #include "resourceconverterimpl.h"
10 #include "utils.h"
11 #include <Akonadi/ServerManager>
12 #include <KLocalizedString>
13 #include <KZip>
14 
15 #include <QFileInfo>
16 
StoreResourceJob(QObject * parent)17 StoreResourceJob::StoreResourceJob(QObject *parent)
18     : QObject(parent)
19 {
20 }
21 
~StoreResourceJob()22 StoreResourceJob::~StoreResourceJob()
23 {
24 }
25 
setArchivePath(const QString & archivePath)26 void StoreResourceJob::setArchivePath(const QString &archivePath)
27 {
28     mArchivePath = archivePath;
29 }
30 
setIdentifier(const QString & identifier)31 void StoreResourceJob::setIdentifier(const QString &identifier)
32 {
33     mIdentifier = identifier;
34 }
35 
setZip(KZip * zip)36 void StoreResourceJob::setZip(KZip *zip)
37 {
38     mZip = zip;
39 }
40 
start()41 void StoreResourceJob::start()
42 {
43     if (!mZip) {
44         qCWarning(PIMDATAEXPORTERCORE_LOG) << " mZip null it's a bug";
45         deleteLater();
46         return;
47     }
48 
49     ResourceConverterImpl converter;
50     const QString errorStr = converter.storeResources(mZip, mIdentifier, mArchivePath);
51     if (!errorStr.isEmpty()) {
52         Q_EMIT error(errorStr);
53     }
54     const QString url = Akonadi::ServerManager::agentConfigFilePath(mIdentifier);
55     if (!url.isEmpty()) {
56         const QFileInfo fi(url);
57         const QString filename = fi.fileName();
58         const bool fileAdded = mZip->addLocalFile(url, mArchivePath + filename);
59         if (fileAdded) {
60             Q_EMIT info(i18n("\"%1\" was backed up.", filename));
61         } else {
62             Q_EMIT error(i18n("\"%1\" file cannot be added to backup file.", filename));
63         }
64     }
65     deleteLater();
66 }
67