Mercurial > hg > orthanc
comparison UnitTests/ServerIndex.cpp @ 182:93ff5babcaf8
children public id
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 12 Nov 2012 10:36:58 +0100 |
parents | 2dece1526c06 |
children | baada606da3c |
comparison
equal
deleted
inserted
replaced
181:2dece1526c06 | 182:93ff5babcaf8 |
---|---|
317 s.ColumnInt(2), | 317 s.ColumnInt(2), |
318 s.ColumnString(3)); | 318 s.ColumnString(3)); |
319 } | 319 } |
320 } | 320 } |
321 | 321 |
322 | |
323 bool GetParentPublicId(std::string& result, | |
324 int64_t id) | |
325 { | |
326 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT a.publicId FROM Resources AS a, Resources AS b " | |
327 "WHERE a.internalId = b.parentId AND b.internalId = ?"); | |
328 s.BindInt(0, id); | |
329 | |
330 if (s.Step()) | |
331 { | |
332 result = s.ColumnString(0); | |
333 return true; | |
334 } | |
335 else | |
336 { | |
337 return false; | |
338 } | |
339 } | |
340 | |
341 | |
342 void GetChildrenPublicId(std::list<std::string>& result, | |
343 int64_t id) | |
344 { | |
345 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT a.publicId FROM Resources AS a, Resources AS b " | |
346 "WHERE a.parentId = b.internalId AND b.internalId = ?"); | |
347 s.BindInt(0, id); | |
348 | |
349 result.clear(); | |
350 | |
351 while (s.Step()) | |
352 { | |
353 result.push_back(s.ColumnString(0)); | |
354 } | |
355 } | |
356 | |
357 | |
322 int64_t GetTableRecordCount(const std::string& table) | 358 int64_t GetTableRecordCount(const std::string& table) |
323 { | 359 { |
324 char buf[128]; | 360 char buf[128]; |
325 sprintf(buf, "SELECT COUNT(*) FROM %s", table.c_str()); | 361 sprintf(buf, "SELECT COUNT(*) FROM %s", table.c_str()); |
326 SQLite::Statement s(db_, buf); | 362 SQLite::Statement s(db_, buf); |
430 ServerIndexHelper index(listener); | 466 ServerIndexHelper index(listener); |
431 | 467 |
432 LOG(WARNING) << "ok"; | 468 LOG(WARNING) << "ok"; |
433 | 469 |
434 int64_t a[] = { | 470 int64_t a[] = { |
435 index.CreateResource("a", ResourceType_Patient), | 471 index.CreateResource("a", ResourceType_Patient), // 0 |
436 index.CreateResource("b", ResourceType_Study), | 472 index.CreateResource("b", ResourceType_Study), // 1 |
437 index.CreateResource("c", ResourceType_Series), | 473 index.CreateResource("c", ResourceType_Series), // 2 |
438 index.CreateResource("d", ResourceType_Instance), | 474 index.CreateResource("d", ResourceType_Instance), // 3 |
439 index.CreateResource("e", ResourceType_Instance), | 475 index.CreateResource("e", ResourceType_Instance), // 4 |
440 index.CreateResource("f", ResourceType_Instance), | 476 index.CreateResource("f", ResourceType_Instance), // 5 |
441 index.CreateResource("g", ResourceType_Study) | 477 index.CreateResource("g", ResourceType_Study) // 6 |
442 }; | 478 }; |
443 | 479 |
444 index.SetGlobalProperty("Hello", "World"); | 480 index.SetGlobalProperty("Hello", "World"); |
445 | 481 |
446 index.AttachChild(a[0], a[1]); | 482 index.AttachChild(a[0], a[1]); |
447 index.AttachChild(a[1], a[2]); | 483 index.AttachChild(a[1], a[2]); |
448 index.AttachChild(a[2], a[3]); | 484 index.AttachChild(a[2], a[3]); |
449 index.AttachChild(a[2], a[4]); | 485 index.AttachChild(a[2], a[4]); |
450 index.AttachChild(a[6], a[5]); | 486 index.AttachChild(a[6], a[5]); |
487 | |
488 std::string s; | |
489 | |
490 ASSERT_FALSE(index.GetParentPublicId(s, a[0])); | |
491 ASSERT_FALSE(index.GetParentPublicId(s, a[6])); | |
492 ASSERT_TRUE(index.GetParentPublicId(s, a[1])); ASSERT_EQ("a", s); | |
493 ASSERT_TRUE(index.GetParentPublicId(s, a[2])); ASSERT_EQ("b", s); | |
494 ASSERT_TRUE(index.GetParentPublicId(s, a[3])); ASSERT_EQ("c", s); | |
495 ASSERT_TRUE(index.GetParentPublicId(s, a[4])); ASSERT_EQ("c", s); | |
496 ASSERT_TRUE(index.GetParentPublicId(s, a[5])); ASSERT_EQ("g", s); | |
497 | |
498 std::list<std::string> l; | |
499 index.GetChildrenPublicId(l, a[0]); ASSERT_EQ(1, l.size()); ASSERT_EQ("b", l.front()); | |
500 index.GetChildrenPublicId(l, a[1]); ASSERT_EQ(1, l.size()); ASSERT_EQ("c", l.front()); | |
501 index.GetChildrenPublicId(l, a[3]); ASSERT_EQ(0, l.size()); | |
502 index.GetChildrenPublicId(l, a[4]); ASSERT_EQ(0, l.size()); | |
503 index.GetChildrenPublicId(l, a[5]); ASSERT_EQ(0, l.size()); | |
504 index.GetChildrenPublicId(l, a[6]); ASSERT_EQ(1, l.size()); ASSERT_EQ("f", l.front()); | |
505 | |
506 index.GetChildrenPublicId(l, a[2]); ASSERT_EQ(2, l.size()); | |
507 if (l.front() == "d") | |
508 { | |
509 ASSERT_EQ("e", l.back()); | |
510 } | |
511 else | |
512 { | |
513 ASSERT_EQ("d", l.back()); | |
514 ASSERT_EQ("e", l.front()); | |
515 } | |
516 | |
517 | |
451 index.AttachFile(a[4], "_json", "my json file", 42, CompressionType_Zlib); | 518 index.AttachFile(a[4], "_json", "my json file", 42, CompressionType_Zlib); |
452 index.AttachFile(a[4], "_dicom", "my dicom file", 42, CompressionType_None); | 519 index.AttachFile(a[4], "_dicom", "my dicom file", 42, CompressionType_None); |
453 index.SetMetadata(a[4], MetadataType_Instance_RemoteAet, "PINNACLE"); | 520 index.SetMetadata(a[4], MetadataType_Instance_RemoteAet, "PINNACLE"); |
454 | 521 |
455 DicomMap m; | 522 DicomMap m; |
459 int64_t b; | 526 int64_t b; |
460 ResourceType t; | 527 ResourceType t; |
461 ASSERT_TRUE(index.FindResource("g", b, t)); | 528 ASSERT_TRUE(index.FindResource("g", b, t)); |
462 ASSERT_EQ(7, b); | 529 ASSERT_EQ(7, b); |
463 ASSERT_EQ(ResourceType_Study, t); | 530 ASSERT_EQ(ResourceType_Study, t); |
464 | |
465 std::string s; | |
466 | 531 |
467 ASSERT_TRUE(index.FindMetadata(s, a[4], MetadataType_Instance_RemoteAet)); | 532 ASSERT_TRUE(index.FindMetadata(s, a[4], MetadataType_Instance_RemoteAet)); |
468 ASSERT_FALSE(index.FindMetadata(s, a[4], MetadataType_Instance_IndexInSeries)); | 533 ASSERT_FALSE(index.FindMetadata(s, a[4], MetadataType_Instance_IndexInSeries)); |
469 ASSERT_EQ("PINNACLE", s); | 534 ASSERT_EQ("PINNACLE", s); |
470 ASSERT_EQ("PINNACLE", index.GetMetadata(a[4], MetadataType_Instance_RemoteAet)); | 535 ASSERT_EQ("PINNACLE", index.GetMetadata(a[4], MetadataType_Instance_RemoteAet)); |