You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmSubWxs/nmReservoirPropertiesDataSo...

93 lines
3.4 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "nmSubWxs_global.h"
#include "nmDataReservoir.h"
#include "nmDataVerticalWell.h"
#include "nmDataVerticalFracturedWell.h"
#include "nmDataHorizontalFracturedWell.h"
#include "nmDataRegionMark.h"
#include "nmDataFault.h"
#include "nmDataFracture.h"
#include "nmDataRegion.h"
class nmDataAnalyzeManager;
/**
* @brief 储层参数编辑快照。
* @note 快照保存一次编辑会话所需的全部数据副本,不包含普通水平井。
*/
struct NM_SUB_WXS_EXPORT nmReservoirPropertiesSnapshot
{
/** @brief 构造空快照。 */
nmReservoirPropertiesSnapshot();
nmDataReservoir m_oReservoir; ///< 储层参数副本。
QVector<nmDataVerticalWell> m_vecVerticalWells; ///< 直井参数副本。
QVector<nmDataVerticalFracturedWell> m_vecVerticalFracturedWells; ///< 垂直压裂井参数副本。
QVector<nmDataHorizontalFracturedWell> m_vecHorizontalFracturedWells; ///< 水平压裂井参数副本。
QVector<nmDataRegionMark> m_vecRegionMarks; ///< 区域标记参数副本。
QVector<nmDataFault> m_vecFaults; ///< 断层参数副本。
QVector<nmDataFracture> m_vecFractures; ///< 裂缝参数副本包含DFN以保持提交索引稳定。
QVector<nmDataRegion> m_vecRegions; ///< 复合区参数副本。
};
/**
* @brief 储层参数数据源接口。
* @note 对话框只依赖此接口,不直接访问全局数据管理器。
*/
class NM_SUB_WXS_EXPORT nmIReservoirPropertiesDataSource
{
public:
/** @brief 析构数据源接口。 */
virtual ~nmIReservoirPropertiesDataSource();
/**
* @brief 读取当前分析窗口的数据快照。
* @param oSnapshot 输出的工作快照。
* @param sError 输出的错误信息。
* @return 读取成功返回true。
*/
virtual bool loadSnapshot(nmReservoirPropertiesSnapshot& oSnapshot,
QString& sError) const = 0;
/**
* @brief 一次性提交编辑后的工作快照。
* @param oSnapshot 待提交的工作快照。
* @param bGeometryChanged 井坐标或几何参数是否发生变化。
* @param sError 输出的错误信息。
* @return 提交成功返回true。
*/
virtual bool commitSnapshot(const nmReservoirPropertiesSnapshot& oSnapshot,
bool bGeometryChanged,
QString& sError) = 0;
};
/**
* @brief 基于nmDataAnalyzeManager的数据源适配器。
*/
class NM_SUB_WXS_EXPORT nmAnalyzeManagerReservoirDataSource :
public nmIReservoirPropertiesDataSource
{
public:
/**
* @brief 构造数据源适配器。
* @param pDataManager 当前分析窗口的数据管理器,不转移所有权。
*/
explicit nmAnalyzeManagerReservoirDataSource(nmDataAnalyzeManager* pDataManager);
/** @brief 析构数据源适配器。 */
virtual ~nmAnalyzeManagerReservoirDataSource();
virtual bool loadSnapshot(nmReservoirPropertiesSnapshot& oSnapshot,
QString& sError) const;
virtual bool commitSnapshot(const nmReservoirPropertiesSnapshot& oSnapshot,
bool bGeometryChanged,
QString& sError);
private:
nmDataAnalyzeManager* m_pDataManager; ///< 当前分析窗口的数据管理器,不拥有所有权。
};