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