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));