Skip to content
Snippets Groups Projects
Commit dbdde667 authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Don't try to load outputdata from non-existing file

parent ea52cacb
No related branches found
No related tags found
No related merge requests found
...@@ -18,14 +18,22 @@ ...@@ -18,14 +18,22 @@
#include "OutputDataWriteFactory.h" #include "OutputDataWriteFactory.h"
#include "SimulationResult.h" #include "SimulationResult.h"
#include <fstream>
#include <memory> #include <memory>
namespace {
bool FileExists(const std::string& filename);
}
OutputData<double>* IntensityDataIOFactory::readOutputData(const std::string& file_name) OutputData<double>* IntensityDataIOFactory::readOutputData(const std::string& file_name)
{ {
auto* reader = OutputDataReadFactory::getReader(file_name); if (!FileExists(file_name))
auto* result = reader->getOutputData(); return nullptr;
delete reader; std::unique_ptr<OutputDataReader> P_reader(OutputDataReadFactory::getReader(file_name));
return result; if (P_reader)
return P_reader->getOutputData();
return nullptr;
} }
IHistogram* IntensityDataIOFactory::readIntensityData(const std::string& file_name) IHistogram* IntensityDataIOFactory::readIntensityData(const std::string& file_name)
...@@ -55,3 +63,10 @@ void IntensityDataIOFactory::writeSimulationResult(const SimulationResult& resul ...@@ -55,3 +63,10 @@ void IntensityDataIOFactory::writeSimulationResult(const SimulationResult& resul
std::unique_ptr<OutputData<double>> P_data(result.data()); std::unique_ptr<OutputData<double>> P_data(result.data());
writeOutputData(*P_data, file_name); writeOutputData(*P_data, file_name);
} }
namespace {
bool FileExists(const std::string& filename) {
std::ifstream fs(filename);
return fs.is_open();
}
}
...@@ -106,7 +106,8 @@ void JobItemUtils::loadIntensityData(DataItem *intensityItem, const QString &pro ...@@ -106,7 +106,8 @@ void JobItemUtils::loadIntensityData(DataItem *intensityItem, const QString &pro
{ {
QString filename = intensityItem->fileName(projectDir); QString filename = intensityItem->fileName(projectDir);
auto data = IntensityDataIOFactory::readOutputData(filename.toStdString()); auto data = IntensityDataIOFactory::readOutputData(filename.toStdString());
intensityItem->setOutputData(data); if (data)
intensityItem->setOutputData(data);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment