code_production/db/HGPdtToolDb/HGPdtToolDbImpl.hpp

117 lines
4.5 KiB
C++

#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 <string>
#include <list>
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 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);
int CreateFileTable(MYSQL* sql);
int CreateMainTestTable(MYSQL *sql);
// init tables
int CreateInitInspTestTable(MYSQL* sql);
int CreateInitInspDescTable(MYSQL* sql);
int CreateInitInspImageTable(MYSQL* sql);
// image tables
int CreateImgInspTestTable(MYSQL* sql);
int CreateImgInspDescTable(MYSQL* sql);
int CreateImgInspImageTable(MYSQL* sql);
// pre tables
int CreatePreInspTestTable(MYSQL* sql);
int CreatePreInspDescTable(MYSQL* sql);
int CreatePreInspImageTable(MYSQL* sql);
int InitMainTestItem(const HGChar *sn);
int InitInspTestItem(const HGChar* tableName, const HGChar* sn);
private:
MYSQL* m_sql;
std::string m_userName;
int m_connectId;
std::list<class HGPdtToolDbDeviceImpl*> 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 GetCurrEntry(HGUInt* entryName);
HGResult SetCurrEntry(HGUInt entryName);
HGResult GetEntryStatus(HGUInt entryName, HGUInt* entryStatus);
HGResult SetEntryStatus(HGUInt entryName, HGUInt entryStatus);
HGResult GetEntryExcepDesc(HGUInt entryName, HGChar* excepDesc, HGUInt maxLen);
HGResult SetEntryExcepDesc(HGUInt entryName, const HGChar* excepDesc);
HGResult DownloadEntryImage(HGUInt entryName, const HGChar *ftpHost, HGUShort ftpPort, const HGChar* fileName);
HGResult CheckEntryImage(HGUInt entryName);
HGResult UploadEntryImage(HGUInt 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);
const HGChar* GetEntryNameStr(HGUInt entryName);
const HGChar* GetTestTableName(HGUInt entryName);
const HGChar* GetDescTableName(HGUInt entryName);
const HGChar* GetImageTableName(HGUInt entryName);
HGResult GetEntryImageRemotePath(const HGChar *tableName, const HGChar *entryNameStr, std::string &remotePath);
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__ */