133 lines
5.6 KiB
C++
133 lines
5.6 KiB
C++
#if !defined(__KTPARAMSERVICE_H__)
|
|
#define __KTPARAMSERVICE_H__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "KTParamClass.h"
|
|
|
|
typedef void (*RuleHandlerFunPtr)(AcDbVoidPtrArray& arpEnts, const struct resbuf*);
|
|
|
|
class KTParamService : public AcRxService
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(KTParamService);
|
|
|
|
// 向服务词典注册与删除服务
|
|
static BOOL RegisterService();
|
|
static BOOL RemoveService();
|
|
|
|
public:
|
|
// 构造与析构
|
|
KTParamService();
|
|
~KTParamService();
|
|
|
|
// 初始化服务
|
|
BOOL InitService();
|
|
// 清除服务
|
|
BOOL ReleaseService();
|
|
|
|
// 取得和设置Rule处理函数, pfnHandler=NULL去除
|
|
RuleHandlerFunPtr GetRuleHandler(LPCTSTR pszCurveType, LPCTSTR pszDrawType) const;
|
|
BOOL SetRuleHandler(LPCTSTR pszCurveType, LPCTSTR pszDrawType, RuleHandlerFunPtr pfnHandler);
|
|
|
|
// 根据类型Code和属性值数据,创建参数化实体
|
|
BOOL CreateParamPart(AcDbVoidPtrArray& arpPart, const CMapStringToString& mapAttrToValue, LPCTSTR pszPartCode) const;
|
|
// 根据类型Id和属性值数据,创建参数化实体
|
|
BOOL CreateParamPart(AcDbVoidPtrArray& arpPart, const CMapStringToString& mapAttrToValue, ULONG lId) const;
|
|
|
|
// 创建参数数据
|
|
BOOL CreateParamValueResBuf(struct resbuf* pRb, LPCTSTR pszParam, LPCTSTR pszValue, LPCTSTR pszType, const CMapStringToString& mapAttrToValue) const;
|
|
|
|
// 取得指定操作的SQL语句
|
|
BOOL GetAccessSQL(LPCTSTR pszAccess, CString& sSQL, CString& sFlags) const;
|
|
|
|
// 展开带参数的SQL语句
|
|
BOOL ExpandSQL(LPCTSTR pszSQLExpress, const CMapStringToString& mapVarToValue, CString& sSQL) const;
|
|
// 执行SQL语句
|
|
BOOL ExecuteSQL(LPCTSTR pszSQL, CStringArray& arsItems) const;
|
|
|
|
// 取得参数数据表字段与值对应数据
|
|
BOOL GetTableItemById(LPCTSTR pszSQLKey, ULONG lId, CMapStringToString& mapFieldToValue) const;
|
|
// 取得参数数据表字段数据属性信息
|
|
BOOL GetTableAttrItems(LPCTSTR pszTable, BOOL bOnlyVisible, KTParamTableAttrPtrArray& arpItems) const;
|
|
// 取得参数数据表字段数据属性信息
|
|
BOOL GetTableAttrItemByField(LPCTSTR pszTable, LPCTSTR pszFiled, KTParamTableAttr& data) const;
|
|
// 取得表中字段1和字段2数值对应数据
|
|
BOOL GetTableMapItems(LPCTSTR pszTable, LPCTSTR pszField1, LPCTSTR pszField2, CMapStringToString& mapItems) const;
|
|
// 取得表中指定字段的数据
|
|
BOOL GetTableFieldItems(LPCTSTR pszTable, LPCTSTR pszField, CStringArray& arsValue) const;
|
|
|
|
// 取得描述表中值和描述的对应数据
|
|
#define GetValueToDescMap(pszTable, mapValueToDesc) GetTableMapItems((pszTable), _T("Value"), _T("Desc"), (mapValueToDesc))
|
|
// 取得描述表中描述和值的对应数据
|
|
#define GetDescToValueMap(pszTable, mapDescToValue) GetTableMapItems((pszTable), _T("Desc"), _T("Value"), (mapDescToValue))
|
|
|
|
// 取得描述表中值和数据类型的对应数据
|
|
#define GetValueToTypeMap(pszTable, mapValueToDesc) GetTableMapItems((pszTable), _T("Value"), _T("DataType"), (mapValueToDesc))
|
|
// 取得描述表中数据类型和值的对应数据
|
|
#define GetTypeToValueMap(pszTable, mapDescToValue) GetTableMapItems((pszTable), _T("DataType"), _T("Value"), (mapDescToValue))
|
|
|
|
// 取得父类别为lParentId的所有子类别
|
|
BOOL GetSubClassItems(ULONG lParentId, KTParamClassArray& arItems) const;
|
|
// 根据Id取得类别数据
|
|
BOOL GetClassItemById(ULONG lId, KTParamClass& data) const;
|
|
// 根据Code取得类别数据
|
|
BOOL GetClassItemByCode(LPCTSTR pszCode, KTParamClass& data) const;
|
|
// 是否存在相同的类别Code
|
|
BOOL HasSameClassCode(LPCTSTR pszCode, ULONG lExceptId) const;
|
|
|
|
// 取得属性数据信息
|
|
BOOL GetAttributeItems(ULONG lClassId, KTParamAttributeArray& arItems) const;
|
|
BOOL GetAttributeItems(ULONG lClassId, KTParamAttributePtrArray& arpItems) const;
|
|
|
|
// 根据类别Id取得约束数据
|
|
BOOL GetRuleItems(ULONG lClassId, KTParamRuleArray& arItems) const;
|
|
BOOL GetRuleItems(ULONG lClassId, KTParamRulePtrArray& arpItems) const;
|
|
// 根据类别Id取得约束Id
|
|
BOOL GetRuleItemIds(ULONG lClassId, CStringArray& arsItemIds) const;
|
|
|
|
// 取得约束表达式数据
|
|
BOOL GetExpressionItems(ULONG lRuleId, KTParamExpressionArray& arItems) const;
|
|
// 取得约束表达式参数类型和参数映射
|
|
BOOL GetExpressionItemById(ULONG lRuleId, CMapStringToString& mapVarTypeToValue) const;
|
|
|
|
// 取得指定图形绘制类型的参数数据
|
|
BOOL GetCurveDrawTypeParam(LPCTSTR pszCurveTable, LPCTSTR pszCurveType, LPCTSTR pszDrawType, CMapStringToString& mapParamToDesc, BOOL bRev = FALSE, BOOL bDesc = TRUE) const;
|
|
|
|
// 更新类别数据
|
|
BOOL UpdateClassData(KTParamClass* pData);
|
|
// 更新属性数据
|
|
BOOL UpdateAttributeData(ULONG lClassId, KTParamAttributePtrArray& arpData);
|
|
// 更新约束数据
|
|
BOOL UpdateRuleData(ULONG lClassId, KTParamRulePtrArray& arpData);
|
|
// 更新表达式数据
|
|
BOOL UpdateExpressionData(ULONG lRuleId, KTParamExpressionArray& arpData);
|
|
|
|
// 删除类别数据
|
|
BOOL DeleteClassData(ULONG lId);
|
|
// 删除属性数据
|
|
BOOL DeleteAttributeData(ULONG lClassId);
|
|
// 删除约束数据
|
|
BOOL DeleteRuleData(ULONG lClassId);
|
|
// 删除表达式数据
|
|
BOOL DeleteExpressData(ULONG lRuleId);
|
|
|
|
protected:
|
|
BOOL CreateParamPart(AcDbVoidPtrArray& arpPart, CMapStringToString& mapDefaultValue, const CMapStringToString& mapAttrToValue, ULONG lId) const;
|
|
|
|
// Rule处理函数映射表
|
|
CMapStringToPtr m_mapRuleHandler;
|
|
// 指向参数化数据库的指针
|
|
CUIISQLiteServer* m_pParamDatabase;
|
|
};
|
|
|
|
#define KTParamServiceRegister() KTParamService::RegisterService()
|
|
#define KTParamServiceRemove() KTParamService::RemoveService()
|
|
|
|
#define KT_PARAM_SERVICE _T("KTParamPart")
|
|
#define GetKTParamService() KTParamService::cast(acrxServiceDictionary->at(KT_PARAM_SERVICE))
|
|
|
|
#endif // !defined(__KTPARAMSERVICE_H__)
|