FileSaver: count how many files failed, Commands: Show how many failed
This commit is contained in:
parent
ea8f701e8f
commit
3858dadc4a
@ -57,9 +57,11 @@ int CommandAdd::handle(QStringList arguments)
|
|||||||
}
|
}
|
||||||
|
|
||||||
FileSaver saver(*this->dbService);
|
FileSaver saver(*this->dbService);
|
||||||
if(!saver.addFiles(files.toVector(), keepGoing, verbose))
|
int numFilesCount = files.size();
|
||||||
|
int processedFilesCount = saver.addFiles(files.toVector(), keepGoing, verbose);
|
||||||
|
if(processedFilesCount != numFilesCount )
|
||||||
{
|
{
|
||||||
Logger::error() << "Errors occured while trying to add files to the database" << endl;
|
Logger::error() << "Errors occured while trying to add files to the database. Processed " << processedFilesCount << "out of" << numFilesCount << "files" << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,11 +97,13 @@ int CommandUpdate::handle(QStringList arguments)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(!saver.updateFiles(filePathsToUpdate, keepGoing, verbose))
|
int updatedFilesCount = saver.updateFiles(filePathsToUpdate, keepGoing, verbose);
|
||||||
|
int shouldHaveUpdatedCount = filePathsToUpdate.size();
|
||||||
|
if(updatedFilesCount != shouldHaveUpdatedCount)
|
||||||
{
|
{
|
||||||
if(!keepGoing)
|
if(!keepGoing)
|
||||||
{
|
{
|
||||||
Logger::error() << "Failed to update all files selected for updating" << endl;
|
Logger::error() << "Failed to update all files selected for updating. Updated" << updatedFilesCount << "out of" << shouldHaveUpdatedCount << "selected for upating" << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,20 +59,20 @@ SaveFileResult FileSaver::updateFile(QString path)
|
|||||||
return saveFile(info);
|
return saveFile(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileSaver::addFiles(const QVector<QString> paths, bool keepGoing, bool verbose)
|
int FileSaver::addFiles(const QVector<QString> paths, bool keepGoing, bool verbose)
|
||||||
{
|
{
|
||||||
return processFiles(paths, std::bind(&FileSaver::addFile, this, std::placeholders::_1), keepGoing, verbose);
|
return processFiles(paths, std::bind(&FileSaver::addFile, this, std::placeholders::_1), keepGoing, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileSaver::updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose)
|
int FileSaver::updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose)
|
||||||
{
|
{
|
||||||
return processFiles(paths, std::bind(&FileSaver::updateFile, this, std::placeholders::_1), keepGoing, verbose);
|
return processFiles(paths, std::bind(&FileSaver::updateFile, this, std::placeholders::_1), keepGoing, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc, bool keepGoing, bool verbose)
|
int FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc, bool keepGoing, bool verbose)
|
||||||
{
|
{
|
||||||
std::atomic<bool> terminate { false };
|
std::atomic<bool> terminate { false };
|
||||||
std::atomic<bool> hasError { false };
|
std::atomic<int> errorsCount { 0 };
|
||||||
QtConcurrent::blockingMap(paths, [&](const QString &path) {
|
QtConcurrent::blockingMap(paths, [&](const QString &path) {
|
||||||
if(terminate.load())
|
if(terminate.load())
|
||||||
{
|
{
|
||||||
@ -85,12 +85,11 @@ bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFil
|
|||||||
SaveFileResult result = saverFunc(path);
|
SaveFileResult result = saverFunc(path);
|
||||||
if(result == DBFAIL || result == PROCESSFAIL)
|
if(result == DBFAIL || result == PROCESSFAIL)
|
||||||
{
|
{
|
||||||
hasError = true;
|
errorsCount++;
|
||||||
Logger::error() << "Failed to process " << path << endl;
|
Logger::error() << "Failed to process " << path << endl;
|
||||||
if(!keepGoing)
|
if(!keepGoing)
|
||||||
{
|
{
|
||||||
terminate = true;
|
terminate = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(verbose)
|
if(verbose)
|
||||||
@ -105,7 +104,7 @@ bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return ! hasError.load();
|
return paths.size() - errorsCount.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,9 +18,9 @@ protected:
|
|||||||
public:
|
public:
|
||||||
FileSaver(SqliteDbService &dbService);
|
FileSaver(SqliteDbService &dbService);
|
||||||
SaveFileResult saveFile(const QFileInfo &fileInfo);
|
SaveFileResult saveFile(const QFileInfo &fileInfo);
|
||||||
bool processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc, bool keepGoing, bool verbose);
|
int processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc, bool keepGoing, bool verbose);
|
||||||
bool addFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
|
int addFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
|
||||||
bool updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
|
int updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
|
||||||
|
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user