#include "IOVersionDao.h" #include "../bean/SystemBase.h" #include "../../Machine/HBD1000.h" #include "../../Machine/HBD1500.h" #include "../../Machine/HBD1200OLD.h" #include "../../Machine/HBD1200.h" IOVersionDao::IOVersionDao(SQLite::Database* pdb) :BaseDao(pdb) { } IOVersionDao::~IOVersionDao() { } void IOVersionDao::CreateTable() { if (m_pDB->tableExists(IOVersion::TABLE_NAME))return; char buffer[1024]; string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY AUTOINCREMENT,%s INTEGER,%s INTEGER,%s TEXT)"; sprintf_s(buffer, sizeof(buffer), createsql.c_str(), IOVersion::TABLE_NAME.c_str(), IOVersion::FIELD_ID.c_str(), IOVersion::FIELD_MACHINE_ID.c_str(), IOVersion::FIELD_VERSION_ID.c_str(), IOVersion::FIELD_VERSION_CODE.c_str() ); m_pDB->exec(buffer); } void IOVersionDao::Find(map*>& cfg) { char buffer[1024]; string selectStr = "SELECT * FROM %s ORDER BY %s,%s"; sprintf_s(buffer, sizeof(buffer), selectStr.c_str(),IOVersion::TABLE_NAME.c_str(), IOVersion::FIELD_MACHINE_ID.c_str(),IOVersion::FIELD_VERSION_ID.c_str()); SQLite::Statement query(*m_pDB, buffer); while (query.executeStep()) { int id = query.getColumn(IOVersion::FIELD_ID.c_str()).getInt(); int mid = query.getColumn(IOVersion::FIELD_MACHINE_ID.c_str()).getInt(); int vid = query.getColumn(IOVersion::FIELD_VERSION_ID.c_str()).getInt(); string vcode = query.getColumn(IOVersion::FIELD_VERSION_CODE.c_str()).getString(); IOVersion* iov = new IOVersion(id,mid,vid,vcode); if (cfg.find(mid) == cfg.end()) { vector* iovs = new vector(); iovs->push_back(iov); cfg[mid] = iovs; } else { cfg[mid]->push_back(iov); } } string strhead = "INSERT INTO %s (%s,%s,%s) VALUES("; sprintf_s(buffer, sizeof(buffer), strhead.c_str(), IOVersion::TABLE_NAME.c_str(), IOVersion::FIELD_MACHINE_ID.c_str(),IOVersion::FIELD_VERSION_ID.c_str(),IOVersion::FIELD_VERSION_CODE.c_str()); string strin = string(buffer) + "%d,%d,'%s')"; vectorins; if (cfg.find(MachineTypeCfg::HBD_1000)==cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V0,"V0"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0,MachineTypeCfg::HBD_1000, HBD1000::IO_V0,"V0")); cfg[MachineTypeCfg::HBD_1000] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1000]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId== HBD1000::IO_V0) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V0, "V0"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V0, "V0")); } } if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1")); cfg[MachineTypeCfg::HBD_1000] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1000]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1000::IO_V1) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1")); } } if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2")); cfg[MachineTypeCfg::HBD_1000] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1000]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1000::IO_V2) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2")); } } if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3")); cfg[MachineTypeCfg::HBD_1000] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1000]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1000::IO_V3) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3")); } } if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4")); cfg[MachineTypeCfg::HBD_1000] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1000]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1000::IO_V4) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4")); } } if (cfg.find(MachineTypeCfg::HBD_1500) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0")); cfg[MachineTypeCfg::HBD_1500] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1500]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1500::IO_V0) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0")); } } if (cfg.find(MachineTypeCfg::HBD_1200_OLD) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0")); cfg[MachineTypeCfg::HBD_1200_OLD] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1200_OLD]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1200OLD::IO_V0) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0")); } } if (cfg.find(MachineTypeCfg::HBD_1200) == cfg.end()) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0"); ins.push_back(buffer); vector* iovs = new vector(); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0")); cfg[MachineTypeCfg::HBD_1200] = iovs; } else { vector* iovs = cfg[MachineTypeCfg::HBD_1200]; bool isfind = false; for (size_t i = 0; i < iovs->size(); i++) { IOVersion* iov = (*iovs)[i]; if (iov->m_VersionId == HBD1200::IO_V0) { isfind = true; } } if (!isfind) { sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0"); ins.push_back(buffer); iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0")); } } if (!ins.empty()) { SQLite::Transaction transaction(*m_pDB); for (size_t insIndex = 0; insIndex < ins.size(); insIndex++) { m_pDB->exec(ins[insIndex]); } transaction.commit(); } }