diff --git a/sdk/webservice/ManagerV2.cpp b/sdk/webservice/ManagerV2.cpp index 340e746d..099eb4b2 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -94,7 +94,22 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - ret = sqlite3_exec(m_sqlite, "create table 'table_default' (id integer primary key autoincrement, idx integer, format text, tag text, image blob, thumb blob)", NULL, NULL, NULL); + do + { + ret = sqlite3_exec(m_sqlite, "create table 'table_default' (id integer primary key autoincrement, format text, tag text, image blob, thumb blob)", NULL, NULL, NULL); + if (0 != ret) + break; + + ret = sqlite3_exec(m_sqlite, "create table 'table_default_idx' (id integer, idx integer)", NULL, NULL, NULL); + if (0 != ret) + break; + + ret = sqlite3_exec(m_sqlite, "insert into table_ (name) values ('default')", NULL, NULL, NULL); + if (0 != ret) + break; + + } while (0); + if (0 != ret) { ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); @@ -102,17 +117,8 @@ namespace ver_2 } else { - ret = sqlite3_exec(m_sqlite, "insert into table_ (name) values ('default')", NULL, NULL, NULL); - if (0 != ret) - { - ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); - assert(0 == ret); - } - else - { - ret = sqlite3_exec(m_sqlite, "commit", NULL, NULL, NULL); - assert(0 == ret); - } + ret = sqlite3_exec(m_sqlite, "commit", NULL, NULL, NULL); + assert(0 == ret); } } @@ -120,8 +126,8 @@ namespace ver_2 ret = sqlite3_prepare(m_sqlite, "select name from table_ order by id desc", -1, &stmt, NULL); assert(0 == ret); ret = sqlite3_step(stmt); - assert(SQLITE_ROW == ret); - m_currBatchId = (const char*)sqlite3_column_text(stmt, 0); + if (SQLITE_ROW == ret) + m_currBatchId = (const char*)sqlite3_column_text(stmt, 0); ret = sqlite3_finalize(stmt); assert(0 == ret); } @@ -1367,6 +1373,15 @@ namespace ver_2 int ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); + sprintf(sql, "drop table 'table_%s_idx'", batchId.c_str()); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); + assert(0 == ret); + return -1; + } + sprintf(sql, "drop table 'table_%s'", batchId.c_str()); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -1405,7 +1420,16 @@ namespace ver_2 int ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - sprintf(sql, "create table 'table_%s' (id integer primary key autoincrement, idx integer, format text, tag text, image blob, thumb blob)", batchId.c_str()); + sprintf(sql, "create table 'table_%s' (id integer primary key autoincrement, format text, tag text, image blob, thumb blob)", batchId.c_str()); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); + assert(0 == ret); + return -1; + } + + sprintf(sql, "create table 'table_%s_idx' (id integer, idx integer)", batchId.c_str()); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) { @@ -1472,6 +1496,15 @@ namespace ver_2 return -1; } + sprintf(sql, "alter table 'table_%s_idx' rename to 'table_%s_idx'", batchId.c_str(), newBatchId.c_str()); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); + assert(0 == ret); + return -1; + } + sprintf(sql, "update table_ set name = '%s' where name = '%s'", newBatchId.c_str(), batchId.c_str()); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -1546,7 +1579,8 @@ namespace ver_2 sqlite3_stmt* stmt = NULL; char sql[256]; - sprintf(sql, "select format, tag, thumb from 'table_%s' order by idx asc", m_currBatchId.c_str()); + sprintf(sql, "select format, tag, thumb from table_%s join table_%s_idx on table_%s.id == table_%s_idx.id order by table_%s_idx.idx asc", + m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str()); int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); @@ -1600,7 +1634,7 @@ namespace ver_2 char** result = NULL; char sql[256]; - sprintf(sql, "select id from 'table_%s'", m_currBatchId.c_str()); + sprintf(sql, "select id from 'table_%s_idx'", m_currBatchId.c_str()); int rows, cols; int ret = sqlite3_get_table(m_sqlite, sql, &result, &rows, &cols, NULL); assert(0 == ret); @@ -1621,11 +1655,15 @@ namespace ver_2 if (NULL == m_sqlite) return -1; + int id = GetId(imageIndex); + if (-1 == id) + return -1; + int rc = -1; sqlite3_stmt* stmt = NULL; char sql[256]; - sprintf(sql, "select format, tag, image from 'table_%s' where idx = %d", m_currBatchId.c_str(), imageIndex); + sprintf(sql, "select format, tag, image from 'table_%s' where id = '%d'", m_currBatchId.c_str(), id); int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); ret = sqlite3_step(stmt); @@ -1673,11 +1711,15 @@ namespace ver_2 if (NULL == m_sqlite) return -1; + int id = GetId(imageIndex); + if (-1 == id) + return -1; + int rc = -1; sqlite3_stmt* stmt = NULL; char sql[256]; - sprintf(sql, "select format, image from 'table_%s' where idx = %d", m_currBatchId.c_str(), imageIndex); + sprintf(sql, "select format, image from 'table_%s' where id = '%d'", m_currBatchId.c_str(), id); int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); ret = sqlite3_step(stmt); @@ -1746,42 +1788,56 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - bool ok = true; - for (int i = 0; i < (int)tables.size(); ++i) + do { - if (i >= insertPos) + sprintf(sql, "insert into 'table_%s' (format, tag, image, thumb) values ('%s', '%s', ?, ?)", m_currBatchId.c_str(), + imgFormat.c_str(), imageTag.c_str()); + sqlite3_stmt* stmt = NULL; + ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); + assert(0 == ret); + ret = sqlite3_bind_blob(stmt, 1, imgData, (int)imgSize, NULL); + assert(0 == ret); + ret = sqlite3_bind_blob(stmt, 2, thumbData, (int)thumbSize, NULL); + assert(0 == ret); + sqlite3_step(stmt); + ret = sqlite3_finalize(stmt); + if (0 != ret) { - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", - m_currBatchId.c_str(), i + 1, tables[i].id); - ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); - if (0 != ret) + break; + } + + bool ok = true; + for (int i = 0; i < (int)tables.size(); ++i) + { + if (i >= insertPos) { - ok = false; - break; + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", + m_currBatchId.c_str(), i + 1, tables[i].id); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ok = false; + break; + } } } - } - if (!ok) - { - ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); - assert(0 == ret); - delete[] thumbData; - delete[] imgData; - return -1; - } + if (!ok) + { + break; + } + + int id = (int)sqlite3_last_insert_rowid(m_sqlite); + sprintf(sql, "insert into 'table_%s_idx' (id, idx) values ('%d', '%d')", m_currBatchId.c_str(), + id, insertPos); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + break; + } + + } while (0); - sprintf(sql, "insert into 'table_%s' (idx, format, tag, image, thumb) values ('%d', '%s', '%s', ?, ?)", m_currBatchId.c_str(), - insertPos, imgFormat.c_str(), imageTag.c_str()); - sqlite3_stmt* stmt = NULL; - ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); - assert(0 == ret); - ret = sqlite3_bind_blob(stmt, 1, imgData, (int)imgSize, NULL); - assert(0 == ret); - ret = sqlite3_bind_blob(stmt, 2, thumbData, (int)thumbSize, NULL); - assert(0 == ret); - sqlite3_step(stmt); - ret = sqlite3_finalize(stmt); if (0 != ret) { ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); @@ -1844,42 +1900,56 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - bool ok = true; - for (int i = 0; i < (int)tables.size(); ++i) + do { - if (i >= insertPos) + sprintf(sql, "insert into 'table_%s' (format, tag, image, thumb) values ('%s', '%s', ?, ?)", m_currBatchId.c_str(), + imgFormat.c_str(), imageTag.c_str()); + sqlite3_stmt* stmt = NULL; + ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); + assert(0 == ret); + ret = sqlite3_bind_blob(stmt, 1, imgData, (int)imgSize, NULL); + assert(0 == ret); + ret = sqlite3_bind_blob(stmt, 2, thumbData, (int)thumbSize, NULL); + assert(0 == ret); + sqlite3_step(stmt); + ret = sqlite3_finalize(stmt); + if (0 != ret) { - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", - m_currBatchId.c_str(), i + 1, tables[i].id); - ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); - if (0 != ret) + break; + } + + bool ok = true; + for (int i = 0; i < (int)tables.size(); ++i) + { + if (i >= insertPos) { - ok = false; - break; + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", + m_currBatchId.c_str(), i + 1, tables[i].id); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ok = false; + break; + } } } - } - if (!ok) - { - ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); - assert(0 == ret); - delete[] thumbData; - delete[] imgData; - return -1; - } + if (!ok) + { + break; + } + + int id = (int)sqlite3_last_insert_rowid(m_sqlite); + sprintf(sql, "insert into 'table_%s_idx' (id, idx) values ('%d', '%d')", m_currBatchId.c_str(), + id, insertPos); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + break; + } + + } while (0); - sprintf(sql, "insert into 'table_%s' (idx, format, tag, image, thumb) values ('%d', '%s', '%s', ?, ?)", m_currBatchId.c_str(), - insertPos, imgFormat.c_str(), imageTag.c_str()); - sqlite3_stmt* stmt = NULL; - ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); - assert(0 == ret); - ret = sqlite3_bind_blob(stmt, 1, imgData, (int)imgSize, NULL); - assert(0 == ret); - ret = sqlite3_bind_blob(stmt, 2, thumbData, (int)thumbSize, NULL); - assert(0 == ret); - sqlite3_step(stmt); - ret = sqlite3_finalize(stmt); if (0 != ret) { ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); @@ -1936,8 +2006,9 @@ namespace ver_2 bool ok = true; for (int i = 0; i < (int)imageIndexList.size(); ++i) { - sprintf(sql, "update 'table_%s' set tag = '%s' where idx = '%d'", m_currBatchId.c_str(), - imageTagList[i].c_str(), imageIndexList[i]); + int id = tables[imageIndexList[i]].id; + sprintf(sql, "update 'table_%s' set tag = '%s' where id = '%d'", + m_currBatchId.c_str(), imageTagList[i].c_str(), id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) { @@ -1992,7 +2063,17 @@ namespace ver_2 bool ok = true; for (int i = 0; i < (int)imageIndexList.size(); ++i) { - sprintf(sql, "delete from 'table_%s' where idx = '%d'", m_currBatchId.c_str(), imageIndexList[i]); + int id = tables[imageIndexList[i]].id; + + sprintf(sql, "delete from 'table_%s' where id = '%d'", m_currBatchId.c_str(), id); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ok = false; + break; + } + + sprintf(sql, "delete from 'table_%s_idx' where id = '%d'", m_currBatchId.c_str(), id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) { @@ -2029,7 +2110,7 @@ namespace ver_2 { if (value > 0) { - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", m_currBatchId.c_str(), i - value, tables[i].id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -2083,6 +2164,15 @@ namespace ver_2 return -1; } + sprintf(sql, "delete from 'table_%s_idx'", m_currBatchId.c_str()); + ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); + if (0 != ret) + { + ret = sqlite3_exec(m_sqlite, "rollback", NULL, NULL, NULL); + assert(0 == ret); + return -1; + } + ret = sqlite3_exec(m_sqlite, "commit", NULL, NULL, NULL); assert(0 == ret); @@ -2132,8 +2222,9 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - sprintf(sql, "update 'table_%s' set format = '%s', image = ?, thumb = ? where idx = '%d'", - m_currBatchId.c_str(), imgFormat.c_str(), imageIndex); + int id = tables[imageIndex].id; + sprintf(sql, "update 'table_%s' set format = '%s', image = ?, thumb = ? where id = '%d'", + m_currBatchId.c_str(), imgFormat.c_str(), id); sqlite3_stmt* stmt = NULL; ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); @@ -2203,8 +2294,9 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - sprintf(sql, "update 'table_%s' set format = '%s', image = ?, thumb = ? where idx = '%d'", - m_currBatchId.c_str(), imgFormat.c_str(), imageIndex); + int id = tables[imageIndex].id; + sprintf(sql, "update 'table_%s' set format = '%s', image = ?, thumb = ? where id = '%d'", + m_currBatchId.c_str(), imgFormat.c_str(), id); sqlite3_stmt* stmt = NULL; ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); @@ -2249,6 +2341,7 @@ namespace ver_2 std::vector tables; GetBatchTableInfo(tables); + std::vector tables2 = tables; if (tables.empty()) return -1; @@ -2260,7 +2353,7 @@ namespace ver_2 bool indexValid = true; for (int i = 0; i < (int)imageIndexList.size(); ++i) { - if (imageIndexList[i] >= (int)tables.size()) + if (imageIndexList[i] < 0 || imageIndexList[i] >= (int)tables.size()) { indexValid = false; break; @@ -2270,15 +2363,22 @@ namespace ver_2 if (!indexValid) return -1; + std::vector idList; + for (int i = 0; i < (int)imageIndexList.size(); ++i) + { + int id = tables[imageIndexList[i]].id; + idList.push_back(id); + } + if ("pos" == mode) { int posEx = target; - for (int i = 0; i < (int)imageIndexList.size(); ++i) + for (int i = 0; i < (int)idList.size(); ++i) { int oldIndex = -1; for (int j = 0; j < (int)tables.size(); ++j) { - if (imageIndexList[i] == tables[j].idx) + if (idList[i] == tables[j].id) { oldIndex = j; break; @@ -2303,12 +2403,12 @@ namespace ver_2 else { std::vector infos; - for (int i = 0; i < (int)imageIndexList.size(); ++i) + for (int i = 0; i < (int)idList.size(); ++i) { int oldIndex = -1; for (int j = 0; j < (int)tables.size(); ++j) { - if (imageIndexList[i] == tables[j].idx) + if (idList[i] == tables[j].id) { oldIndex = j; break; @@ -2349,7 +2449,7 @@ namespace ver_2 bool ok = true; for (int i = 0; i < (int)tables.size(); ++i) { - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", m_currBatchId.c_str(), i, tables[i].id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -2371,7 +2471,7 @@ namespace ver_2 if (!m_bindFolder.empty()) { - ClearBindFolderImageList(tables); + ClearBindFolderImageList(tables2); UpdateBindFolder(); } @@ -2389,7 +2489,8 @@ namespace ver_2 std::vector tables; GetBatchTableInfo(tables); - if (imageIndex1 >= (int)tables.size() || imageIndex2 >= (int)tables.size()) + if (imageIndex1 < 0 || imageIndex1 >= (int)tables.size() + || imageIndex2 < 0 || imageIndex2 >= (int)tables.size()) return -1; int ret; @@ -2398,7 +2499,7 @@ namespace ver_2 ret = sqlite3_exec(m_sqlite, "begin", NULL, NULL, NULL); assert(0 == ret); - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", m_currBatchId.c_str(), imageIndex2, tables[imageIndex1].id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -2408,7 +2509,7 @@ namespace ver_2 return -1; } - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", m_currBatchId.c_str(), imageIndex1, tables[imageIndex2].id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -2439,6 +2540,7 @@ namespace ver_2 std::vector tables; GetBatchTableInfo(tables); + std::vector tables2 = tables; std::list infos1, infos2; for (int i = 0; i < (int)tables.size(); ++i) @@ -2466,7 +2568,7 @@ namespace ver_2 bool ok = true; for (int i = 0; i < (int)tables.size(); ++i) { - sprintf(sql, "update 'table_%s' set idx = '%d' where id = '%d'", + sprintf(sql, "update 'table_%s_idx' set idx = '%d' where id = '%d'", m_currBatchId.c_str(), i, tables[i].id); ret = sqlite3_exec(m_sqlite, sql, NULL, NULL, NULL); if (0 != ret) @@ -2488,7 +2590,7 @@ namespace ver_2 if (!m_bindFolder.empty()) { - ClearBindFolderImageList(tables); + ClearBindFolderImageList(tables2); UpdateBindFolder(); } @@ -3473,13 +3575,33 @@ namespace ver_2 return ret; } + int ManagerV2::GetId(int idx) + { + int id = -1; + + char sql[1024]; + sprintf(sql, "select id from 'table_%s_idx' where idx = '%d'", m_currBatchId.c_str(), idx); + sqlite3_stmt* stmt = NULL; + int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); + assert(0 == ret); + ret = sqlite3_step(stmt); + if (SQLITE_ROW == ret) + id = sqlite3_column_int(stmt, 0); + ret = sqlite3_finalize(stmt); + assert(0 == ret); + + return id; + } + void ManagerV2::GetBatchTableInfo(std::vector& tables) { tables.clear(); sqlite3_stmt* stmt = NULL; char sql[256]; - sprintf(sql, "select id, idx, format from 'table_%s' order by idx asc", m_currBatchId.c_str()); + sprintf(sql, "select table_%s.id, table_%s.format from table_%s join table_%s_idx on table_%s.id == table_%s_idx.id order by table_%s_idx.idx asc", + m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), + m_currBatchId.c_str(), m_currBatchId.c_str()); int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); @@ -3488,8 +3610,7 @@ namespace ver_2 { BatchTableInfo info; info.id = sqlite3_column_int(stmt, 0); - info.idx = sqlite3_column_int(stmt, 1); - info.format = (const char *)sqlite3_column_text(stmt, 2); + info.format = (const char *)sqlite3_column_text(stmt, 1); tables.push_back(info); ret = sqlite3_step(stmt); @@ -3554,8 +3675,10 @@ namespace ver_2 return; sqlite3_stmt* stmt = NULL; - char sql[256]; - sprintf(sql, "select idx, format, image from 'table_%s'", m_currBatchId.c_str()); + char sql[1024]; + sprintf(sql, "select table_%s_idx.idx, table_%s.format, table_%s.image from table_%s join table_%s_idx on table_%s.id == table_%s_idx.id", + m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), m_currBatchId.c_str(), + m_currBatchId.c_str(), m_currBatchId.c_str()); int ret = sqlite3_prepare(m_sqlite, sql, -1, &stmt, NULL); assert(0 == ret); @@ -3591,12 +3714,12 @@ namespace ver_2 for (int i = (int)tables.size() - 1; i >= 0; --i) { - if (tables[i].idx >= insertPos) + if (i >= insertPos) { char fileName[256]; - sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[i].idx, tables[i].format.c_str()); + sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + i, tables[i].format.c_str()); char destName[256]; - sprintf(destName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[i].idx + 1, tables[i].format.c_str()); + sprintf(destName, fmt, m_bindFolder.c_str(), m_bindNameBase + i + 1, tables[i].format.c_str()); #if defined(HG_CMP_MSC) MoveFileA(fileName, destName); #else @@ -3617,16 +3740,7 @@ namespace ver_2 char fmt[24]; sprintf(fmt, "%%s%%0%dd.%%s", m_bindNameWidth); - - std::string oldFormat; - for (int i = 0; i < (int)tables.size(); ++i) - { - if (tables[i].idx == imageIndex) - { - oldFormat = tables[i].format; - break; - } - } + std::string oldFormat = tables[imageIndex].format; char oldFileName[256]; sprintf(oldFileName, fmt, m_bindFolder.c_str(), m_bindNameBase + imageIndex, oldFormat.c_str()); @@ -3646,16 +3760,11 @@ namespace ver_2 for (int i = 0; i < (int)imageIndexList.size(); ++i) { - for (int j = 0; j < (int)tables.size(); ++j) - { - if (tables[j].idx == imageIndexList[i]) - { - char fileName[256]; - sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[j].idx, tables[j].format.c_str()); - HGBase_DeleteFile(fileName); - break; - } - } + int idx = imageIndexList[i]; + + char fileName[256]; + sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + idx, tables[idx].format.c_str()); + HGBase_DeleteFile(fileName); } int value = 0; @@ -3664,7 +3773,7 @@ namespace ver_2 bool find = false; for (int j = 0; j < (int)imageIndexList.size(); ++j) { - if (tables[i].idx == imageIndexList[j]) + if (i == imageIndexList[j]) { find = true; break; @@ -3680,9 +3789,9 @@ namespace ver_2 if (value > 0) { char fileName[256]; - sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[i].idx, tables[i].format.c_str()); + sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + i, tables[i].format.c_str()); char destName[256]; - sprintf(destName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[i].idx - value, tables[i].format.c_str()); + sprintf(destName, fmt, m_bindFolder.c_str(), m_bindNameBase + i - value, tables[i].format.c_str()); #if defined(HG_CMP_MSC) MoveFileA(fileName, destName); #else @@ -3700,15 +3809,8 @@ namespace ver_2 char fmt[24]; sprintf(fmt, "%%s%%0%dd.%%s", m_bindNameWidth); - std::string format1, format2; - - for (int i = 0; i < (int)tables.size(); ++i) - { - if (tables[i].idx == imageIndex1) - format1 = tables[i].format; - else if (tables[i].idx == imageIndex2) - format2 = tables[i].format; - } + std::string format1 = tables[imageIndex1].format; + std::string format2 = tables[imageIndex2].format; char fileName1[256]; sprintf(fileName1, fmt, m_bindFolder.c_str(), m_bindNameBase + imageIndex1, format1.c_str()); @@ -3749,7 +3851,7 @@ namespace ver_2 for (int i = 0; i < (int)tables.size(); ++i) { char fileName[256]; - sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + tables[i].idx, tables[i].format.c_str()); + sprintf(fileName, fmt, m_bindFolder.c_str(), m_bindNameBase + i, tables[i].format.c_str()); HGBase_DeleteFile(fileName); } } diff --git a/sdk/webservice/ManagerV2.h b/sdk/webservice/ManagerV2.h index fd75ff92..7f1f6ab0 100644 --- a/sdk/webservice/ManagerV2.h +++ b/sdk/webservice/ManagerV2.h @@ -101,7 +101,6 @@ namespace ver_2 struct BatchTableInfo { int id; - int idx; std::string format; }; @@ -281,6 +280,7 @@ namespace ver_2 static HGByte* LoadThumbFromBase64(const std::string& imageBase64, HGUInt& size); static bool SaveToBase64(const HGByte* data, HGUInt size, std::string& base64); static bool SaveToFile(const HGByte* data, HGUInt size, const std::string &filePath); + int GetId(int idx); void GetBatchTableInfo(std::vector& tables); void ClearBindFolder(); void UpdateBindFolder();