Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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__)