#ifndef __HGPDTTOOLDBIMPL_H__ #define __HGPDTTOOLDBIMPL_H__ #include "base/HGDef.h" #include "base/HGBaseErr.h" #include "base/HGLock.h" #include "base/HGEvent.h" #include "base/HGThread.h" #include "HGPdtToolDb.h" #include "mysql.h" #include "curl/curl.h" #include #include class HGPdtToolDbUserMgrImpl { friend class HGPdtToolDbDeviceImpl; public: HGPdtToolDbUserMgrImpl(); ~HGPdtToolDbUserMgrImpl(); HGResult Create(const HGChar* host, HGUShort port, const HGChar* userName, const HGChar* pwd); HGResult Destroy(); HGResult GetUserStatus(HGUInt* userStatus); HGResult GetUserType(HGUInt* userType); HGResult GetUserName(HGChar* userName, HGUInt maxLen); HGResult RefuseUser(HGChar* userName); HGResult GetUserList(HGChar** userNameList, HGUInt maxLen, HGUInt *count); static HGResult ReleaseUserList(HGChar** userNameList, HGUInt count); HGResult CreateUser(const HGChar* userName, const HGChar* defPwd); HGResult DestroyUser(const HGChar* userName); HGResult SetPassword(const HGChar* userName, const HGChar* pwd); HGResult ModifyPassword(const HGChar* oldPwd, const HGChar* newPwd); HGResult UploadFile(const HGChar* tag, const HGChar* fileName); HGResult DownloadFile(const HGChar* tag, const HGChar* fileName); HGResult Export(const HGChar* xlsPath); HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen); HGResult SetConfig(const HGChar* key, const HGChar *value); HGResult GetEntryNameCnStr(const HGChar* entryName, HGChar* entryNameCnStr, HGUInt maxLen); HGResult SetEntryNameCnStr(const HGChar* entryName, const HGChar* entryNameCnStr); HGResult OpenDevice(const HGChar* sn, class HGPdtToolDbDeviceImpl **deviceImpl); private: void RemoveDevice(class HGPdtToolDbDeviceImpl* deviceImpl); static std::string GetPassword(MYSQL* sql, const HGChar* userName); static std::string GetAuthString(MYSQL* sql, const HGChar* pwd); static int GetConnectId(MYSQL* sql); static int SetUserLoginInfo(MYSQL* sql, const HGChar* userName, int connectId, const std::string& takeUserName); static int GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int &connectId, std::string &takeUserName); static HGUInt GetCols(MYSQL* sql, const HGChar *tableName, std::list &cols); int CreateFileTable(MYSQL* sql); int CreateEntryNameCnStrTable(MYSQL* sql); int CreateMainTestTable(MYSQL *sql); int CreateInspectionTable(MYSQL* sql, const HGChar* tableName); int InitMainTestItem(const HGChar *sn); int InitInspectionItem(const HGChar* tableName, const HGChar* sn); private: MYSQL* m_sql; std::string m_userName; int m_connectId; std::list m_deviceList; }; class HGPdtToolDbDeviceImpl { public: HGPdtToolDbDeviceImpl(class HGPdtToolDbUserMgrImpl* userMgr, const HGChar* sn); ~HGPdtToolDbDeviceImpl(); HGResult GetName(HGChar* name, HGUInt maxLen); HGResult SetName(const HGChar* name); HGResult GetType(HGChar* type, HGUInt maxLen); HGResult SetType(const HGChar* type); HGResult GetVersion(HGChar* version, HGUInt maxLen); HGResult SetVersion(const HGChar* version); HGResult GetEntryStatus(const HGChar* entryName, HGUInt* entryStatus); HGResult SetEntryStatus(const HGChar* entryName, HGUInt entryStatus); HGResult GetEntryExcepDesc(const HGChar* entryName, HGChar* excepDesc, HGUInt maxLen); HGResult SetEntryExcepDesc(const HGChar* entryName, const HGChar* excepDesc); HGResult DownloadEntryImage(const HGChar* entryName, const HGChar *ftpHost, HGUShort ftpPort, HGUInt index, const HGChar* fileName); HGResult GetEntryImageCount(const HGChar* entryName, HGUInt *count); HGResult ClearEntryImage(const HGChar* entryName); HGResult UploadEntryImage(const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar *fileName); private: HGResult GetProperty(const HGChar *prop, HGChar* str, HGUInt maxLen); HGResult SetProperty(const HGChar* prop, const HGChar* str); private: // FTP static HGResult UploadFile(const HGChar *host, HGUShort port, const HGChar* localPath, const HGChar *remotePath); static HGResult DownloadFile(const HGChar* host, HGUShort port, const HGChar* remotePath, const HGChar* localPath); private: class HGPdtToolDbUserMgrImpl* m_userMgr; std::string m_sn; }; #endif /* __HGPDTTOOLDBIMPL_H__ */