|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmSubWxs_global.h"
|
|
|
|
|
|
#include "nmReservoirPropertiesDataSource.h"
|
|
|
|
|
|
#include "nmReservoirParameterCatalog.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <QMap>
|
|
|
|
|
|
#include <QVariant>
|
|
|
|
|
|
|
|
|
|
|
|
class nmAttrRegistry;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 储层参数编辑会话。
|
|
|
|
|
|
* @note 会话持有独立工作副本和独立属性注册表;取消时直接销毁会话即可。
|
|
|
|
|
|
*/
|
|
|
|
|
|
class NM_SUB_WXS_EXPORT nmReservoirPropertiesSession
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 构造编辑会话。
|
|
|
|
|
|
* @param pDataSource 参数数据源,不转移所有权。
|
|
|
|
|
|
*/
|
|
|
|
|
|
explicit nmReservoirPropertiesSession(nmIReservoirPropertiesDataSource* pDataSource);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief 析构编辑会话及其独立注册表。 */
|
|
|
|
|
|
~nmReservoirPropertiesSession();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 从数据源创建原始快照和工作副本。
|
|
|
|
|
|
* @param sError 输出的错误信息。
|
|
|
|
|
|
* @return 初始化成功返回true。
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool initialize(QString& sError);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 获取指定分类的对象描述。
|
|
|
|
|
|
* @param eCategory 页面分类。
|
|
|
|
|
|
* @return 对象描述列表。
|
|
|
|
|
|
*/
|
|
|
|
|
|
QList<nmReservoirPropertyObjectInfo> objectInfos(
|
|
|
|
|
|
nmReservoirPropertiesCategory eCategory);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 获取工作副本中的参数值。
|
|
|
|
|
|
* @param sParameterId 稳定参数ID。
|
|
|
|
|
|
* @return 参数值;不存在时返回无效QVariant。
|
|
|
|
|
|
*/
|
|
|
|
|
|
QVariant value(const QString& sParameterId) const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 修改工作副本中的参数值。
|
|
|
|
|
|
* @param sParameterId 稳定参数ID。
|
|
|
|
|
|
* @param oValue 基准单位下的新值。
|
|
|
|
|
|
* @return 参数存在并完成修改时返回true。
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool setValue(const QString& sParameterId, const QVariant& oValue);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 批量修改工作副本中的参数值。
|
|
|
|
|
|
* @param mapValues 稳定参数ID到基准值的映射。
|
|
|
|
|
|
*/
|
|
|
|
|
|
void setValues(const QMap<QString, QVariant>& mapValues);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 获取枚举参数的稳定code。
|
|
|
|
|
|
* @param sParameterId 稳定枚举参数ID。
|
|
|
|
|
|
* @return 稳定业务code。
|
|
|
|
|
|
*/
|
|
|
|
|
|
QString enumCode(const QString& sParameterId) const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 修改枚举参数的稳定code。
|
|
|
|
|
|
* @param sParameterId 稳定枚举参数ID。
|
|
|
|
|
|
* @param sCode 稳定业务code。
|
|
|
|
|
|
* @return 修改成功返回true。
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool setEnumCode(const QString& sParameterId, const QString& sCode);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 提交工作副本。
|
|
|
|
|
|
* @param sError 输出的错误信息。
|
|
|
|
|
|
* @return 提交成功返回true。
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool commit(QString& sError);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief 获取只读工作副本,供后续导入预览或测试使用。 */
|
|
|
|
|
|
const nmReservoirPropertiesSnapshot& workingSnapshot() const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
/** @brief 判断井坐标或几何参数是否发生变化。 */
|
|
|
|
|
|
bool isGeometryChanged() const;
|
|
|
|
|
|
|
|
|
|
|
|
nmIReservoirPropertiesDataSource* m_pDataSource; ///< 参数数据源,不拥有所有权。
|
|
|
|
|
|
nmAttrRegistry* m_pAttrRegistry; ///< 编辑会话独占的属性注册表。
|
|
|
|
|
|
nmReservoirPropertiesSnapshot m_oOriginalSnapshot; ///< 打开对话框时的原始快照。
|
|
|
|
|
|
nmReservoirPropertiesSnapshot m_oWorkingSnapshot; ///< 所有界面编辑写入的工作副本。
|
|
|
|
|
|
bool m_bInitialized; ///< 会话是否初始化成功。
|
|
|
|
|
|
};
|