#1816 : Observed Data : Add mock data to RifReaderObservedData

This commit is contained in:
Magne Sjaastad
2017-09-22 14:26:54 +02:00
parent 363224e39a
commit eb744f381d
15 changed files with 340 additions and 59 deletions

View File

@@ -91,9 +91,9 @@ QString RimOilField::uniqueShortNameForCase(RimSummaryCase* summaryCase)
std::set<QString> allAutoShortNames;
std::vector<RimSummaryCase*> allCases = summaryCaseMainCollection->allSummaryCases();
std::vector<RimObservedData*> observedDataCases = observedDataCollection->allObservedData();
std::vector<RimSummaryCase*> observedDataCases = observedDataCollection->allObservedData();
for (RimObservedData* observedData : observedDataCases)
for (auto observedData : observedDataCases)
{
allCases.push_back(dynamic_cast<RimSummaryCase*>(observedData));
}

View File

@@ -552,7 +552,7 @@ void RimProject::allSummaryCases(std::vector<RimSummaryCase*>& sumCases)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::allObservedData(std::vector<RimObservedData*>& observedData)
void RimProject::allObservedData(std::vector<RimSummaryCase*>& observedData)
{
for (RimOilField* oilField : oilFields)
{
@@ -561,7 +561,7 @@ void RimProject::allObservedData(std::vector<RimObservedData*>& observedData)
if (observedDataCollection)
{
observedData.clear();
std::vector<RimObservedData*> allObservedData = observedDataCollection->allObservedData();
std::vector<RimSummaryCase*> allObservedData = observedDataCollection->allObservedData();
observedData.insert(observedData.end(), allObservedData.begin(), allObservedData.end());
}
}

View File

@@ -95,7 +95,7 @@ public:
void allCases(std::vector<RimCase*>& cases);
void allSummaryCases(std::vector<RimSummaryCase*>& sumCases);
void allObservedData(std::vector<RimObservedData*>& observedData);
void allObservedData(std::vector<RimSummaryCase*>& observedData);
void allNotLinkedViews(std::vector<RimView*>& views);
void allVisibleViews(std::vector<RimView*>& views);

View File

@@ -25,6 +25,7 @@ ${CEE_CURRENT_LIST_DIR}RimSummaryYAxisProperties.h
${CEE_CURRENT_LIST_DIR}RimObservedData.h
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.h
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.h
${CEE_CURRENT_LIST_DIR}RimObservedRsmspecColumnBasedData.h
)
set (SOURCE_GROUP_SOURCE_FILES
@@ -48,6 +49,7 @@ ${CEE_CURRENT_LIST_DIR}RimSummaryYAxisProperties.cpp
${CEE_CURRENT_LIST_DIR}RimObservedData.cpp
${CEE_CURRENT_LIST_DIR}RimObservedDataCollection.cpp
${CEE_CURRENT_LIST_DIR}RimSummaryObservedDataFile.cpp
${CEE_CURRENT_LIST_DIR}RimObservedRsmspecColumnBasedData.cpp
)
list(APPEND CODE_HEADER_FILES

View File

@@ -21,7 +21,7 @@
#include <QFileInfo>
CAF_PDM_SOURCE_INIT(RimObservedData, "ObservedData");
CAF_PDM_ABSTRACT_SOURCE_INIT(RimObservedData, "ObservedData");
//--------------------------------------------------------------------------------------------------
///
@@ -63,17 +63,16 @@ void RimObservedData::updateFilePathsFromProjectPath(const QString & newProjectP
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimObservedData::createSummaryReaderInterface()
QString RimObservedData::identifierName() const
{
throw std::logic_error("The method or operation is not implemented.");
return m_identifierName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifSummaryReaderInterface* RimObservedData::summaryReader()
RifEclipseSummaryAddress::SummaryVarCategory RimObservedData::summaryCategory() const
{
throw std::logic_error("The method or operation is not implemented.");
return nullptr;
return m_summaryCategory();
}

View File

@@ -40,12 +40,8 @@ public:
virtual QString caseName() override;
virtual void updateFilePathsFromProjectPath(const QString& newProjectPath, const QString& oldProjectPath) override;
virtual void createSummaryReaderInterface() override;
virtual RifSummaryReaderInterface* summaryReader() override;
QString identifierName() const;
RifEclipseSummaryAddress::SummaryVarCategory summaryCategory() const;
private:
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory> > m_summaryCategory;
caf::PdmField<QString> m_identifierName;

View File

@@ -79,9 +79,9 @@ RimSummaryObservedDataFile* RimObservedDataCollection::createAndAddObservedDataF
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimObservedData*> RimObservedDataCollection::allObservedData()
std::vector<RimSummaryCase*> RimObservedDataCollection::allObservedData()
{
std::vector<RimObservedData*> allObservedData;
std::vector<RimSummaryCase*> allObservedData;
allObservedData.insert(allObservedData.begin(), m_observedDataArray.begin(), m_observedDataArray.end());

View File

@@ -21,6 +21,7 @@
#include "cafPdmObject.h"
#include "cafPdmChildArrayField.h"
class RimSummaryCase;
class RimObservedData;
class RimSummaryObservedDataFile;
@@ -38,7 +39,7 @@ public:
void removeObservedData(RimObservedData* observedData);
void addObservedData(RimObservedData* observedData);
RimSummaryObservedDataFile* createAndAddObservedDataFromFileName(const QString& fileName);
std::vector<RimObservedData*> allObservedData();
std::vector<RimSummaryCase*> allObservedData();
private:
caf::PdmChildArrayField<RimObservedData*> m_observedDataArray;

View File

@@ -0,0 +1,160 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RimObservedRsmspecColumnBasedData.h"
#include "RifSummaryReaderInterface.h"
CAF_PDM_SOURCE_INIT(RimObservedRsmspecColumnBasedData, "RimObservedRsmspecColumnBasedData");
class MyTestInterface : public RifSummaryReaderInterface
{
public:
MyTestInterface()
{
m_timeSteps.push_back(1000);
m_timeSteps.push_back(1010);
m_timeSteps.push_back(1020);
m_timeSteps.push_back(1030);
m_timeSteps.push_back(1040);
m_headers.push_back("sdflkj");
m_headers.push_back("sdf");
m_headers.push_back("sdfffff");
m_headers.push_back("qwqwqw");
m_headers.push_back("aaaaa");
m_headers.push_back("absc");
}
// caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory> > m_summaryCategory;
// caf::PdmField<QString> m_identifierName;
void setMetaData(RifEclipseSummaryAddress::SummaryVarCategory summaryCategory, const QString& identifierName)
{
m_category = summaryCategory;
m_identifierName = identifierName;
buildMetaData();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override
{
return m_timeSteps;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
virtual bool values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values) override
{
values->push_back(20);
values->push_back(40);
values->push_back(50);
values->push_back(40);
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
virtual std::string unitName(const RifEclipseSummaryAddress& resultAddress) override
{
return "Unknown unit";
}
private:
void buildMetaData()
{
m_allResultAddresses.clear();
for (size_t i = 0; i < m_headers.size(); i++)
{
RifEclipseSummaryAddress addr(m_category,
m_headers[i].toStdString(),
-1,
-1,
"",
"",
-1,
"",
-1,
-1,
-1);
m_allResultAddresses.push_back(addr);
}
}
private:
std::vector<time_t> m_timeSteps;
std::vector<QString> m_headers;
RifEclipseSummaryAddress::SummaryVarCategory m_category;
QString m_identifierName;
};
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimObservedRsmspecColumnBasedData::RimObservedRsmspecColumnBasedData()
{
CAF_PDM_InitObject("Observed RSMSPEC Column Based Data File", ":/Default.png", "", "");
m_summaryHeaderFilename.uiCapability()->setUiName("File");
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimObservedRsmspecColumnBasedData::~RimObservedRsmspecColumnBasedData()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimObservedRsmspecColumnBasedData::setSummaryHeaderFilename(const QString& fileName)
{
m_summaryHeaderFilename = fileName;
this->updateAutoShortName();
this->updateTreeItemName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimObservedRsmspecColumnBasedData::createSummaryReaderInterface()
{
m_summeryReader = new MyTestInterface;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifSummaryReaderInterface* RimObservedRsmspecColumnBasedData::summaryReader()
{
return m_summeryReader.p();
}

View File

@@ -0,0 +1,48 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RimObservedData.h"
#include "cafPdmObject.h"
#include "cafPdmField.h"
#include "cvfObject.h"
class MyTestInterface;
//==================================================================================================
//
//==================================================================================================
class RimObservedRsmspecColumnBasedData : public RimObservedData
{
CAF_PDM_HEADER_INIT;
public:
RimObservedRsmspecColumnBasedData();
virtual ~RimObservedRsmspecColumnBasedData();
void setSummaryHeaderFilename(const QString& fileName);
virtual void createSummaryReaderInterface() override;
virtual RifSummaryReaderInterface* summaryReader() override;
private:
cvf::ref<MyTestInterface> m_summeryReader;
};

View File

@@ -22,6 +22,7 @@
#include "RimTools.h"
#include <QFileInfo>
#include "RifReaderObservedData.h"
CAF_PDM_SOURCE_INIT(RimSummaryObservedDataFile, "SummaryObservedDataFile");
@@ -52,3 +53,24 @@ void RimSummaryObservedDataFile::setSummaryHeaderFilename(const QString& fileNam
this->updateAutoShortName();
this->updateTreeItemName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryObservedDataFile::createSummaryReaderInterface()
{
m_summaryReader = new RifReaderObservedData;
if (!m_summaryReader->open(this->summaryHeaderFilename(), identifierName(), summaryCategory()))
{
m_summaryReader = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifSummaryReaderInterface* RimSummaryObservedDataFile::summaryReader()
{
return m_summaryReader.p();
}

View File

@@ -24,6 +24,7 @@
#include "cafPdmField.h"
#include "cvfObject.h"
class RifReaderObservedData;
//==================================================================================================
//
@@ -36,4 +37,10 @@ public:
virtual ~RimSummaryObservedDataFile();
void setSummaryHeaderFilename(const QString& fileName);
virtual void createSummaryReaderInterface() override;
virtual RifSummaryReaderInterface* summaryReader() override;
private:
cvf::ref<RifReaderObservedData> m_summaryReader;
};