#1642 Batch : Replace folder for input files

This commit is contained in:
Bjørnar Grip Fjær
2017-06-28 20:10:06 +02:00
parent 70d3c501a4
commit 6dac618af0
5 changed files with 190 additions and 39 deletions

View File

@@ -42,6 +42,7 @@
#include "cafProgressInfo.h"
#include <QFileInfo>
#include <QDir>
CAF_PDM_SOURCE_INIT(RimEclipseInputCase, "RimInputReservoir");
//--------------------------------------------------------------------------------------------------
@@ -53,12 +54,20 @@ RimEclipseInputCase::RimEclipseInputCase()
CAF_PDM_InitObject("RimInputCase", ":/EclipseInput48x48.png", "", "");
CAF_PDM_InitField(&m_gridFileName, "GridFileName", QString(), "Case File Name", "", "" ,"");
m_gridFileName.uiCapability()->setUiReadOnly(true);
CAF_PDM_InitFieldNoDefault(&m_additionalFileNames, "AdditionalFileNames", "Additional files", "", "" ,"");
m_additionalFileNames.uiCapability()->setUiReadOnly(true);
CAF_PDM_InitFieldNoDefault(&m_inputPropertyCollection, "InputPropertyCollection", "", "", "", "");
m_inputPropertyCollection = new RimEclipseInputPropertyCollection;
m_inputPropertyCollection->parentField()->uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_additionalFiles, "AdditionalFileNamesProxy", "Additional files", "", "", "");
m_additionalFiles.registerGetMethod(this, &RimEclipseInputCase::additionalFiles);
m_additionalFiles.uiCapability()->setUiReadOnly(true);
m_additionalFiles.xmlCapability()->setIOWritable(false);
CAF_PDM_InitFieldNoDefault(&m_additionalFilenames_OBSOLETE, "AdditionalFileNames", "Additional files", "", "" ,"");
m_additionalFilenames_OBSOLETE.uiCapability()->setUiReadOnly(true);
m_additionalFilenames_OBSOLETE.uiCapability()->setUiHidden(true);
m_additionalFilenames_OBSOLETE.xmlCapability()->setIOWritable(false);
}
@@ -104,24 +113,24 @@ void RimEclipseInputCase::openDataFileSet(const QStringList& fileNames)
{
RiaPreferences* prefs = RiaApplication::instance()->preferences();
for (int i = 0; i < fileNames.size(); i++)
{
if (RifEclipseInputFileTools::openGridFile(fileNames[i], this->eclipseCaseData(), prefs->readerSettings->importFaults()))
{
m_gridFileName = fileNames[i];
for (int i = 0; i < fileNames.size(); i++)
{
if (RifEclipseInputFileTools::openGridFile(fileNames[i], this->eclipseCaseData(), prefs->readerSettings->importFaults()))
{
m_gridFileName = fileNames[i];
QFileInfo gridFileName(fileNames[i]);
QString caseName = gridFileName.completeBaseName();
QFileInfo gridFileName(fileNames[i]);
QString caseName = gridFileName.completeBaseName();
this->caseUserDescription = caseName;
this->caseUserDescription = caseName;
this->eclipseCaseData()->mainGrid()->setFlipAxis(flipXAxis, flipYAxis);
this->eclipseCaseData()->mainGrid()->setFlipAxis(flipXAxis, flipYAxis);
computeCachedData();
computeCachedData();
break;
}
}
break;
}
}
}
if (this->eclipseCaseData()->mainGrid()->gridPointDimensions() == cvf::Vec3st(0,0,0))
@@ -129,29 +138,26 @@ void RimEclipseInputCase::openDataFileSet(const QStringList& fileNames)
return ; // No grid present
}
// Then read the properties possibly in the grid file
QStringList filesToRead;
for (int i = 0; i < fileNames.size(); i++)
std::vector<QString> filesToRead;
for (const QString& filename : fileNames)
{
size_t j;
bool exist = false;
for (j = 0; j < m_additionalFileNames().size(); j++)
bool exists = false;
for (const QString& currentFileName : additionalFiles())
{
if (m_additionalFileNames()[j] == fileNames[i])
if (filename == currentFileName)
{
exist = true;
exists = true;
break;
}
}
if (!exist)
if (!exists)
{
filesToRead.push_back(fileNames[i]);
filesToRead.push_back(filename);
}
}
for (int i = 0; i < filesToRead.size(); i++)
for (const QString& propertyFileName : filesToRead)
{
QString propertyFileName = filesToRead[i];
std::map<QString, QString> readProperties = RifEclipseInputFileTools::readProperties(propertyFileName, this->eclipseCaseData());
std::map<QString, QString>::iterator it;
@@ -164,11 +170,6 @@ void RimEclipseInputCase::openDataFileSet(const QStringList& fileNames)
inputProperty->resolvedState = RimEclipseInputProperty::RESOLVED;
m_inputPropertyCollection->inputProperties.push_back(inputProperty);
}
if (propertyFileName != m_gridFileName)
{
m_additionalFileNames.v().push_back(propertyFileName);
}
}
}
@@ -251,7 +252,11 @@ void RimEclipseInputCase::loadAndSyncronizeInputProperties()
// Then read the properties from all the files referenced by the InputReservoir
std::vector<QString> filenames = m_additionalFileNames;
std::vector<QString> filenames;
for (const RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties())
{
filenames.push_back(inputProperty->fileName);
}
filenames.push_back(m_gridFileName);
size_t inputPropCount = this->m_inputPropertyCollection()->inputProperties.size();
@@ -392,7 +397,7 @@ void RimEclipseInputCase::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
uiOrdering.add(&caseUserDescription);
uiOrdering.add(&caseId);
uiOrdering.add(&m_gridFileName);
uiOrdering.add(&m_additionalFileNames);
uiOrdering.add(&m_additionalFiles);
auto group = uiOrdering.addNewGroup("Case Options");
group->add(&activeFormationNames);
@@ -422,8 +427,37 @@ void RimEclipseInputCase::updateFilePathsFromProjectPath(const QString& newProje
m_gridFileName = RimTools::relocateFile(m_gridFileName(), newProjectPath, oldProjectPath, &foundFile, &searchedPaths);
for (size_t i = 0; i < m_additionalFileNames().size(); i++)
for (RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties())
{
m_additionalFileNames.v()[i] = RimTools::relocateFile(m_additionalFileNames()[i], newProjectPath, oldProjectPath, &foundFile, &searchedPaths);
inputProperty->fileName = RimTools::relocateFile(inputProperty->fileName, newProjectPath, oldProjectPath, &foundFile, &searchedPaths);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseInputCase::updateAdditionalFileFolder(const QString& newFolder)
{
QDir newDir(newFolder);
for (RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties())
{
if (inputProperty->fileName == m_gridFileName) continue;
QFileInfo oldFilePath(inputProperty->fileName);
QFileInfo newFilePath(newDir, oldFilePath.fileName());
inputProperty->fileName = newFilePath.absoluteFilePath();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimEclipseInputCase::additionalFiles() const
{
std::vector<QString> additionalFiles;
for (const RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties())
{
if (inputProperty->fileName == m_gridFileName) continue;
additionalFiles.push_back(inputProperty->fileName);
}
return additionalFiles;
}