FileSaver: count how many files failed, Commands: Show how many failed
Tá an tiomantas seo le fáil i:
		@@ -51,9 +51,12 @@ int CommandAdd::handle(QStringList arguments)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -93,11 +93,14 @@ 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)
 | 
			
		||||
			{
 | 
			
		||||
				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;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -49,21 +49,21 @@ SaveFileResult FileSaver::updateFile(QString path)
 | 
			
		||||
	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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc,
 | 
			
		||||
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> hasError{false};
 | 
			
		||||
	std::atomic<int> errorsCount{0};
 | 
			
		||||
	QtConcurrent::blockingMap(paths,
 | 
			
		||||
							  [&](const QString &path)
 | 
			
		||||
							  {
 | 
			
		||||
@@ -78,7 +78,7 @@ bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFil
 | 
			
		||||
								  SaveFileResult result = saverFunc(path);
 | 
			
		||||
								  if(result == DBFAIL || result == PROCESSFAIL)
 | 
			
		||||
								  {
 | 
			
		||||
									  hasError = true;
 | 
			
		||||
									  errorsCount++;
 | 
			
		||||
									  Logger::error() << "Failed to process " << path << endl;
 | 
			
		||||
									  if(!keepGoing)
 | 
			
		||||
									  {
 | 
			
		||||
@@ -98,7 +98,7 @@ bool FileSaver::processFiles(const QVector<QString> paths, std::function<SaveFil
 | 
			
		||||
									  }
 | 
			
		||||
								  }
 | 
			
		||||
							  });
 | 
			
		||||
	return !hasError.load();
 | 
			
		||||
	return paths.size() - errorsCount.load();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SaveFileResult FileSaver::saveFile(const QFileInfo &fileInfo)
 | 
			
		||||
 
 | 
			
		||||
@@ -19,10 +19,10 @@ class FileSaver
 | 
			
		||||
  public:
 | 
			
		||||
	FileSaver(SqliteDbService &dbService);
 | 
			
		||||
	SaveFileResult saveFile(const QFileInfo &fileInfo);
 | 
			
		||||
	bool processFiles(const QVector<QString> paths, std::function<SaveFileResult(QString path)> saverFunc,
 | 
			
		||||
	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);
 | 
			
		||||
	bool updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
 | 
			
		||||
	int addFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
 | 
			
		||||
	int updateFiles(const QVector<QString> paths, bool keepGoing, bool verbose);
 | 
			
		||||
 | 
			
		||||
	;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Tagairt in Eagrán Nua
	
	Cuir bac ar úsáideoir