File indexing completed on 2024-05-12 05:25:34

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "pimdataimportdatainfofile.h"
0008 #include "pimdataexportcore_debug.h"
0009 #include "utils.h"
0010 #include <KZip>
0011 #include <QTemporaryDir>
0012 
0013 PimDataImportDataInfoFile::PimDataImportDataInfoFile(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 PimDataImportDataInfoFile::~PimDataImportDataInfoFile()
0019 {
0020     delete mTempDir;
0021 }
0022 
0023 void PimDataImportDataInfoFile::setCurrentFileName(const QString &filename)
0024 {
0025     mFilename = filename;
0026 }
0027 
0028 QString PimDataImportDataInfoFile::importDataInfoPath()
0029 {
0030     QString temporaryFilePath;
0031     if (mFilename.isEmpty()) {
0032         return temporaryFilePath;
0033     }
0034     mTempDir = new QTemporaryDir;
0035     QString errorMsg;
0036     KZip *archive = Utils::openZip(mFilename, errorMsg);
0037     if (!archive) {
0038         qCWarning(PIMDATAEXPORTERCORE_LOG) << "unable to open zip file " << errorMsg;
0039     } else {
0040         const KArchiveEntry *informationFile = archive->directory()->entry(Utils::infoPath() + Utils::exportDataTypeFileName());
0041         if (informationFile && informationFile->isFile()) {
0042             const auto file = static_cast<const KArchiveFile *>(informationFile);
0043             if (file->size() == 0) {
0044                 qCWarning(PIMDATAEXPORTERCORE_LOG) << "Empty exporteddata information file, skipping it";
0045             } else {
0046                 temporaryFilePath = mTempDir->path() + QLatin1Char('/') + Utils::exportDataTypeFileName();
0047                 if (file->copyTo(mTempDir->path())) {
0048                     temporaryFilePath = mTempDir->path() + QLatin1Char('/') + Utils::exportDataTypeFileName();
0049                 } else {
0050                     qCWarning(PIMDATAEXPORTERCORE_LOG) << "Impossible to copy to temporary file" << temporaryFilePath;
0051                 }
0052             }
0053         } else {
0054             qCWarning(PIMDATAEXPORTERCORE_LOG) << "Old archive without exporteddata information";
0055         }
0056     }
0057     delete archive;
0058     return temporaryFilePath;
0059 }
0060 
0061 #include "moc_pimdataimportdatainfofile.cpp"