| 1271 | } |
| 1272 | |
| 1273 | bool sqliteOperation::insertRoads(hadmap::tx_road_vec& roads) { |
| 1274 | char sql[1024]; |
| 1275 | sprintf( |
| 1276 | sql, |
| 1277 | "INSERT INTO '%s' (pkid, task_pkid, id, name, srs, junction_pkid, ground, section_num, road_type, direction, \ |
| 1278 | toll, func_class, urban, paved, transition_type, lane_mark, material, geom) \ |
| 1279 | VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 1280 | ROAD_TABLE); |
| 1281 | |
| 1282 | sqliteStmtPtr stmt(dbPtr, sql); |
| 1283 | if (!stmt.status()) { |
| 1284 | std::cerr << "failed to prepare insert road." << std::endl; |
| 1285 | return false; |
| 1286 | } |
| 1287 | sqlite3_exec(dbPtr, "begin;", 0, 0, 0); |
| 1288 | |
| 1289 | int index_base = 1; |
| 1290 | bool complete = true; |
| 1291 | sqlite3_blob_data curvature, slope, heading, super_elevation, geom; |
| 1292 | for (hadmap::tx_road_vec::iterator iter = roads.begin(); iter != roads.end(); ++iter) { |
| 1293 | sqlite3_bind_int64(stmt, index_base, iter->pkid); |
| 1294 | sqlite3_bind_int64(stmt, index_base + 1, iter->task_pkid); |
| 1295 | sqlite3_bind_text(stmt, index_base + 2, iter->id, -1, SQLITE_TRANSIENT); |
| 1296 | sqlite3_bind_text(stmt, index_base + 3, iter->name, -1, SQLITE_TRANSIENT); |
| 1297 | sqlite3_bind_int(stmt, index_base + 4, iter->srs); |
| 1298 | sqlite3_bind_int64(stmt, index_base + 5, iter->junction_pkid); |
| 1299 | sqlite3_bind_double(stmt, index_base + 6, iter->ground); |
| 1300 | sqlite3_bind_int(stmt, index_base + 7, iter->section_num); |
| 1301 | sqlite3_bind_int(stmt, index_base + 8, iter->road_type); |
| 1302 | sqlite3_bind_int(stmt, index_base + 9, iter->direction); |
| 1303 | sqlite3_bind_int(stmt, index_base + 10, iter->toll); |
| 1304 | sqlite3_bind_int(stmt, index_base + 11, iter->func_class); |
| 1305 | sqlite3_bind_int(stmt, index_base + 12, iter->urban); |
| 1306 | sqlite3_bind_int(stmt, index_base + 13, iter->paved); |
| 1307 | sqlite3_bind_int(stmt, index_base + 14, iter->transition_type); |
| 1308 | sqlite3_bind_int(stmt, index_base + 15, iter->lane_mark); |
| 1309 | sqlite3_bind_int(stmt, index_base + 16, iter->material); |
| 1310 | |
| 1311 | /* |
| 1312 | createBlob( iter->curvature, iter->srs, curvature ); |
| 1313 | sqlite3_bind_blob(stmt, index_base+17, curvature.data, curvature.size, SQLITE_TRANSIENT); |
| 1314 | |
| 1315 | createBlob( iter->slope, iter->srs, slope ); |
| 1316 | sqlite3_bind_blob(stmt, index_base+18, slope.data, slope.size, SQLITE_TRANSIENT); |
| 1317 | |
| 1318 | createBlob( iter->heading, iter->srs, heading ); |
| 1319 | sqlite3_bind_blob(stmt, index_base+19, heading.data, heading.size, SQLITE_TRANSIENT); |
| 1320 | |
| 1321 | createBlob( iter->super_elevation, iter->srs, super_elevation ); |
| 1322 | sqlite3_bind_blob(stmt, index_base+20, super_elevation.data, super_elevation.size, SQLITE_TRANSIENT); |
| 1323 | */ |
| 1324 | |
| 1325 | createBlob(iter->geom, iter->srs, geom); |
| 1326 | sqlite3_bind_blob(stmt, index_base + 17, geom.data, geom.size, SQLITE_TRANSIENT); |
| 1327 | |
| 1328 | int r = sqlite3_step(stmt); |
| 1329 | if (SQLITE_DONE != r) { |
| 1330 | std::cerr << "Insert Road Error, Id " << iter->id << ", Code " << r << std::endl; |
nothing calls this directly
no test coverage detected