Mercurial > hg > orthanc-databases
comparison Framework/Plugins/DatabaseBackendAdapterV2.cpp @ 225:94c9908e6aca
removed DatabaseManager member out of class IndexBackend
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 01 Apr 2021 19:18:19 +0200 |
parents | 61c309e06797 |
children | a4918d57435c |
comparison
equal
deleted
inserted
replaced
224:61c309e06797 | 225:94c9908e6aca |
---|---|
52 { | 52 { |
53 class DatabaseBackendAdapterV2::Adapter : public boost::noncopyable | 53 class DatabaseBackendAdapterV2::Adapter : public boost::noncopyable |
54 { | 54 { |
55 private: | 55 private: |
56 std::unique_ptr<IDatabaseBackend> backend_; | 56 std::unique_ptr<IDatabaseBackend> backend_; |
57 boost::mutex databaseMutex_; | 57 boost::mutex managerMutex_; |
58 std::unique_ptr<DatabaseManager> database_; | 58 std::unique_ptr<DatabaseManager> manager_; |
59 | 59 |
60 public: | 60 public: |
61 Adapter(IDatabaseBackend* backend) : | 61 Adapter(IDatabaseBackend* backend) : |
62 backend_(backend) | 62 backend_(backend) |
63 { | 63 { |
72 return *backend_; | 72 return *backend_; |
73 } | 73 } |
74 | 74 |
75 void OpenConnection() | 75 void OpenConnection() |
76 { | 76 { |
77 boost::mutex::scoped_lock lock(databaseMutex_); | 77 boost::mutex::scoped_lock lock(managerMutex_); |
78 | 78 |
79 if (database_.get() == NULL) | 79 if (manager_.get() == NULL) |
80 { | 80 { |
81 database_.reset(new DatabaseManager(backend_->CreateDatabaseFactory())); | 81 manager_.reset(new DatabaseManager(backend_->CreateDatabaseFactory())); |
82 database_->Open(); | 82 manager_->Open(); |
83 } | 83 } |
84 else | 84 else |
85 { | 85 { |
86 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 86 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
87 } | 87 } |
88 } | 88 } |
89 | 89 |
90 void CloseConnection() | 90 void CloseConnection() |
91 { | 91 { |
92 boost::mutex::scoped_lock lock(databaseMutex_); | 92 boost::mutex::scoped_lock lock(managerMutex_); |
93 | 93 |
94 if (database_.get() == NULL) | 94 if (manager_.get() == NULL) |
95 { | 95 { |
96 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 96 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
97 } | 97 } |
98 else | 98 else |
99 { | 99 { |
100 database_->Close(); | 100 manager_->Close(); |
101 database_.reset(NULL); | 101 manager_.reset(NULL); |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 class DatabaseAccessor : public boost::noncopyable | 105 class DatabaseAccessor : public boost::noncopyable |
106 { | 106 { |
107 private: | 107 private: |
108 boost::mutex::scoped_lock lock_; | 108 boost::mutex::scoped_lock lock_; |
109 DatabaseManager* database_; | 109 DatabaseManager* manager_; |
110 | 110 |
111 public: | 111 public: |
112 DatabaseAccessor(Adapter& adapter) : | 112 DatabaseAccessor(Adapter& adapter) : |
113 lock_(adapter.databaseMutex_), | 113 lock_(adapter.managerMutex_), |
114 database_(adapter.database_.get()) | 114 manager_(adapter.manager_.get()) |
115 { | 115 { |
116 if (database_ == NULL) | 116 if (manager_ == NULL) |
117 { | 117 { |
118 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 118 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
119 } | 119 } |
120 } | 120 } |
121 | 121 |
122 DatabaseManager& GetDatabase() const | 122 DatabaseManager& GetManager() const |
123 { | 123 { |
124 assert(database_ != NULL); | 124 assert(manager_ != NULL); |
125 return *database_; | 125 return *manager_; |
126 } | 126 } |
127 }; | 127 }; |
128 }; | 128 }; |
129 | 129 |
130 | 130 |
349 { | 349 { |
350 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 350 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
351 | 351 |
352 try | 352 try |
353 { | 353 { |
354 //DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); // TODO | 354 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
355 | 355 adapter->GetBackend().AddAttachment(accessor.GetManager(), id, *attachment); |
356 adapter->GetBackend().AddAttachment(id, *attachment); | |
357 return OrthancPluginErrorCode_Success; | 356 return OrthancPluginErrorCode_Success; |
358 } | 357 } |
359 ORTHANC_PLUGINS_DATABASE_CATCH; | 358 ORTHANC_PLUGINS_DATABASE_CATCH; |
360 } | 359 } |
361 | 360 |
366 { | 365 { |
367 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 366 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
368 | 367 |
369 try | 368 try |
370 { | 369 { |
371 adapter->GetBackend().AttachChild(parent, child); | 370 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
371 adapter->GetBackend().AttachChild(accessor.GetManager(), parent, child); | |
372 return OrthancPluginErrorCode_Success; | 372 return OrthancPluginErrorCode_Success; |
373 } | 373 } |
374 ORTHANC_PLUGINS_DATABASE_CATCH; | 374 ORTHANC_PLUGINS_DATABASE_CATCH; |
375 } | 375 } |
376 | 376 |
379 { | 379 { |
380 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 380 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
381 | 381 |
382 try | 382 try |
383 { | 383 { |
384 adapter->GetBackend().ClearChanges(); | 384 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
385 adapter->GetBackend().ClearChanges(accessor.GetManager()); | |
385 return OrthancPluginErrorCode_Success; | 386 return OrthancPluginErrorCode_Success; |
386 } | 387 } |
387 ORTHANC_PLUGINS_DATABASE_CATCH; | 388 ORTHANC_PLUGINS_DATABASE_CATCH; |
388 } | 389 } |
389 | 390 |
392 { | 393 { |
393 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 394 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
394 | 395 |
395 try | 396 try |
396 { | 397 { |
397 adapter->GetBackend().ClearExportedResources(); | 398 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
399 adapter->GetBackend().ClearExportedResources(accessor.GetManager()); | |
398 return OrthancPluginErrorCode_Success; | 400 return OrthancPluginErrorCode_Success; |
399 } | 401 } |
400 ORTHANC_PLUGINS_DATABASE_CATCH; | 402 ORTHANC_PLUGINS_DATABASE_CATCH; |
401 } | 403 } |
402 | 404 |
408 { | 410 { |
409 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 411 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
410 | 412 |
411 try | 413 try |
412 { | 414 { |
413 *id = adapter->GetBackend().CreateResource(publicId, resourceType); | 415 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
416 | |
417 *id = adapter->GetBackend().CreateResource(accessor.GetManager(), publicId, resourceType); | |
414 return OrthancPluginErrorCode_Success; | 418 return OrthancPluginErrorCode_Success; |
415 } | 419 } |
416 ORTHANC_PLUGINS_DATABASE_CATCH; | 420 ORTHANC_PLUGINS_DATABASE_CATCH; |
417 } | 421 } |
418 | 422 |
425 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 429 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
426 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 430 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
427 | 431 |
428 try | 432 try |
429 { | 433 { |
430 adapter->GetBackend().DeleteAttachment(*output, id, contentType); | 434 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
435 adapter->GetBackend().DeleteAttachment(*output, accessor.GetManager(), id, contentType); | |
431 return OrthancPluginErrorCode_Success; | 436 return OrthancPluginErrorCode_Success; |
432 } | 437 } |
433 ORTHANC_PLUGINS_DATABASE_CATCH; | 438 ORTHANC_PLUGINS_DATABASE_CATCH; |
434 } | 439 } |
435 | 440 |
440 { | 445 { |
441 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 446 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
442 | 447 |
443 try | 448 try |
444 { | 449 { |
445 adapter->GetBackend().DeleteMetadata(id, metadataType); | 450 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
451 adapter->GetBackend().DeleteMetadata(accessor.GetManager(), id, metadataType); | |
446 return OrthancPluginErrorCode_Success; | 452 return OrthancPluginErrorCode_Success; |
447 } | 453 } |
448 ORTHANC_PLUGINS_DATABASE_CATCH; | 454 ORTHANC_PLUGINS_DATABASE_CATCH; |
449 } | 455 } |
450 | 456 |
456 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 462 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
457 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 463 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
458 | 464 |
459 try | 465 try |
460 { | 466 { |
461 adapter->GetBackend().DeleteResource(*output, id); | 467 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
468 adapter->GetBackend().DeleteResource(*output, accessor.GetManager(), id); | |
462 return OrthancPluginErrorCode_Success; | 469 return OrthancPluginErrorCode_Success; |
463 } | 470 } |
464 ORTHANC_PLUGINS_DATABASE_CATCH; | 471 ORTHANC_PLUGINS_DATABASE_CATCH; |
465 } | 472 } |
466 | 473 |
473 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 480 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
474 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 481 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
475 | 482 |
476 try | 483 try |
477 { | 484 { |
485 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
486 | |
478 std::list<int64_t> target; | 487 std::list<int64_t> target; |
479 adapter->GetBackend().GetAllInternalIds(target, resourceType); | 488 adapter->GetBackend().GetAllInternalIds(target, accessor.GetManager(), resourceType); |
480 | 489 |
481 for (std::list<int64_t>::const_iterator | 490 for (std::list<int64_t>::const_iterator |
482 it = target.begin(); it != target.end(); ++it) | 491 it = target.begin(); it != target.end(); ++it) |
483 { | 492 { |
484 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 493 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
499 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 508 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
500 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 509 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
501 | 510 |
502 try | 511 try |
503 { | 512 { |
513 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
514 | |
504 std::list<std::string> ids; | 515 std::list<std::string> ids; |
505 adapter->GetBackend().GetAllPublicIds(ids, resourceType); | 516 adapter->GetBackend().GetAllPublicIds(ids, accessor.GetManager(), resourceType); |
506 | 517 |
507 for (std::list<std::string>::const_iterator | 518 for (std::list<std::string>::const_iterator |
508 it = ids.begin(); it != ids.end(); ++it) | 519 it = ids.begin(); it != ids.end(); ++it) |
509 { | 520 { |
510 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 521 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
528 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 539 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
529 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 540 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
530 | 541 |
531 try | 542 try |
532 { | 543 { |
544 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
545 | |
533 std::list<std::string> ids; | 546 std::list<std::string> ids; |
534 adapter->GetBackend().GetAllPublicIds(ids, resourceType, since, limit); | 547 adapter->GetBackend().GetAllPublicIds(ids, accessor.GetManager(), resourceType, since, limit); |
535 | 548 |
536 for (std::list<std::string>::const_iterator | 549 for (std::list<std::string>::const_iterator |
537 it = ids.begin(); it != ids.end(); ++it) | 550 it = ids.begin(); it != ids.end(); ++it) |
538 { | 551 { |
539 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 552 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
556 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 569 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
557 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Change); | 570 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Change); |
558 | 571 |
559 try | 572 try |
560 { | 573 { |
574 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
575 | |
561 bool done; | 576 bool done; |
562 adapter->GetBackend().GetChanges(*output, done, since, maxResult); | 577 adapter->GetBackend().GetChanges(*output, done, accessor.GetManager(), since, maxResult); |
563 | 578 |
564 if (done) | 579 if (done) |
565 { | 580 { |
566 OrthancPluginDatabaseAnswerChangesDone(adapter->GetBackend().GetContext(), | 581 OrthancPluginDatabaseAnswerChangesDone(adapter->GetBackend().GetContext(), |
567 output->GetDatabase()); | 582 output->GetDatabase()); |
581 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 596 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
582 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 597 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
583 | 598 |
584 try | 599 try |
585 { | 600 { |
601 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
602 | |
586 std::list<int64_t> target; | 603 std::list<int64_t> target; |
587 adapter->GetBackend().GetChildrenInternalId(target, id); | 604 adapter->GetBackend().GetChildrenInternalId(target, accessor.GetManager(), id); |
588 | 605 |
589 for (std::list<int64_t>::const_iterator | 606 for (std::list<int64_t>::const_iterator |
590 it = target.begin(); it != target.end(); ++it) | 607 it = target.begin(); it != target.end(); ++it) |
591 { | 608 { |
592 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 609 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
607 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 624 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
608 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 625 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
609 | 626 |
610 try | 627 try |
611 { | 628 { |
629 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
630 | |
612 std::list<std::string> ids; | 631 std::list<std::string> ids; |
613 adapter->GetBackend().GetChildrenPublicId(ids, id); | 632 adapter->GetBackend().GetChildrenPublicId(ids, accessor.GetManager(), id); |
614 | 633 |
615 for (std::list<std::string>::const_iterator | 634 for (std::list<std::string>::const_iterator |
616 it = ids.begin(); it != ids.end(); ++it) | 635 it = ids.begin(); it != ids.end(); ++it) |
617 { | 636 { |
618 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 637 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
635 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 654 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
636 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_ExportedResource); | 655 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_ExportedResource); |
637 | 656 |
638 try | 657 try |
639 { | 658 { |
659 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
660 | |
640 bool done; | 661 bool done; |
641 adapter->GetBackend().GetExportedResources(*output, done, since, maxResult); | 662 adapter->GetBackend().GetExportedResources(*output, done, accessor.GetManager(), since, maxResult); |
642 | 663 |
643 if (done) | 664 if (done) |
644 { | 665 { |
645 OrthancPluginDatabaseAnswerExportedResourcesDone(adapter->GetBackend().GetContext(), | 666 OrthancPluginDatabaseAnswerExportedResourcesDone(adapter->GetBackend().GetContext(), |
646 output->GetDatabase()); | 667 output->GetDatabase()); |
658 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 679 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
659 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Change); | 680 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Change); |
660 | 681 |
661 try | 682 try |
662 { | 683 { |
663 adapter->GetBackend().GetLastChange(*output); | 684 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
685 adapter->GetBackend().GetLastChange(*output, accessor.GetManager()); | |
664 return OrthancPluginErrorCode_Success; | 686 return OrthancPluginErrorCode_Success; |
665 } | 687 } |
666 ORTHANC_PLUGINS_DATABASE_CATCH; | 688 ORTHANC_PLUGINS_DATABASE_CATCH; |
667 } | 689 } |
668 | 690 |
674 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 696 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
675 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_ExportedResource); | 697 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_ExportedResource); |
676 | 698 |
677 try | 699 try |
678 { | 700 { |
679 adapter->GetBackend().GetLastExportedResource(*output); | 701 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
702 adapter->GetBackend().GetLastExportedResource(*output, accessor.GetManager()); | |
680 return OrthancPluginErrorCode_Success; | 703 return OrthancPluginErrorCode_Success; |
681 } | 704 } |
682 ORTHANC_PLUGINS_DATABASE_CATCH; | 705 ORTHANC_PLUGINS_DATABASE_CATCH; |
683 } | 706 } |
684 | 707 |
691 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 714 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
692 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_DicomTag); | 715 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_DicomTag); |
693 | 716 |
694 try | 717 try |
695 { | 718 { |
696 adapter->GetBackend().GetMainDicomTags(*output, id); | 719 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
720 adapter->GetBackend().GetMainDicomTags(*output, accessor.GetManager(), id); | |
697 return OrthancPluginErrorCode_Success; | 721 return OrthancPluginErrorCode_Success; |
698 } | 722 } |
699 ORTHANC_PLUGINS_DATABASE_CATCH; | 723 ORTHANC_PLUGINS_DATABASE_CATCH; |
700 } | 724 } |
701 | 725 |
708 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 732 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
709 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 733 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
710 | 734 |
711 try | 735 try |
712 { | 736 { |
713 std::string s = adapter->GetBackend().GetPublicId(id); | 737 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
738 | |
739 std::string s = adapter->GetBackend().GetPublicId(accessor.GetManager(), id); | |
714 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 740 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
715 output->GetDatabase(), | 741 output->GetDatabase(), |
716 s.c_str()); | 742 s.c_str()); |
717 | 743 |
718 return OrthancPluginErrorCode_Success; | 744 return OrthancPluginErrorCode_Success; |
727 { | 753 { |
728 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 754 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
729 | 755 |
730 try | 756 try |
731 { | 757 { |
732 *target = adapter->GetBackend().GetResourcesCount(resourceType); | 758 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
759 *target = adapter->GetBackend().GetResourcesCount(accessor.GetManager(), resourceType); | |
733 return OrthancPluginErrorCode_Success; | 760 return OrthancPluginErrorCode_Success; |
734 } | 761 } |
735 ORTHANC_PLUGINS_DATABASE_CATCH; | 762 ORTHANC_PLUGINS_DATABASE_CATCH; |
736 } | 763 } |
737 | 764 |
742 { | 769 { |
743 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 770 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
744 | 771 |
745 try | 772 try |
746 { | 773 { |
747 *resourceType = adapter->GetBackend().GetResourceType(id); | 774 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
775 *resourceType = adapter->GetBackend().GetResourceType(accessor.GetManager(), id); | |
748 return OrthancPluginErrorCode_Success; | 776 return OrthancPluginErrorCode_Success; |
749 } | 777 } |
750 ORTHANC_PLUGINS_DATABASE_CATCH; | 778 ORTHANC_PLUGINS_DATABASE_CATCH; |
751 } | 779 } |
752 | 780 |
756 { | 784 { |
757 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 785 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
758 | 786 |
759 try | 787 try |
760 { | 788 { |
761 *target = adapter->GetBackend().GetTotalCompressedSize(); | 789 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
790 *target = adapter->GetBackend().GetTotalCompressedSize(accessor.GetManager()); | |
762 return OrthancPluginErrorCode_Success; | 791 return OrthancPluginErrorCode_Success; |
763 } | 792 } |
764 ORTHANC_PLUGINS_DATABASE_CATCH; | 793 ORTHANC_PLUGINS_DATABASE_CATCH; |
765 } | 794 } |
766 | 795 |
770 { | 799 { |
771 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 800 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
772 | 801 |
773 try | 802 try |
774 { | 803 { |
775 *target = adapter->GetBackend().GetTotalUncompressedSize(); | 804 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
805 *target = adapter->GetBackend().GetTotalUncompressedSize(accessor.GetManager()); | |
776 return OrthancPluginErrorCode_Success; | 806 return OrthancPluginErrorCode_Success; |
777 } | 807 } |
778 ORTHANC_PLUGINS_DATABASE_CATCH; | 808 ORTHANC_PLUGINS_DATABASE_CATCH; |
779 } | 809 } |
780 | 810 |
785 { | 815 { |
786 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 816 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
787 | 817 |
788 try | 818 try |
789 { | 819 { |
790 *existing = adapter->GetBackend().IsExistingResource(id); | 820 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
821 *existing = adapter->GetBackend().IsExistingResource(accessor.GetManager(), id); | |
791 return OrthancPluginErrorCode_Success; | 822 return OrthancPluginErrorCode_Success; |
792 } | 823 } |
793 ORTHANC_PLUGINS_DATABASE_CATCH; | 824 ORTHANC_PLUGINS_DATABASE_CATCH; |
794 } | 825 } |
795 | 826 |
800 { | 831 { |
801 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 832 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
802 | 833 |
803 try | 834 try |
804 { | 835 { |
805 *isProtected = adapter->GetBackend().IsProtectedPatient(id); | 836 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
837 *isProtected = adapter->GetBackend().IsProtectedPatient(accessor.GetManager(), id); | |
806 return OrthancPluginErrorCode_Success; | 838 return OrthancPluginErrorCode_Success; |
807 } | 839 } |
808 ORTHANC_PLUGINS_DATABASE_CATCH; | 840 ORTHANC_PLUGINS_DATABASE_CATCH; |
809 } | 841 } |
810 | 842 |
817 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 849 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
818 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 850 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
819 | 851 |
820 try | 852 try |
821 { | 853 { |
854 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
855 | |
822 std::list<int32_t> target; | 856 std::list<int32_t> target; |
823 adapter->GetBackend().ListAvailableMetadata(target, id); | 857 adapter->GetBackend().ListAvailableMetadata(target, accessor.GetManager(), id); |
824 | 858 |
825 for (std::list<int32_t>::const_iterator | 859 for (std::list<int32_t>::const_iterator |
826 it = target.begin(); it != target.end(); ++it) | 860 it = target.begin(); it != target.end(); ++it) |
827 { | 861 { |
828 OrthancPluginDatabaseAnswerInt32(adapter->GetBackend().GetContext(), | 862 OrthancPluginDatabaseAnswerInt32(adapter->GetBackend().GetContext(), |
844 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 878 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
845 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 879 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
846 | 880 |
847 try | 881 try |
848 { | 882 { |
883 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
884 | |
849 std::list<int32_t> target; | 885 std::list<int32_t> target; |
850 adapter->GetBackend().ListAvailableAttachments(target, id); | 886 adapter->GetBackend().ListAvailableAttachments(target, accessor.GetManager(), id); |
851 | 887 |
852 for (std::list<int32_t>::const_iterator | 888 for (std::list<int32_t>::const_iterator |
853 it = target.begin(); it != target.end(); ++it) | 889 it = target.begin(); it != target.end(); ++it) |
854 { | 890 { |
855 OrthancPluginDatabaseAnswerInt32(adapter->GetBackend().GetContext(), | 891 OrthancPluginDatabaseAnswerInt32(adapter->GetBackend().GetContext(), |
868 { | 904 { |
869 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 905 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
870 | 906 |
871 try | 907 try |
872 { | 908 { |
909 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
910 | |
873 int64_t id; | 911 int64_t id; |
874 OrthancPluginResourceType type; | 912 OrthancPluginResourceType type; |
875 if (!adapter->GetBackend().LookupResource(id, type, change->publicId) || | 913 if (!adapter->GetBackend().LookupResource(id, type, accessor.GetManager(), change->publicId) || |
876 type != change->resourceType) | 914 type != change->resourceType) |
877 { | 915 { |
878 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); | 916 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); |
879 } | 917 } |
880 else | 918 else |
881 { | 919 { |
882 adapter->GetBackend().LogChange(change->changeType, id, type, change->date); | 920 adapter->GetBackend().LogChange(accessor.GetManager(), change->changeType, id, type, change->date); |
883 } | 921 } |
884 | 922 |
885 return OrthancPluginErrorCode_Success; | 923 return OrthancPluginErrorCode_Success; |
886 } | 924 } |
887 ORTHANC_PLUGINS_DATABASE_CATCH; | 925 ORTHANC_PLUGINS_DATABASE_CATCH; |
893 { | 931 { |
894 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 932 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
895 | 933 |
896 try | 934 try |
897 { | 935 { |
898 adapter->GetBackend().LogExportedResource(*exported); | 936 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
937 adapter->GetBackend().LogExportedResource(accessor.GetManager(), *exported); | |
899 return OrthancPluginErrorCode_Success; | 938 return OrthancPluginErrorCode_Success; |
900 } | 939 } |
901 ORTHANC_PLUGINS_DATABASE_CATCH; | 940 ORTHANC_PLUGINS_DATABASE_CATCH; |
902 } | 941 } |
903 | 942 |
911 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 950 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
912 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Attachment); | 951 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Attachment); |
913 | 952 |
914 try | 953 try |
915 { | 954 { |
916 adapter->GetBackend().LookupAttachment(*output, id, contentType); | 955 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
956 adapter->GetBackend().LookupAttachment(*output, accessor.GetManager(), id, contentType); | |
917 return OrthancPluginErrorCode_Success; | 957 return OrthancPluginErrorCode_Success; |
918 } | 958 } |
919 ORTHANC_PLUGINS_DATABASE_CATCH; | 959 ORTHANC_PLUGINS_DATABASE_CATCH; |
920 } | 960 } |
921 | 961 |
928 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 968 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
929 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 969 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
930 | 970 |
931 try | 971 try |
932 { | 972 { |
973 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
974 | |
933 std::string s; | 975 std::string s; |
934 if (adapter->GetBackend().LookupGlobalProperty(s, MISSING_SERVER_IDENTIFIER, property)) | 976 if (adapter->GetBackend().LookupGlobalProperty(s, accessor.GetManager(), MISSING_SERVER_IDENTIFIER, property)) |
935 { | 977 { |
936 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 978 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
937 output->GetDatabase(), | 979 output->GetDatabase(), |
938 s.c_str()); | 980 s.c_str()); |
939 } | 981 } |
954 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 996 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
955 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 997 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
956 | 998 |
957 try | 999 try |
958 { | 1000 { |
1001 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1002 | |
959 std::list<int64_t> target; | 1003 std::list<int64_t> target; |
960 adapter->GetBackend().LookupIdentifier(target, resourceType, tag->group, tag->element, constraint, tag->value); | 1004 adapter->GetBackend().LookupIdentifier(target, accessor.GetManager(), resourceType, |
1005 tag->group, tag->element, constraint, tag->value); | |
961 | 1006 |
962 for (std::list<int64_t>::const_iterator | 1007 for (std::list<int64_t>::const_iterator |
963 it = target.begin(); it != target.end(); ++it) | 1008 it = target.begin(); it != target.end(); ++it) |
964 { | 1009 { |
965 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 1010 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
984 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1029 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
985 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1030 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
986 | 1031 |
987 try | 1032 try |
988 { | 1033 { |
1034 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1035 | |
989 std::list<int64_t> target; | 1036 std::list<int64_t> target; |
990 adapter->GetBackend().LookupIdentifierRange(target, resourceType, group, element, start, end); | 1037 adapter->GetBackend().LookupIdentifierRange(target, accessor.GetManager(), resourceType, group, element, start, end); |
991 | 1038 |
992 for (std::list<int64_t>::const_iterator | 1039 for (std::list<int64_t>::const_iterator |
993 it = target.begin(); it != target.end(); ++it) | 1040 it = target.begin(); it != target.end(); ++it) |
994 { | 1041 { |
995 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 1042 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
1011 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1058 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1012 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1059 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1013 | 1060 |
1014 try | 1061 try |
1015 { | 1062 { |
1063 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1064 | |
1016 std::string s; | 1065 std::string s; |
1017 if (adapter->GetBackend().LookupMetadata(s, id, metadata)) | 1066 if (adapter->GetBackend().LookupMetadata(s, accessor.GetManager(), id, metadata)) |
1018 { | 1067 { |
1019 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 1068 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
1020 output->GetDatabase(), s.c_str()); | 1069 output->GetDatabase(), s.c_str()); |
1021 } | 1070 } |
1022 | 1071 |
1034 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1083 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1035 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1084 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1036 | 1085 |
1037 try | 1086 try |
1038 { | 1087 { |
1088 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1089 | |
1039 int64_t parent; | 1090 int64_t parent; |
1040 if (adapter->GetBackend().LookupParent(parent, id)) | 1091 if (adapter->GetBackend().LookupParent(parent, accessor.GetManager(), id)) |
1041 { | 1092 { |
1042 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 1093 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
1043 output->GetDatabase(), parent); | 1094 output->GetDatabase(), parent); |
1044 } | 1095 } |
1045 | 1096 |
1057 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1108 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1058 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1109 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1059 | 1110 |
1060 try | 1111 try |
1061 { | 1112 { |
1113 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1114 | |
1062 int64_t id; | 1115 int64_t id; |
1063 OrthancPluginResourceType type; | 1116 OrthancPluginResourceType type; |
1064 if (adapter->GetBackend().LookupResource(id, type, publicId)) | 1117 if (adapter->GetBackend().LookupResource(id, type, accessor.GetManager(), publicId)) |
1065 { | 1118 { |
1066 OrthancPluginDatabaseAnswerResource(adapter->GetBackend().GetContext(), | 1119 OrthancPluginDatabaseAnswerResource(adapter->GetBackend().GetContext(), |
1067 output->GetDatabase(), | 1120 output->GetDatabase(), |
1068 id, type); | 1121 id, type); |
1069 } | 1122 } |
1081 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1134 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1082 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1135 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1083 | 1136 |
1084 try | 1137 try |
1085 { | 1138 { |
1139 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1140 | |
1086 int64_t id; | 1141 int64_t id; |
1087 if (adapter->GetBackend().SelectPatientToRecycle(id)) | 1142 if (adapter->GetBackend().SelectPatientToRecycle(id, accessor.GetManager())) |
1088 { | 1143 { |
1089 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 1144 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
1090 output->GetDatabase(), id); | 1145 output->GetDatabase(), id); |
1091 } | 1146 } |
1092 | 1147 |
1104 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1159 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1105 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1160 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1106 | 1161 |
1107 try | 1162 try |
1108 { | 1163 { |
1164 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1165 | |
1109 int64_t id; | 1166 int64_t id; |
1110 if (adapter->GetBackend().SelectPatientToRecycle(id, patientIdToAvoid)) | 1167 if (adapter->GetBackend().SelectPatientToRecycle(id, accessor.GetManager(), patientIdToAvoid)) |
1111 { | 1168 { |
1112 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), | 1169 OrthancPluginDatabaseAnswerInt64(adapter->GetBackend().GetContext(), |
1113 output->GetDatabase(), id); | 1170 output->GetDatabase(), id); |
1114 } | 1171 } |
1115 | 1172 |
1125 { | 1182 { |
1126 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1183 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1127 | 1184 |
1128 try | 1185 try |
1129 { | 1186 { |
1130 adapter->GetBackend().SetGlobalProperty(MISSING_SERVER_IDENTIFIER, property, value); | 1187 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1188 adapter->GetBackend().SetGlobalProperty(accessor.GetManager(), MISSING_SERVER_IDENTIFIER, property, value); | |
1131 return OrthancPluginErrorCode_Success; | 1189 return OrthancPluginErrorCode_Success; |
1132 } | 1190 } |
1133 ORTHANC_PLUGINS_DATABASE_CATCH; | 1191 ORTHANC_PLUGINS_DATABASE_CATCH; |
1134 } | 1192 } |
1135 | 1193 |
1140 { | 1198 { |
1141 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1199 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1142 | 1200 |
1143 try | 1201 try |
1144 { | 1202 { |
1145 adapter->GetBackend().SetMainDicomTag(id, tag->group, tag->element, tag->value); | 1203 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1204 adapter->GetBackend().SetMainDicomTag(accessor.GetManager(), id, tag->group, tag->element, tag->value); | |
1146 return OrthancPluginErrorCode_Success; | 1205 return OrthancPluginErrorCode_Success; |
1147 } | 1206 } |
1148 ORTHANC_PLUGINS_DATABASE_CATCH; | 1207 ORTHANC_PLUGINS_DATABASE_CATCH; |
1149 } | 1208 } |
1150 | 1209 |
1155 { | 1214 { |
1156 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1215 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1157 | 1216 |
1158 try | 1217 try |
1159 { | 1218 { |
1160 adapter->GetBackend().SetIdentifierTag(id, tag->group, tag->element, tag->value); | 1219 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1220 adapter->GetBackend().SetIdentifierTag(accessor.GetManager(), id, tag->group, tag->element, tag->value); | |
1161 return OrthancPluginErrorCode_Success; | 1221 return OrthancPluginErrorCode_Success; |
1162 } | 1222 } |
1163 ORTHANC_PLUGINS_DATABASE_CATCH; | 1223 ORTHANC_PLUGINS_DATABASE_CATCH; |
1164 } | 1224 } |
1165 | 1225 |
1171 { | 1231 { |
1172 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1232 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1173 | 1233 |
1174 try | 1234 try |
1175 { | 1235 { |
1176 adapter->GetBackend().SetMetadata(id, metadata, value); | 1236 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1237 adapter->GetBackend().SetMetadata(accessor.GetManager(), id, metadata, value); | |
1177 return OrthancPluginErrorCode_Success; | 1238 return OrthancPluginErrorCode_Success; |
1178 } | 1239 } |
1179 ORTHANC_PLUGINS_DATABASE_CATCH; | 1240 ORTHANC_PLUGINS_DATABASE_CATCH; |
1180 } | 1241 } |
1181 | 1242 |
1186 { | 1247 { |
1187 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1248 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1188 | 1249 |
1189 try | 1250 try |
1190 { | 1251 { |
1191 adapter->GetBackend().SetProtectedPatient(id, (isProtected != 0)); | 1252 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1253 adapter->GetBackend().SetProtectedPatient(accessor.GetManager(), id, (isProtected != 0)); | |
1192 return OrthancPluginErrorCode_Success; | 1254 return OrthancPluginErrorCode_Success; |
1193 } | 1255 } |
1194 ORTHANC_PLUGINS_DATABASE_CATCH; | 1256 ORTHANC_PLUGINS_DATABASE_CATCH; |
1195 } | 1257 } |
1196 | 1258 |
1199 { | 1261 { |
1200 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1262 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1201 | 1263 |
1202 try | 1264 try |
1203 { | 1265 { |
1204 adapter->GetBackend().StartTransaction(TransactionType_ReadWrite); | 1266 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1267 accessor.GetManager().StartTransaction(TransactionType_ReadWrite); | |
1205 return OrthancPluginErrorCode_Success; | 1268 return OrthancPluginErrorCode_Success; |
1206 } | 1269 } |
1207 ORTHANC_PLUGINS_DATABASE_CATCH; | 1270 ORTHANC_PLUGINS_DATABASE_CATCH; |
1208 } | 1271 } |
1209 | 1272 |
1212 { | 1275 { |
1213 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1276 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1214 | 1277 |
1215 try | 1278 try |
1216 { | 1279 { |
1217 adapter->GetBackend().RollbackTransaction(); | 1280 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1281 accessor.GetManager().RollbackTransaction(); | |
1218 return OrthancPluginErrorCode_Success; | 1282 return OrthancPluginErrorCode_Success; |
1219 } | 1283 } |
1220 ORTHANC_PLUGINS_DATABASE_CATCH; | 1284 ORTHANC_PLUGINS_DATABASE_CATCH; |
1221 } | 1285 } |
1222 | 1286 |
1225 { | 1289 { |
1226 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1290 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1227 | 1291 |
1228 try | 1292 try |
1229 { | 1293 { |
1230 adapter->GetBackend().CommitTransaction(); | 1294 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1295 accessor.GetManager().CommitTransaction(); | |
1231 return OrthancPluginErrorCode_Success; | 1296 return OrthancPluginErrorCode_Success; |
1232 } | 1297 } |
1233 ORTHANC_PLUGINS_DATABASE_CATCH; | 1298 ORTHANC_PLUGINS_DATABASE_CATCH; |
1234 } | 1299 } |
1235 | 1300 |
1238 { | 1303 { |
1239 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1304 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1240 | 1305 |
1241 try | 1306 try |
1242 { | 1307 { |
1243 //adapter->OpenConnection(); // TODO | 1308 adapter->OpenConnection(); |
1244 adapter->GetBackend().Open(); | |
1245 return OrthancPluginErrorCode_Success; | 1309 return OrthancPluginErrorCode_Success; |
1246 } | 1310 } |
1247 ORTHANC_PLUGINS_DATABASE_CATCH; | 1311 ORTHANC_PLUGINS_DATABASE_CATCH; |
1248 } | 1312 } |
1249 | 1313 |
1252 { | 1316 { |
1253 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1317 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1254 | 1318 |
1255 try | 1319 try |
1256 { | 1320 { |
1257 adapter->GetBackend().Close(); | 1321 adapter->CloseConnection(); |
1258 //adapter->CloseConnection(); // TODO | |
1259 return OrthancPluginErrorCode_Success; | 1322 return OrthancPluginErrorCode_Success; |
1260 } | 1323 } |
1261 ORTHANC_PLUGINS_DATABASE_CATCH; | 1324 ORTHANC_PLUGINS_DATABASE_CATCH; |
1262 } | 1325 } |
1263 | 1326 |
1267 { | 1330 { |
1268 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1331 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1269 | 1332 |
1270 try | 1333 try |
1271 { | 1334 { |
1272 *version = adapter->GetBackend().GetDatabaseVersion(); | 1335 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1336 *version = adapter->GetBackend().GetDatabaseVersion(accessor.GetManager()); | |
1273 return OrthancPluginErrorCode_Success; | 1337 return OrthancPluginErrorCode_Success; |
1274 } | 1338 } |
1275 ORTHANC_PLUGINS_DATABASE_CATCH; | 1339 ORTHANC_PLUGINS_DATABASE_CATCH; |
1276 } | 1340 } |
1277 | 1341 |
1282 { | 1346 { |
1283 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1347 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1284 | 1348 |
1285 try | 1349 try |
1286 { | 1350 { |
1287 adapter->GetBackend().UpgradeDatabase(targetVersion, storageArea); | 1351 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1352 adapter->GetBackend().UpgradeDatabase(accessor.GetManager(), targetVersion, storageArea); | |
1288 return OrthancPluginErrorCode_Success; | 1353 return OrthancPluginErrorCode_Success; |
1289 } | 1354 } |
1290 ORTHANC_PLUGINS_DATABASE_CATCH; | 1355 ORTHANC_PLUGINS_DATABASE_CATCH; |
1291 } | 1356 } |
1292 | 1357 |
1296 { | 1361 { |
1297 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1362 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1298 | 1363 |
1299 try | 1364 try |
1300 { | 1365 { |
1301 adapter->GetBackend().ClearMainDicomTags(internalId); | 1366 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1367 adapter->GetBackend().ClearMainDicomTags(accessor.GetManager(), internalId); | |
1302 return OrthancPluginErrorCode_Success; | 1368 return OrthancPluginErrorCode_Success; |
1303 } | 1369 } |
1304 ORTHANC_PLUGINS_DATABASE_CATCH; | 1370 ORTHANC_PLUGINS_DATABASE_CATCH; |
1305 } | 1371 } |
1306 | 1372 |
1320 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1386 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1321 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_MatchingResource); | 1387 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_MatchingResource); |
1322 | 1388 |
1323 try | 1389 try |
1324 { | 1390 { |
1391 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1392 | |
1325 std::vector<Orthanc::DatabaseConstraint> lookup; | 1393 std::vector<Orthanc::DatabaseConstraint> lookup; |
1326 lookup.reserve(constraintsCount); | 1394 lookup.reserve(constraintsCount); |
1327 | 1395 |
1328 for (uint32_t i = 0; i < constraintsCount; i++) | 1396 for (uint32_t i = 0; i < constraintsCount; i++) |
1329 { | 1397 { |
1330 lookup.push_back(Orthanc::DatabaseConstraint(constraints[i])); | 1398 lookup.push_back(Orthanc::DatabaseConstraint(constraints[i])); |
1331 } | 1399 } |
1332 | 1400 |
1333 adapter->GetBackend().LookupResources(*output, lookup, queryLevel, limit, (requestSomeInstance != 0)); | 1401 adapter->GetBackend().LookupResources(*output, accessor.GetManager(), lookup, queryLevel, limit, (requestSomeInstance != 0)); |
1334 return OrthancPluginErrorCode_Success; | 1402 return OrthancPluginErrorCode_Success; |
1335 } | 1403 } |
1336 ORTHANC_PLUGINS_DATABASE_CATCH; | 1404 ORTHANC_PLUGINS_DATABASE_CATCH; |
1337 } | 1405 } |
1338 #endif | 1406 #endif |
1348 { | 1416 { |
1349 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1417 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1350 | 1418 |
1351 try | 1419 try |
1352 { | 1420 { |
1353 adapter->GetBackend().CreateInstance(*target, hashPatient, hashStudy, hashSeries, hashInstance); | 1421 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1422 adapter->GetBackend().CreateInstance(*target, accessor.GetManager(), hashPatient, hashStudy, hashSeries, hashInstance); | |
1354 return OrthancPluginErrorCode_Success; | 1423 return OrthancPluginErrorCode_Success; |
1355 } | 1424 } |
1356 ORTHANC_PLUGINS_DATABASE_CATCH; | 1425 ORTHANC_PLUGINS_DATABASE_CATCH; |
1357 } | 1426 } |
1358 #endif | 1427 #endif |
1370 { | 1439 { |
1371 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1440 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1372 | 1441 |
1373 try | 1442 try |
1374 { | 1443 { |
1375 adapter->GetBackend().SetResourcesContent(countIdentifierTags, identifierTags, | 1444 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1376 countMainDicomTags, mainDicomTags, | 1445 adapter->GetBackend().SetResourcesContent(accessor.GetManager(), countIdentifierTags, identifierTags, |
1377 countMetadata, metadata); | 1446 countMainDicomTags, mainDicomTags, countMetadata, metadata); |
1378 return OrthancPluginErrorCode_Success; | 1447 return OrthancPluginErrorCode_Success; |
1379 } | 1448 } |
1380 ORTHANC_PLUGINS_DATABASE_CATCH; | 1449 ORTHANC_PLUGINS_DATABASE_CATCH; |
1381 } | 1450 } |
1382 #endif | 1451 #endif |
1392 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1461 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1393 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); | 1462 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_None); |
1394 | 1463 |
1395 try | 1464 try |
1396 { | 1465 { |
1466 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1467 | |
1397 std::list<std::string> values; | 1468 std::list<std::string> values; |
1398 adapter->GetBackend().GetChildrenMetadata(values, resourceId, metadata); | 1469 adapter->GetBackend().GetChildrenMetadata(values, accessor.GetManager(), resourceId, metadata); |
1399 | 1470 |
1400 for (std::list<std::string>::const_iterator | 1471 for (std::list<std::string>::const_iterator |
1401 it = values.begin(); it != values.end(); ++it) | 1472 it = values.begin(); it != values.end(); ++it) |
1402 { | 1473 { |
1403 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), | 1474 OrthancPluginDatabaseAnswerString(adapter->GetBackend().GetContext(), |
1417 { | 1488 { |
1418 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1489 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1419 | 1490 |
1420 try | 1491 try |
1421 { | 1492 { |
1422 *result = adapter->GetBackend().GetLastChangeIndex(); | 1493 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1494 *result = adapter->GetBackend().GetLastChangeIndex(accessor.GetManager()); | |
1423 return OrthancPluginErrorCode_Success; | 1495 return OrthancPluginErrorCode_Success; |
1424 } | 1496 } |
1425 ORTHANC_PLUGINS_DATABASE_CATCH; | 1497 ORTHANC_PLUGINS_DATABASE_CATCH; |
1426 } | 1498 } |
1427 | 1499 |
1432 { | 1504 { |
1433 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); | 1505 DatabaseBackendAdapterV2::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV2::Adapter*>(payload); |
1434 | 1506 |
1435 try | 1507 try |
1436 { | 1508 { |
1437 adapter->GetBackend().TagMostRecentPatient(patientId); | 1509 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); |
1510 adapter->GetBackend().TagMostRecentPatient(accessor.GetManager(), patientId); | |
1438 return OrthancPluginErrorCode_Success; | 1511 return OrthancPluginErrorCode_Success; |
1439 } | 1512 } |
1440 ORTHANC_PLUGINS_DATABASE_CATCH; | 1513 ORTHANC_PLUGINS_DATABASE_CATCH; |
1441 } | 1514 } |
1442 | 1515 |
1452 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1525 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1453 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Metadata); | 1526 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_Metadata); |
1454 | 1527 |
1455 try | 1528 try |
1456 { | 1529 { |
1530 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1531 | |
1457 std::map<int32_t, std::string> result; | 1532 std::map<int32_t, std::string> result; |
1458 adapter->GetBackend().GetAllMetadata(result, resourceId); | 1533 adapter->GetBackend().GetAllMetadata(result, accessor.GetManager(), resourceId); |
1459 | 1534 |
1460 for (std::map<int32_t, std::string>::const_iterator | 1535 for (std::map<int32_t, std::string>::const_iterator |
1461 it = result.begin(); it != result.end(); ++it) | 1536 it = result.begin(); it != result.end(); ++it) |
1462 { | 1537 { |
1463 OrthancPluginDatabaseAnswerMetadata(adapter->GetBackend().GetContext(), | 1538 OrthancPluginDatabaseAnswerMetadata(adapter->GetBackend().GetContext(), |
1487 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); | 1562 std::unique_ptr<DatabaseBackendAdapterV2::Output> output(dynamic_cast<DatabaseBackendAdapterV2::Output*>(adapter->GetBackend().CreateOutput())); |
1488 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_String); | 1563 output->SetAllowedAnswers(DatabaseBackendAdapterV2::Output::AllowedAnswers_String); |
1489 | 1564 |
1490 try | 1565 try |
1491 { | 1566 { |
1567 DatabaseBackendAdapterV2::Adapter::DatabaseAccessor accessor(*adapter); | |
1568 | |
1492 std::string parent; | 1569 std::string parent; |
1493 if (adapter->GetBackend().LookupResourceAndParent(*id, *type, parent, publicId)) | 1570 if (adapter->GetBackend().LookupResourceAndParent(*id, *type, parent, accessor.GetManager(), publicId)) |
1494 { | 1571 { |
1495 *isExisting = 1; | 1572 *isExisting = 1; |
1496 | 1573 |
1497 if (!parent.empty()) | 1574 if (!parent.empty()) |
1498 { | 1575 { |