#775 Short name for summary cases refurbished

This commit is contained in:
Jacob Støren 2016-08-05 11:05:58 +02:00
parent 0d7a1e8bd7
commit ff6b198966
9 changed files with 121 additions and 104 deletions

View File

@ -17,6 +17,7 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#include "RimFileSummaryCase.h" #include "RimFileSummaryCase.h"
#include "QFileInfo"
//================================================================================================== //==================================================================================================
@ -58,4 +59,12 @@ QString RimFileSummaryCase::summaryHeaderFilename() const
return m_summaryHeaderFilename(); return m_summaryHeaderFilename();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFileSummaryCase::caseName() const
{
QFileInfo caseFileName(this->summaryHeaderFilename());
return caseFileName.completeBaseName();
}

View File

@ -34,6 +34,7 @@ public:
void setSummaryHeaderFilename(const QString& fileName); void setSummaryHeaderFilename(const QString& fileName);
virtual QString summaryHeaderFilename() const override; virtual QString summaryHeaderFilename() const override;
virtual QString caseName() const override;
private: private:
caf::PdmField<QString> m_summaryHeaderFilename; caf::PdmField<QString> m_summaryHeaderFilename;

View File

@ -36,16 +36,6 @@ CAF_PDM_SOURCE_INIT(RimGridSummaryCase,"GridSummaryCase");
RimGridSummaryCase::RimGridSummaryCase() RimGridSummaryCase::RimGridSummaryCase()
{ {
CAF_PDM_InitFieldNoDefault(&m_eclipseCase, "Associated3DCase", "Main View", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_eclipseCase, "Associated3DCase", "Main View", "", "", "");
CAF_PDM_InitField(&m_userName, "UserName", QString("User Name"), "Case Name", "", "", "");
m_userName.xmlCapability()->setIOReadable(false);
m_userName.xmlCapability()->setIOWritable(false);
m_userName.uiCapability()->setUiReadOnly(true);
CAF_PDM_InitField(&m_summaryHeaderFilename, "SummaryHeaderFile", QString("Summary Header File"), "Summary File", "", "", "");
m_summaryHeaderFilename.xmlCapability()->setIOReadable(false);
m_summaryHeaderFilename.xmlCapability()->setIOWritable(false);
m_summaryHeaderFilename.uiCapability()->setUiReadOnly(true);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -62,8 +52,8 @@ RimGridSummaryCase::~RimGridSummaryCase()
void RimGridSummaryCase::setAssociatedEclipseCase(RimEclipseCase* eclipseCase) void RimGridSummaryCase::setAssociatedEclipseCase(RimEclipseCase* eclipseCase)
{ {
m_eclipseCase = eclipseCase; m_eclipseCase = eclipseCase;
this->updateAutoShortName();
updateUiNames(); this->updateTreeItemName();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -80,35 +70,12 @@ QString RimGridSummaryCase::summaryHeaderFilename() const
return possibleSumHeaderFileName; return possibleSumHeaderFileName;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridSummaryCase::initAfterRead()
{
RimSummaryCase::updateOptionSensitivity();
updateUiNames();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimGridSummaryCase::updateUiNames() QString RimGridSummaryCase::caseName() const
{ {
m_summaryHeaderFilename = summaryHeaderFilename(); return m_eclipseCase()->caseUserDescription();
m_userName = curveDisplayName() + " - " + baseName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimGridSummaryCase::baseName() const
{
if (!m_eclipseCase()) return QString();
QFileInfo gridFileInfo(m_eclipseCase()->gridFileName());
return gridFileInfo.completeBaseName();
} }

View File

@ -36,20 +36,10 @@ public:
RimEclipseCase* associatedEclipseCase() { return m_eclipseCase(); } RimEclipseCase* associatedEclipseCase() { return m_eclipseCase(); }
virtual QString summaryHeaderFilename() const override; virtual QString summaryHeaderFilename() const override;
virtual QString caseName() const override;
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; }
virtual void initAfterRead();
private:
void updateUiNames();
QString baseName() const;
private: private:
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase; caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmField<QString> m_userName;
caf::PdmField<QString> m_summaryHeaderFilename;
}; };

View File

@ -36,8 +36,8 @@ RimSummaryCase::RimSummaryCase()
{ {
CAF_PDM_InitObject("Summary Case",":/Cases16x16.png","",""); CAF_PDM_InitObject("Summary Case",":/Cases16x16.png","","");
CAF_PDM_InitField(&curveDisplayName, "CurveDisplayName", QString("Curve Display Name"), "Curve Display Name", "", "", ""); CAF_PDM_InitField(&m_shortName, "ShortName", QString("Short Name"), "Short Name", "", "", "");
CAF_PDM_InitField(&autoCurveDisplayName, "AutoCurveDisplayName", true, "Auto Curve Display Name", "", "", ""); CAF_PDM_InitField(&m_useAutoShortName, "AutoShortyName", true, "Use Auto Short Name", "", "", "");
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -56,32 +56,19 @@ void RimSummaryCase::loadCase()
if (m_summaryCaseData.isNull()) m_summaryCaseData = new RigSummaryCaseData(this->summaryHeaderFilename()); if (m_summaryCaseData.isNull()) m_summaryCaseData = new RigSummaryCaseData(this->summaryHeaderFilename());
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryCase::caseName()
{
QFileInfo caseFileName(this->summaryHeaderFilename());
return caseFileName.completeBaseName();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &autoCurveDisplayName) if (changedField == &m_useAutoShortName)
{ {
if (autoCurveDisplayName) this->updateAutoShortName();
{ }
RimSummaryCaseCollection* summaryCaseCollection = NULL; else if (changedField == &m_shortName)
this->firstAnchestorOrThisOfType(summaryCaseCollection); {
if (summaryCaseCollection) updateTreeItemName();
{
curveDisplayName = summaryCaseCollection->uniqueShortNameForCase(this);
}
}
} }
RimProject* proj = NULL; RimProject* proj = NULL;
@ -100,5 +87,47 @@ void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryCase::updateOptionSensitivity() void RimSummaryCase::updateOptionSensitivity()
{ {
curveDisplayName.uiCapability()->setUiReadOnly(autoCurveDisplayName); m_shortName.uiCapability()->setUiReadOnly(m_useAutoShortName);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCase::updateTreeItemName()
{
this->setUiName(caseName() + " (" + shortName() +")");
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryCase::shortName() const
{
return m_shortName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCase::initAfterRead()
{
updateOptionSensitivity();
updateTreeItemName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCase::updateAutoShortName()
{
if(m_useAutoShortName)
{
RimSummaryCaseCollection* summaryCaseCollection = NULL;
this->firstAnchestorOrThisOfType(summaryCaseCollection);
CVF_ASSERT(summaryCaseCollection);
m_shortName = summaryCaseCollection->uniqueShortNameForCase(this);
updateTreeItemName();
}
} }

View File

@ -39,23 +39,26 @@ public:
RimSummaryCase(); RimSummaryCase();
virtual ~RimSummaryCase(); virtual ~RimSummaryCase();
QString caseName(); virtual QString summaryHeaderFilename() const = 0;
virtual QString caseName() const = 0;
QString shortName() const;
virtual QString summaryHeaderFilename() const = 0; void updateAutoShortName();
void loadCase(); void updateOptionSensitivity();
void loadCase();
RigSummaryCaseData* caseData() { return m_summaryCaseData.p(); } RigSummaryCaseData* caseData() { return m_summaryCaseData.p(); }
caf::PdmField<QString> curveDisplayName;
caf::PdmField<bool> autoCurveDisplayName;
void updateOptionSensitivity();
protected: protected:
void updateTreeItemName();
caf::PdmField<QString> m_shortName;
caf::PdmField<bool> m_useAutoShortName;
cvf::ref<RigSummaryCaseData> m_summaryCaseData; cvf::ref<RigSummaryCaseData> m_summaryCaseData;
private: private:
// Overridden PDM methods // Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void initAfterRead() override;
}; };

View File

@ -127,10 +127,9 @@ RimGridSummaryCase* RimSummaryCaseCollection::createAndAddSummaryCaseFromEclipse
if(RifEclipseSummaryTools::hasSummaryFiles(QDir::toNativeSeparators(gridFileName).toStdString())) if(RifEclipseSummaryTools::hasSummaryFiles(QDir::toNativeSeparators(gridFileName).toStdString()))
{ {
RimGridSummaryCase* newSumCase = new RimGridSummaryCase(); RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
newSumCase->setAssociatedEclipseCase(eclResCase);
newSumCase->curveDisplayName = uniqueShortNameForCase(newSumCase);
newSumCase->updateOptionSensitivity();
this->m_cases.push_back(newSumCase); this->m_cases.push_back(newSumCase);
newSumCase->setAssociatedEclipseCase(eclResCase);
newSumCase->updateOptionSensitivity();
return newSumCase; return newSumCase;
} }
return nullptr; return nullptr;
@ -141,37 +140,57 @@ RimGridSummaryCase* RimSummaryCaseCollection::createAndAddSummaryCaseFromEclipse
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimSummaryCaseCollection::uniqueShortNameForCase(RimSummaryCase* summaryCase) QString RimSummaryCaseCollection::uniqueShortNameForCase(RimSummaryCase* summaryCase)
{ {
QStringList allAutoShortNames; std::set<QString> allAutoShortNames;
for (RimSummaryCase* sumCase : m_cases) for (RimSummaryCase* sumCase : m_cases)
{ {
if (sumCase && sumCase != summaryCase) if (sumCase && sumCase != summaryCase)
{ {
allAutoShortNames.push_back(sumCase->curveDisplayName()); allAutoShortNames.insert(sumCase->shortName());
} }
} }
bool foundUnique = false; bool foundUnique = false;
QString caseName = summaryCase->caseName(); QString caseName = summaryCase->caseName();
QString candidateBase = caseName.left(2); QString shortName;
QString candidate = candidateBase;
int autoNumber = 0; if (caseName.size() > 2)
while (!foundUnique)
{ {
bool foundExisting = false; QString candidate = caseName[0];
for (QString autoName : allAutoShortNames)
for (int i = 1; i < caseName.size(); ++i )
{ {
if (autoName.left(candidate.size()) == candidate) if (allAutoShortNames.count(candidate + caseName[i]) == 0)
{ {
candidate = candidateBase + QString::number(autoNumber++); shortName = candidate + caseName[i];
foundExisting = true; foundUnique = true;
break;
} }
} }
}
foundUnique = !foundExisting; else
{
shortName = caseName.left(2);
if(allAutoShortNames.count(shortName) == 0)
{
foundUnique = true;
}
} }
return candidate; 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

@ -31,16 +31,15 @@ public:
RimSummaryCaseCollection(); RimSummaryCaseCollection();
virtual ~RimSummaryCaseCollection(); virtual ~RimSummaryCaseCollection();
RimSummaryCase* summaryCase(size_t idx); RimSummaryCase* summaryCase(size_t idx);
size_t summaryCaseCount(); size_t summaryCaseCount();
void createSummaryCasesFromRelevantEclipseResultCases();
void createSummaryCasesFromRelevantEclipseResultCases();
RimGridSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase); RimGridSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
void loadAllSummaryCaseData(); void loadAllSummaryCaseData();
QString uniqueShortNameForCase(RimSummaryCase* summaryCase); QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
private: private:
caf::PdmChildArrayField<RimSummaryCase*> m_cases; caf::PdmChildArrayField<RimSummaryCase*> m_cases;

View File

@ -309,7 +309,7 @@ QString RimSummaryCurve::createCurveAutoName()
generatedCurveName += ", "; generatedCurveName += ", ";
} }
generatedCurveName += m_summaryCase->curveDisplayName(); generatedCurveName += m_summaryCase->shortName();
} }
return generatedCurveName; return generatedCurveName;