208 lines
6.2 KiB
C++
208 lines
6.2 KiB
C++
/**
|
||
* @file ModuleParameter.h
|
||
* @brief 文件定义了与模块参数相关的类
|
||
* @author dev
|
||
* @date 2011-4-29
|
||
*/
|
||
|
||
#ifndef PAI_FRAME_MODULEAPI_MODULEPARAMETER_H
|
||
#define PAI_FRAME_MODULEAPI_MODULEPARAMETER_H
|
||
#include "Turtle.h"
|
||
#include "ParameterItem.h"
|
||
|
||
#include <string>
|
||
#include <vector>
|
||
|
||
namespace Json {
|
||
class Value;
|
||
}
|
||
|
||
namespace pai {
|
||
namespace module {
|
||
|
||
/**
|
||
* @class CModuleParameter
|
||
* @brief 类<code>CModuleParameter</code>封装模块所需要的参数信息,它是所有模块参数的基类。
|
||
*/
|
||
class PAI_MODULE_EXPORT CModuleParameter {
|
||
public:
|
||
/**
|
||
* @brief 构造函数
|
||
*/
|
||
CModuleParameter();
|
||
/**
|
||
* @brief 拷贝构造函数
|
||
*/
|
||
CModuleParameter(const CModuleParameter& srcParameter);
|
||
/**
|
||
* @brief 虚析构函数
|
||
*/
|
||
virtual ~CModuleParameter();
|
||
|
||
/**
|
||
* @brief 克隆函数
|
||
* @param srcParameter 克隆的对象
|
||
*/
|
||
void Clone(const CModuleParameter& srcParameter);
|
||
/**
|
||
* @brief 重载相等符号==,判断两个参数是否相等
|
||
* @param[in] otherItem 对比对象
|
||
*/
|
||
bool operator==(const CModuleParameter& otherParameter) const;
|
||
|
||
/**
|
||
* @brief 设置工作流id
|
||
* @param[in] id 工作流id
|
||
*/
|
||
virtual void SetWorkflowId(std::string id) { workflow_id = id; }
|
||
/**
|
||
* @brief 获取工作流id
|
||
*/
|
||
virtual std::string GetWorkflowId() { return workflow_id; }
|
||
/**
|
||
* @brief 设置本地临时目录
|
||
*/
|
||
void SetLocalTempDirectory(std::string tmp_dir) { local_tmp_dir = tmp_dir; }
|
||
/**
|
||
* @brief 获取本地临时目录
|
||
* @return 本地临时目录
|
||
*/
|
||
std::string GetLocalTempDirectory() const{ return local_tmp_dir; }
|
||
/**
|
||
* @brief 设置HDFS临时目录
|
||
* @param[in] tmp_dir HDFS临时目录
|
||
*/
|
||
void SetHDFSTempDirectory(std::string tmp_dir) { hdfs_tmp_dir = tmp_dir; }
|
||
/**
|
||
* @brief 获取HDFS临时目录
|
||
* @return 获取HDFS临时目录
|
||
*/
|
||
std::string GetHDFSTempDirectory() const { return hdfs_tmp_dir; }
|
||
|
||
/**
|
||
* @brief 添加参数项
|
||
* @param[in] item 参数项
|
||
*/
|
||
void AddParameterItem(const CParameterItem& item);
|
||
/**
|
||
* @brief 添加参数项
|
||
* @param[in] paramId 是参数名称
|
||
* @param[in] paramType 是参数类型
|
||
* @param[in] paramStringValue 是参数值
|
||
*/
|
||
void AddParameterItem(QString& paramId,const ParameterType paramType,const std::string& paramStringValue);
|
||
void AddParameterItem(const std::string& paramId,const ParameterType paramType,const std::string& paramStringValue);
|
||
/**
|
||
* @brief 删除参数项
|
||
* @param paramId是参数Id
|
||
*/
|
||
void RemoveParameterItem(const std::string& paramId);
|
||
/**
|
||
* @brief 获取参数项的个数
|
||
* @return 参数项的个数
|
||
*/
|
||
int GetParameterItemCount() const;
|
||
/**
|
||
* @brief 获取参数项索引
|
||
* @param[in] strItemName 参数名字
|
||
* @return 参数项索引
|
||
*/
|
||
int GetParamItemIndex(const std::string& strItemName) const;
|
||
/**
|
||
* @brief 获取参数项
|
||
* @param[in] iIndex 参数索引
|
||
* @return 参数项<code>CParameterItem</code>指针
|
||
*/
|
||
CParameterItem* GetParameterItem(int iIndex);
|
||
/**
|
||
* @brief 获取参数项
|
||
* @param[in] strItemName 参数名字
|
||
* @return 参数项<code>CParameterItem</code>指针
|
||
*/
|
||
CParameterItem* GetParameterItem(const std::string& strItemName);
|
||
/**
|
||
* @brief 获取所有的参数项
|
||
* @return 所有参数项的集合
|
||
*/
|
||
std::vector<CParameterItem> GetParameterItems() const;
|
||
/**
|
||
* @brief 获取参数项的所有分类名字
|
||
* @param[out] vecCategoryNames 所有类型名字的集合
|
||
*/
|
||
void GetCategoryNames(std::vector<std::string>& vecCategoryNames);
|
||
/**
|
||
* @brief 得到根参数项
|
||
* @return 根参数项<code>CCompositeParameterItem</code>
|
||
*/
|
||
CCompositeParameterItem* GetRootParameterItem() const;
|
||
/**
|
||
* @brief 根据参数项的类别获取参数项
|
||
* @param[in] strCategory 参数项类别名称
|
||
* @return 符合条件的参数项集合
|
||
*/
|
||
std::vector<CParameterItem*> GetParameterItemsByCategory(const std::string& strCategory) const;
|
||
|
||
//REMOVEME
|
||
void SetClass(std::string clazz) { m_strClass = clazz; }
|
||
std::string GetClass() const { return m_strClass; }
|
||
/**
|
||
* @brief 从Json文件中读取参数信息
|
||
* @param bAmendID 是否需要修改ID及其子孙参数的参数项ID
|
||
* @exception pai::error::runtime_error 读取失败时抛出异常
|
||
*/
|
||
// void LoadFromJson(const Json::Value& root,bool bAmendID = false);
|
||
/**
|
||
* @brief 将参数信息存入Json文件中
|
||
* @param root ‘Module’节点
|
||
* @exception pai::error::runtime_error 保存失败时抛出异常
|
||
*/
|
||
// void SaveToJson(Json::Value& root);
|
||
/**
|
||
* @brief 打印参数内容
|
||
*/
|
||
// void Print();
|
||
/**
|
||
* @brief 判断所有参数项是否已经都被赋了可用的值
|
||
* @param[out] completeIndex 参数所有参数项的填写完备程度
|
||
* @return 所有参数项已经都被赋了可用的值则返回true,否则返回false
|
||
*/
|
||
bool IsReady(ParameterCompleteIndex& completeIndex) const;
|
||
/**
|
||
* @brief 设置工作流导入时的项目工区路径
|
||
* @param[in] importPath 工作流导入时的项目工区路径
|
||
*/
|
||
void SetImportPath(std::string importPath);
|
||
|
||
private:
|
||
/**
|
||
* @brief 从Json节点中读取参数项信息
|
||
* @param paramJsonNode Json节点,对应一个参数项
|
||
* @param pParentItem 上述Json节点对应的参数项的父参数项
|
||
* @param bAmendID 是否需要修改ID及其子孙参数的参数项ID
|
||
*/
|
||
// void _LoadFromJson(const Json::Value& paramJsonNode, CCompositeParameterItem* pParentItem,bool bAmendID);
|
||
/**
|
||
* @brief 将参数项信息存入Json节点中
|
||
* @param paramJsonNode Json节点,对应一个参数项
|
||
* @param pParentItem 上述Json节点对应的参数项
|
||
*/
|
||
// void _SaveToJson(Json::Value& paramJsonNode, CParameterItem* pItem);
|
||
protected:
|
||
std::string workflow_id; /**< 工作流对应的标识符*/
|
||
std::string local_tmp_dir; /**< 工作流对应的本地临时读写目录*/
|
||
std::string hdfs_tmp_dir; /**< 工作流对应的HDFS临时读写目录*/
|
||
CCompositeParameterItem m_rootParameterItem; /**< 根参数项 */
|
||
|
||
//REMOVEME
|
||
std::string m_strClass;
|
||
|
||
private:
|
||
std::string m_importPath; //工作流导入时的项目工区路径
|
||
|
||
};
|
||
|
||
}
|
||
}
|
||
|
||
#endif
|