mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Introduced caseId to RimCase. Project keeps track of largest used ID, and is responsible for assigning ID to cases.
p4#: 21576
This commit is contained in:
@@ -563,6 +563,8 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
|
|||||||
bool RiaApplication::openInputEclipseCase(const QString& caseName, const QStringList& caseFileNames)
|
bool RiaApplication::openInputEclipseCase(const QString& caseName, const QStringList& caseFileNames)
|
||||||
{
|
{
|
||||||
RimInputCase* rimInputReservoir = new RimInputCase();
|
RimInputCase* rimInputReservoir = new RimInputCase();
|
||||||
|
m_project->assignCaseIdToCase(rimInputReservoir);
|
||||||
|
|
||||||
rimInputReservoir->caseUserDescription = caseName;
|
rimInputReservoir->caseUserDescription = caseName;
|
||||||
rimInputReservoir->openDataFileSet(caseFileNames);
|
rimInputReservoir->openDataFileSet(caseFileNames);
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ CAF_PDM_SOURCE_INIT(RimCase, "RimReservoir");
|
|||||||
RimCase::RimCase()
|
RimCase::RimCase()
|
||||||
{
|
{
|
||||||
CAF_PDM_InitField(&caseUserDescription, "CaseUserDescription", QString(), "Case name", "", "" ,"");
|
CAF_PDM_InitField(&caseUserDescription, "CaseUserDescription", QString(), "Case name", "", "" ,"");
|
||||||
|
|
||||||
|
CAF_PDM_InitField(&caseId, "CaseId", -1, "Case ID", "", "" ,"");
|
||||||
|
caseId.setUiReadOnly(true);
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&reservoirViews, "ReservoirViews", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&reservoirViews, "ReservoirViews", "", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_matrixModelResults, "MatrixModelResults", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_matrixModelResults, "MatrixModelResults", "", "", "", "");
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ public:
|
|||||||
|
|
||||||
// Fields:
|
// Fields:
|
||||||
caf::PdmField<QString> caseUserDescription;
|
caf::PdmField<QString> caseUserDescription;
|
||||||
|
caf::PdmField<int> caseId;
|
||||||
caf::PdmField<bool> releaseResultMemory;
|
caf::PdmField<bool> releaseResultMemory;
|
||||||
caf::PdmPointersField<RimReservoirView*> reservoirViews;
|
caf::PdmPointersField<RimReservoirView*> reservoirViews;
|
||||||
caf::PdmField<bool> flipXAxis;
|
caf::PdmField<bool> flipXAxis;
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
#include "RimWellCollection.h"
|
#include "RimWellCollection.h"
|
||||||
#include "RimCaseCollection.h"
|
#include "RimCaseCollection.h"
|
||||||
#include "RimResultSlot.h"
|
#include "RimResultSlot.h"
|
||||||
|
#include "RimStatisticsCase.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimProject, "ResInsightProject");
|
CAF_PDM_SOURCE_INIT(RimProject, "ResInsightProject");
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -54,6 +55,9 @@ RimProject::RimProject(void)
|
|||||||
CAF_PDM_InitFieldNoDefault(&m_projectFileVersionString, "ProjectFileVersionString", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_projectFileVersionString, "ProjectFileVersionString", "", "", "", "");
|
||||||
m_projectFileVersionString.setUiHidden(true);
|
m_projectFileVersionString.setUiHidden(true);
|
||||||
|
|
||||||
|
CAF_PDM_InitField(&nextValidCaseId, "NextValidCaseId", 0, "Next Valid Case ID", "", "" ,"");
|
||||||
|
nextValidCaseId.setUiHidden(true);
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&reservoirs, "Reservoirs", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&reservoirs, "Reservoirs", "", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&caseGroups, "CaseGroups", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&caseGroups, "CaseGroups", "", "", "", "");
|
||||||
|
|
||||||
@@ -96,6 +100,8 @@ void RimProject::close()
|
|||||||
caseGroups.deleteAllChildObjects();
|
caseGroups.deleteAllChildObjects();
|
||||||
|
|
||||||
fileName = "";
|
fileName = "";
|
||||||
|
|
||||||
|
nextValidCaseId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -110,6 +116,35 @@ void RimProject::initAfterRead()
|
|||||||
QString scriptDirectories = app->scriptDirectories();
|
QString scriptDirectories = app->scriptDirectories();
|
||||||
|
|
||||||
this->setScriptDirectories(scriptDirectories);
|
this->setScriptDirectories(scriptDirectories);
|
||||||
|
|
||||||
|
// Find largest used caseId read from file
|
||||||
|
int largestCaseId = -1;
|
||||||
|
|
||||||
|
std::vector<RimCase*> cases;
|
||||||
|
allCases(cases);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < cases.size(); i++)
|
||||||
|
{
|
||||||
|
if (cases[i]->caseId > largestCaseId)
|
||||||
|
{
|
||||||
|
largestCaseId = cases[i]->caseId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (largestCaseId > nextValidCaseId)
|
||||||
|
{
|
||||||
|
nextValidCaseId = largestCaseId + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign case Id to cases with an invalid case Id
|
||||||
|
for (size_t i = 0; i < cases.size(); i++)
|
||||||
|
{
|
||||||
|
if (cases[i]->caseId < 0)
|
||||||
|
{
|
||||||
|
assignCaseIdToCase(cases[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -167,7 +202,9 @@ RimIdenticalGridCaseGroup* RimProject::createIdenticalCaseGroupFromMainCase(RimC
|
|||||||
CVF_ASSERT(equalGrid);
|
CVF_ASSERT(equalGrid);
|
||||||
|
|
||||||
RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup;
|
RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup;
|
||||||
group->createAndAppendStatisticsCase();
|
RimCase* createdCase = group->createAndAppendStatisticsCase();
|
||||||
|
assignCaseIdToCase(createdCase);
|
||||||
|
|
||||||
group->addCase(mainCase);
|
group->addCase(mainCase);
|
||||||
caseGroups().push_back(group);
|
caseGroups().push_back(group);
|
||||||
|
|
||||||
@@ -288,29 +325,57 @@ void RimProject::setProjectFileNameAndUpdateDependencies(const QString& fileName
|
|||||||
// Replace with the new actual filename
|
// Replace with the new actual filename
|
||||||
this->fileName = fileName;
|
this->fileName = fileName;
|
||||||
|
|
||||||
// Loop over all reservoirs and update file path
|
|
||||||
|
|
||||||
QFileInfo fileInfo(fileName);
|
QFileInfo fileInfo(fileName);
|
||||||
QString newProjectPath = fileInfo.path();
|
QString newProjectPath = fileInfo.path();
|
||||||
|
|
||||||
QFileInfo fileInfoOld(oldProjectFileName);
|
QFileInfo fileInfoOld(oldProjectFileName);
|
||||||
QString oldProjectPath = fileInfoOld.path();
|
QString oldProjectPath = fileInfoOld.path();
|
||||||
|
|
||||||
|
// Loop over all reservoirs and update file path
|
||||||
|
|
||||||
for (size_t i = 0; i < reservoirs.size(); i++)
|
std::vector<RimCase*> cases;
|
||||||
|
allCases(cases);
|
||||||
|
for (size_t i = 0; i < cases.size(); i++)
|
||||||
{
|
{
|
||||||
reservoirs[i]->updateFilePathsFromProjectPath(newProjectPath, oldProjectPath);
|
cases[i]->updateFilePathsFromProjectPath(newProjectPath, oldProjectPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Case groups : Loop over all reservoirs in and update file path
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimProject::assignCaseIdToCase(RimCase* reservoirCase)
|
||||||
|
{
|
||||||
|
if (reservoirCase)
|
||||||
|
{
|
||||||
|
reservoirCase->caseId = nextValidCaseId;
|
||||||
|
|
||||||
|
nextValidCaseId = nextValidCaseId + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimProject::allCases(std::vector<RimCase*>& cases)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < reservoirs.size(); i++)
|
||||||
|
{
|
||||||
|
cases.push_back(reservoirs[i]);
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < caseGroups.size(); i++)
|
for (size_t i = 0; i < caseGroups.size(); i++)
|
||||||
{
|
{
|
||||||
RimIdenticalGridCaseGroup* cg = caseGroups()[i];
|
RimIdenticalGridCaseGroup* cg = caseGroups()[i];
|
||||||
|
|
||||||
for (size_t j = 0; j < cg->caseCollection()->reservoirs().size(); j++)
|
for (size_t i = 0; i < cg->statisticsCaseCollection()->reservoirs.size(); i++)
|
||||||
{
|
{
|
||||||
cg->caseCollection()->reservoirs()[j]->updateFilePathsFromProjectPath(newProjectPath, oldProjectPath);
|
cases.push_back(cg->statisticsCaseCollection()->reservoirs[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < cg->caseCollection()->reservoirs.size(); i++)
|
||||||
|
{
|
||||||
|
cases.push_back(cg->caseCollection()->reservoirs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,31 +38,33 @@ class RimProject : public caf::PdmDocument
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
RimProject(void);
|
||||||
|
virtual ~RimProject(void);
|
||||||
|
|
||||||
caf::PdmPointersField<RimCase*> reservoirs;
|
caf::PdmPointersField<RimCase*> reservoirs;
|
||||||
caf::PdmPointersField<RimIdenticalGridCaseGroup*> caseGroups;
|
caf::PdmPointersField<RimIdenticalGridCaseGroup*> caseGroups;
|
||||||
caf::PdmField<RimScriptCollection*> scriptCollection;
|
caf::PdmField<RimScriptCollection*> scriptCollection;
|
||||||
caf::PdmField<QString> treeViewState;
|
caf::PdmField<QString> treeViewState;
|
||||||
caf::PdmField<QString> currentModelIndexPath;
|
caf::PdmField<QString> currentModelIndexPath;
|
||||||
|
caf::PdmField<int> nextValidCaseId; // Unique case ID within a project, used to identify a case from Octave scripts
|
||||||
|
|
||||||
void setScriptDirectories(const QString& scriptDirectories);
|
void setScriptDirectories(const QString& scriptDirectories);
|
||||||
|
|
||||||
QString projectFileVersionString() const;
|
QString projectFileVersionString() const;
|
||||||
|
|
||||||
RimProject(void);
|
|
||||||
virtual ~RimProject(void);
|
|
||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
RimIdenticalGridCaseGroup* createIdenticalCaseGroupFromMainCase(RimCase* mainCase);
|
RimIdenticalGridCaseGroup*
|
||||||
|
createIdenticalCaseGroupFromMainCase(RimCase* mainCase);
|
||||||
void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimCase* rimReservoir);
|
void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimCase* rimReservoir);
|
||||||
|
|
||||||
void moveEclipseCaseIntoCaseGroup(RimCase* rimReservoir);
|
void moveEclipseCaseIntoCaseGroup(RimCase* rimReservoir);
|
||||||
void removeCaseFromAllGroups(RimCase* rimReservoir);
|
void removeCaseFromAllGroups(RimCase* rimReservoir);
|
||||||
|
|
||||||
void setProjectFileNameAndUpdateDependencies(const QString& fileName);
|
void setProjectFileNameAndUpdateDependencies(const QString& fileName);
|
||||||
|
|
||||||
|
void assignCaseIdToCase(RimCase* reservoirCase);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RigMainGrid* registerCaseInGridCollection(RigCaseData* rigEclipseCase);
|
RigMainGrid* registerCaseInGridCollection(RigCaseData* rigEclipseCase);
|
||||||
|
void allCases(std::vector<RimCase*>& cases);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Overridden methods
|
// Overridden methods
|
||||||
|
|||||||
@@ -305,6 +305,9 @@ void RimResultCase::setCaseInfo(const QString& userDescription, const QString& c
|
|||||||
{
|
{
|
||||||
this->caseUserDescription = userDescription;
|
this->caseUserDescription = userDescription;
|
||||||
this->caseFileName = caseFileName;
|
this->caseFileName = caseFileName;
|
||||||
|
|
||||||
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
|
proj->assignCaseIdToCase(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -331,6 +331,8 @@ void RimStatisticsCase::defineUiOrdering(QString uiConfigName, caf::PdmUiOrderin
|
|||||||
updatePercentileUiVisibility();
|
updatePercentileUiVisibility();
|
||||||
|
|
||||||
uiOrdering.add(&caseUserDescription);
|
uiOrdering.add(&caseUserDescription);
|
||||||
|
|
||||||
|
uiOrdering.add(&caseId);
|
||||||
uiOrdering.add(&m_calculateEditCommand);
|
uiOrdering.add(&m_calculateEditCommand);
|
||||||
uiOrdering.add(&m_selectionSummary);
|
uiOrdering.add(&m_selectionSummary);
|
||||||
|
|
||||||
|
|||||||
@@ -558,7 +558,10 @@ RimStatisticsCase* RimUiTreeModelPdm::addStatisticalCalculation(const QModelInde
|
|||||||
{
|
{
|
||||||
beginInsertRows(collectionIndex, position, position);
|
beginInsertRows(collectionIndex, position, position);
|
||||||
|
|
||||||
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
RimStatisticsCase* createdObject = caseGroup->createAndAppendStatisticsCase();
|
RimStatisticsCase* createdObject = caseGroup->createAndAppendStatisticsCase();
|
||||||
|
proj->assignCaseIdToCase(createdObject);
|
||||||
|
|
||||||
caf::PdmUiTreeItem* childItem = new caf::PdmUiTreeItem(parentCollectionItem, position, createdObject);
|
caf::PdmUiTreeItem* childItem = new caf::PdmUiTreeItem(parentCollectionItem, position, createdObject);
|
||||||
|
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
@@ -596,7 +599,8 @@ RimIdenticalGridCaseGroup* RimUiTreeModelPdm::addCaseGroup(QModelIndex& inserted
|
|||||||
beginInsertRows(rootIndex, position, position);
|
beginInsertRows(rootIndex, position, position);
|
||||||
|
|
||||||
RimIdenticalGridCaseGroup* createdObject = new RimIdenticalGridCaseGroup;
|
RimIdenticalGridCaseGroup* createdObject = new RimIdenticalGridCaseGroup;
|
||||||
createdObject->createAndAppendStatisticsCase();
|
RimCase* createdReservoir = createdObject->createAndAppendStatisticsCase();
|
||||||
|
proj->assignCaseIdToCase(createdReservoir);
|
||||||
createdObject->name = QString("Grid Case Group %1").arg(position + 1);
|
createdObject->name = QString("Grid Case Group %1").arg(position + 1);
|
||||||
proj->caseGroups().push_back(createdObject);
|
proj->caseGroups().push_back(createdObject);
|
||||||
|
|
||||||
@@ -644,6 +648,8 @@ void RimUiTreeModelPdm::addObjects(const QModelIndex& itemIndex, caf::PdmObjectG
|
|||||||
{
|
{
|
||||||
RimResultCase* rimResultReservoir = typedObjects[i];
|
RimResultCase* rimResultReservoir = typedObjects[i];
|
||||||
|
|
||||||
|
proj->assignCaseIdToCase(rimResultReservoir);
|
||||||
|
|
||||||
if (gridCaseGroup->contains(rimResultReservoir))
|
if (gridCaseGroup->contains(rimResultReservoir))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user