#1813 Observed data: Move uniqueShortName to RimOilField to include observedData

This commit is contained in:
Rebecca Cox 2017-09-19 10:14:58 +02:00
parent 12c8051266
commit 28c86b08d7
3 changed files with 84 additions and 9 deletions

View File

@ -28,7 +28,9 @@
#endif // USE_PROTOTYPE_FEATURE_FRACTURES
#include "RimGeoMechModels.h"
#include "RimObservedData.h"
#include "RimObservedDataCollection.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimWellPathCollection.h"
@ -81,3 +83,71 @@ RimOilField::~RimOilField(void)
if (observedDataCollection()) delete observedDataCollection();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimOilField::uniqueShortNameForCase(RimSummaryCase* summaryCase)
{
std::set<QString> allAutoShortNames;
std::vector<RimSummaryCase*> allCases = summaryCaseMainCollection->allSummaryCases();
std::vector<RimObservedData*> observedDataCases = observedDataCollection->allObservedData();
for (RimObservedData* observedData : observedDataCases)
{
allCases.push_back(dynamic_cast<RimSummaryCase*>(observedData));
}
for (RimSummaryCase* sumCase : allCases)
{
if (sumCase && sumCase != summaryCase)
{
allAutoShortNames.insert(sumCase->shortName());
}
}
bool foundUnique = false;
QString caseName = summaryCase->caseName();
QString shortName;
if (caseName.size() > 2)
{
QString candidate;
candidate += caseName[0];
for (int i = 1; i < caseName.size(); ++i)
{
if (allAutoShortNames.count(candidate + caseName[i]) == 0)
{
shortName = candidate + caseName[i];
foundUnique = true;
break;
}
}
}
else
{
shortName = caseName.left(2);
if (allAutoShortNames.count(shortName) == 0)
{
foundUnique = true;
}
}
QString candidate = shortName;
int autoNumber = 0;
while (!foundUnique)
{
candidate = shortName + QString::number(autoNumber++);
if (allAutoShortNames.count(candidate) == 0)
{
shortName = candidate;
foundUnique = true;
}
}
return shortName;
}

View File

@ -30,6 +30,7 @@ class RimFormationNamesCollection;
class RimFractureTemplateCollection;
class RimGeoMechModels;
class RimObservedDataCollection;
class RimSummaryCase;
class RimSummaryCaseMainCollection;
class RimWellPathCollection;
@ -45,6 +46,8 @@ public:
RimOilField(void);
virtual ~RimOilField(void);
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
caf::PdmChildField<RimEclipseCaseCollection*> analysisModels;
caf::PdmChildField<RimGeoMechModels*> geoMechModels;
caf::PdmChildField<RimWellPathCollection*> wellPathCollection;

View File

@ -19,13 +19,15 @@
#include "RimSummaryCase.h"
#include "RigSummaryCaseData.h"
#include "RimEclipseCase.h"
#include "RimMainPlotCollection.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimSummaryPlotCollection.h"
#include <QFileInfo>
#include "RimProject.h"
#include "RimSummaryPlotCollection.h"
#include "RimMainPlotCollection.h"
CAF_PDM_ABSTRACT_SOURCE_INIT(RimSummaryCase,"SummaryCase");
@ -157,16 +159,16 @@ void RimSummaryCase::updateAutoShortName()
{
if(m_useAutoShortName)
{
RimSummaryCaseMainCollection* summaryCaseMainCollection = NULL;
this->firstAncestorOrThisOfType(summaryCaseMainCollection);
CVF_ASSERT(summaryCaseMainCollection);
RimOilField* oilField = NULL;
this->firstAncestorOrThisOfType(oilField);
CVF_ASSERT(oilField);
m_shortName = summaryCaseMainCollection->uniqueShortNameForCase(this);
updateTreeItemName();
m_shortName = oilField->uniqueShortNameForCase(this);
}
else if (m_shortName() == QString("Display Name"))
{
m_shortName = caseName();
updateTreeItemName();
}
updateTreeItemName();
}