253 lines
8.8 KiB
C++
253 lines
8.8 KiB
C++
|
#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<int, vector<IOVersion*>*>& 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
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')";
|
||
|
vector<string>ins;
|
||
|
|
||
|
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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0,MachineTypeCfg::HBD_1000, HBD1000::IO_V0,"V0"));
|
||
|
cfg[MachineTypeCfg::HBD_1000] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1"));
|
||
|
cfg[MachineTypeCfg::HBD_1000] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2"));
|
||
|
cfg[MachineTypeCfg::HBD_1000] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3"));
|
||
|
cfg[MachineTypeCfg::HBD_1000] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion*>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4"));
|
||
|
cfg[MachineTypeCfg::HBD_1000] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0"));
|
||
|
cfg[MachineTypeCfg::HBD_1500] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0"));
|
||
|
cfg[MachineTypeCfg::HBD_1200_OLD] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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<IOVersion*>* iovs = new vector<IOVersion *>();
|
||
|
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0"));
|
||
|
cfg[MachineTypeCfg::HBD_1200] = iovs;
|
||
|
}
|
||
|
else {
|
||
|
vector<IOVersion*>* 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();
|
||
|
}
|
||
|
}
|