#include "MachineCfgDao.h" #include "../../utils/StringHelper.h" #include "../../utils/TimeHelper.h" #include #include "../ConfigManager.h" MachineCfgDao::MachineCfgDao(SQLite::Database* pdb) :BaseDao(pdb) { } MachineCfgDao::~MachineCfgDao() { } void MachineCfgDao::CreateTable() { if (!m_pDB->tableExists(MachineCfg::TABLE_NAME)) { char buffer[1024]; string createSql = "CREATE TABLE %s(%s VARCHAR(32) PRIMARY KEY,%s VARCHAR(50))"; sprintf_s(buffer, sizeof(buffer), createSql.c_str(), MachineCfg::TABLE_NAME.c_str(), MachineCfg::FIELD_CODE.c_str(), MachineCfg::FIELD_VALUE.c_str()); m_pDB->exec(buffer); } } void MachineCfgDao::Find(MachineCfg& mcfg) { Machine::InitMachineCfg(&mcfg); char buffer[1024]; string strsql = "SELECT %s,%s FROM %s"; string insertSql = "INSERT INTO " + MachineCfg::TABLE_NAME + "(" + MachineCfg::FIELD_CODE + "," + MachineCfg::FIELD_VALUE + ") VALUES('%s','%s')"; sprintf_s(buffer, sizeof(buffer), strsql.c_str(), MachineCfg::FIELD_CODE.c_str(), MachineCfg::FIELD_VALUE.c_str(), MachineCfg::TABLE_NAME.c_str()); SQLite::Statement query(*m_pDB, buffer); map values; vector ins; while (query.executeStep()) { values[query.getColumn(MachineCfg::FIELD_CODE.c_str()).getString()] = query.getColumn(MachineCfg::FIELD_VALUE.c_str()).getString(); } if (values.find(MachineCfg::CODE_SERIAL.c_str()) != values.end())mcfg.m_serial->SetValue(values[MachineCfg::CODE_SERIAL]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_SERIAL.c_str(), mcfg.m_serial->GetValueStr().c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_NAME.c_str()) != values.end())mcfg.m_Name->SetValue(values[MachineCfg::CODE_NAME]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_NAME.c_str(), mcfg.m_Name->GetValueStr().c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LANGUAGE.c_str()) != values.end())mcfg.m_language->SetValue(stoi(values[MachineCfg::CODE_LANGUAGE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LANGUAGE.c_str(), to_string(mcfg.m_language->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_MACHINE_TYPE.c_str()) != values.end())mcfg.m_MachineType->SetValue(stoi(values[MachineCfg::CODE_MACHINE_TYPE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_MACHINE_TYPE.c_str(), to_string(mcfg.m_MachineType->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_SCAN_CONTROL.c_str()) != values.end())mcfg.m_ScanControl->SetValue(stoi(values[MachineCfg::CODE_SCAN_CONTROL])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_SCAN_CONTROL.c_str(), to_string(mcfg.m_ScanControl->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_PULIFIER_TYPE.c_str()) != values.end())mcfg.m_PulifierType->SetValue(stoi(values[MachineCfg::CODE_PULIFIER_TYPE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_PULIFIER_TYPE.c_str(), to_string(mcfg.m_PulifierType->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_FONT_SIZE.c_str()) != values.end())mcfg.m_fontSize->SetValue(stof(values[MachineCfg::CODE_FONT_SIZE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_FONT_SIZE.c_str(), to_string(mcfg.m_fontSize->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_FONT_SCALE.c_str()) != values.end())mcfg.m_fontScale->SetValue(stof(values[MachineCfg::CODE_FONT_SCALE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_FONT_SCALE.c_str(), to_string(mcfg.m_fontScale->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LAST_START_TIME.c_str()) != values.end())mcfg.m_lastStartTime->SetValue(stoll(values[MachineCfg::CODE_LAST_START_TIME])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LAST_START_TIME.c_str(), to_string(mcfg.m_lastStartTime->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LAST_SHUTDOWN_TIME.c_str()) != values.end())mcfg.m_lastShutdownTime->SetValue(stoll(values[MachineCfg::CODE_LAST_SHUTDOWN_TIME])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LAST_SHUTDOWN_TIME.c_str(), to_string(mcfg.m_lastShutdownTime->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LOCK_PASSWORD.c_str()) != values.end())mcfg.m_LockPassword->SetValue(values[MachineCfg::CODE_LOCK_PASSWORD]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LOCK_PASSWORD.c_str(), mcfg.m_LockPassword->GetValueStr().c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LOCK_ALPHA.c_str()) != values.end())mcfg.m_LockAlpha->SetValue(stof(values[MachineCfg::CODE_LOCK_ALPHA])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LOCK_ALPHA.c_str(), to_string(mcfg.m_LockAlpha->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LOCK_IDLE_TIME.c_str()) != values.end())mcfg.m_LockIdleTime->SetValue(stoi(values[MachineCfg::CODE_LOCK_IDLE_TIME])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LOCK_IDLE_TIME.c_str(), to_string(mcfg.m_LockIdleTime->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_EXPIRED_TIME.c_str()) != values.end())mcfg.m_ExpriedTime->SetValue(stoul(values[MachineCfg::CODE_EXPIRED_TIME])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_EXPIRED_TIME.c_str(), to_string(mcfg.m_ExpriedTime->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_CONNECT_PASSWORD.c_str()) != values.end())mcfg.m_ConnectPassword->SetValue(values[MachineCfg::CODE_CONNECT_PASSWORD]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_CONNECT_PASSWORD.c_str(), mcfg.m_ConnectPassword->GetValueStr().c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_LOCATION.c_str()) != values.end())mcfg.m_Location->SetValue(values[MachineCfg::CODE_LOCATION]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_LOCATION.c_str(), mcfg.m_Location->GetValueStr().c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_SHAPE.c_str()) != values.end())mcfg.m_PlatformShape->SetValue(stoi(values[MachineCfg::CODE_SHAPE])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_SHAPE.c_str(), to_string(mcfg.m_PlatformShape->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_SUPPORT_NON_ENC_MAGIC.c_str()) != values.end())mcfg.m_SupportNonEncMagic->SetValue(stoi(values[MachineCfg::CODE_SUPPORT_NON_ENC_MAGIC]) > 0 ? true : false); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_SUPPORT_NON_ENC_MAGIC.c_str(), to_string(mcfg.m_SupportNonEncMagic->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_PRINT_STRATEGY.c_str()) != values.end())mcfg.m_PrintStrategy->SetValue(MachineCfg::PrintStrategy(stoi(values[MachineCfg::CODE_PRINT_STRATEGY]))); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_PRINT_STRATEGY.c_str(), to_string(mcfg.m_PrintStrategy->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_PLATFORM_WIDTH.c_str()) != values.end())mcfg.m_PlatformWidth->SetValue(stoi(values[MachineCfg::CODE_PLATFORM_WIDTH])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_PLATFORM_WIDTH.c_str(), to_string(mcfg.m_PlatformWidth->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_PLATFORM_LENGTH.c_str()) != values.end())mcfg.m_PlatformLength->SetValue(stoi(values[MachineCfg::CODE_PLATFORM_LENGTH])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_PLATFORM_LENGTH.c_str(), to_string(mcfg.m_PlatformLength->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_IS_INTELLI.c_str()) != values.end())mcfg.m_IsIntelli->SetValue(stoi(values[MachineCfg::CODE_IS_INTELLI]) > 0 ? true : false); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_IS_INTELLI.c_str(), mcfg.m_IsIntelli->GetValue() ? "1" : "0"); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_IO_VERSION.c_str()) != values.end())mcfg.m_IOVersion->SetValue(stoi(values[MachineCfg::CODE_IO_VERSION])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_IO_VERSION.c_str(), to_string(mcfg.m_IOVersion->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_SUPPLY_MACHINE_VERSION.c_str()) != values.end())mcfg.m_SupplyMachineVersion->SetValue(stoi(values[MachineCfg::CODE_SUPPLY_MACHINE_VERSION])); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_SUPPLY_MACHINE_VERSION.c_str(), to_string(mcfg.m_SupplyMachineVersion->GetValue()).c_str()); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_USE_TOUCH_SCREEN.c_str()) != values.end())mcfg.m_UseTouchScreen->SetValue(stoi(values[MachineCfg::CODE_USE_TOUCH_SCREEN]) > 0 ? true : false); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_USE_TOUCH_SCREEN.c_str(), mcfg.m_UseTouchScreen->GetValue() ? "1" : "0"); ins.push_back(buffer); } if (values.find(MachineCfg::CODE_MACHINE_CODE.c_str()) != values.end()) mcfg.m_MachineCode->SetValue(values[MachineCfg::CODE_MACHINE_CODE]); else { sprintf_s(buffer, sizeof(buffer), insertSql.c_str(), MachineCfg::CODE_MACHINE_CODE.c_str(), mcfg.m_MachineCode->GetValueStr().c_str()); ins.push_back(buffer); } mcfg.m_MachineCodeAss->SetValue(mcfg.m_MachineCode->GetValueStr()); if (!ins.empty()) { SQLite::Transaction transaction(*m_pDB); for (size_t insIndex = 0; insIndex < ins.size(); insIndex++) { m_pDB->exec(ins[insIndex]); } transaction.commit(); } } void MachineCfgDao::Save(MachineCfg& mcfg) { vector ups; mcfg.GetUpdateSql(ups); for (size_t i = 0; i < ups.size(); ++i) { m_pDB->exec(ups[i]); } } void MachineCfgDao::Export(MachineCfg& mcfg, stringstream& sql) { vector ups; mcfg.GetUpdateSql(ups); for (size_t i = 0; i < ups.size(); ++i) { sql << ups[i] << "\n"; } }