Mercurial > hg > orthanc-databases
comparison Framework/Plugins/DatabaseBackendAdapterV4.cpp @ 384:e236be67e5f9 db-protobuf
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 03 Apr 2023 10:46:01 +0200 |
parents | bed7615c2484 |
children | 3d6886f3e5b3 |
comparison
equal
deleted
inserted
replaced
383:bed7615c2484 | 384:e236be67e5f9 |
---|---|
646 typedef std::map<int32_t, std::string> Values; | 646 typedef std::map<int32_t, std::string> Values; |
647 | 647 |
648 Values values; | 648 Values values; |
649 backend.GetAllMetadata(values, manager, request.get_all_metadata().id()); | 649 backend.GetAllMetadata(values, manager, request.get_all_metadata().id()); |
650 | 650 |
651 response.mutable_get_all_metadata()->mutable_metadata()->Reserve(values.size()); | |
651 for (Values::const_iterator it = values.begin(); it != values.end(); ++it) | 652 for (Values::const_iterator it = values.begin(); it != values.end(); ++it) |
652 { | 653 { |
653 Orthanc::DatabasePluginMessages::GetAllMetadata_Response_Metadata* metadata = | 654 Orthanc::DatabasePluginMessages::GetAllMetadata_Response_Metadata* metadata = |
654 response.mutable_get_all_metadata()->add_metadata(); | 655 response.mutable_get_all_metadata()->add_metadata(); |
655 metadata->set_type(it->first); | 656 metadata->set_type(it->first); |
662 case Orthanc::DatabasePluginMessages::OPERATION_GET_ALL_PUBLIC_IDS: | 663 case Orthanc::DatabasePluginMessages::OPERATION_GET_ALL_PUBLIC_IDS: |
663 { | 664 { |
664 std::list<std::string> values; | 665 std::list<std::string> values; |
665 backend.GetAllPublicIds(values, manager, Convert(request.get_all_public_ids().resource_type())); | 666 backend.GetAllPublicIds(values, manager, Convert(request.get_all_public_ids().resource_type())); |
666 | 667 |
668 response.mutable_get_all_public_ids()->mutable_ids()->Reserve(values.size()); | |
667 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) | 669 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) |
668 { | 670 { |
669 response.mutable_get_all_public_ids()->add_ids(*it); | 671 response.mutable_get_all_public_ids()->add_ids(*it); |
670 } | 672 } |
671 | 673 |
677 std::list<std::string> values; | 679 std::list<std::string> values; |
678 backend.GetAllPublicIds(values, manager, Convert(request.get_all_public_ids_with_limits().resource_type()), | 680 backend.GetAllPublicIds(values, manager, Convert(request.get_all_public_ids_with_limits().resource_type()), |
679 request.get_all_public_ids_with_limits().since(), | 681 request.get_all_public_ids_with_limits().since(), |
680 request.get_all_public_ids_with_limits().limit()); | 682 request.get_all_public_ids_with_limits().limit()); |
681 | 683 |
684 response.mutable_get_all_public_ids_with_limits()->mutable_ids()->Reserve(values.size()); | |
682 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) | 685 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) |
683 { | 686 { |
684 response.mutable_get_all_public_ids_with_limits()->add_ids(*it); | 687 response.mutable_get_all_public_ids_with_limits()->add_ids(*it); |
685 } | 688 } |
686 | 689 |
701 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_INTERNAL_ID: | 704 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_INTERNAL_ID: |
702 { | 705 { |
703 std::list<int64_t> values; | 706 std::list<int64_t> values; |
704 backend.GetChildrenInternalId(values, manager, request.get_children_internal_id().id()); | 707 backend.GetChildrenInternalId(values, manager, request.get_children_internal_id().id()); |
705 | 708 |
709 response.mutable_get_children_internal_id()->mutable_ids()->Reserve(values.size()); | |
706 for (std::list<int64_t>::const_iterator it = values.begin(); it != values.end(); ++it) | 710 for (std::list<int64_t>::const_iterator it = values.begin(); it != values.end(); ++it) |
707 { | 711 { |
708 response.mutable_get_children_internal_id()->add_ids(*it); | 712 response.mutable_get_children_internal_id()->add_ids(*it); |
709 } | 713 } |
710 | 714 |
714 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_PUBLIC_ID: | 718 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_PUBLIC_ID: |
715 { | 719 { |
716 std::list<std::string> values; | 720 std::list<std::string> values; |
717 backend.GetChildrenPublicId(values, manager, request.get_children_public_id().id()); | 721 backend.GetChildrenPublicId(values, manager, request.get_children_public_id().id()); |
718 | 722 |
723 response.mutable_get_children_public_id()->mutable_ids()->Reserve(values.size()); | |
719 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) | 724 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) |
720 { | 725 { |
721 response.mutable_get_children_public_id()->add_ids(*it); | 726 response.mutable_get_children_public_id()->add_ids(*it); |
722 } | 727 } |
723 | 728 |
776 break; | 781 break; |
777 } | 782 } |
778 | 783 |
779 case Orthanc::DatabasePluginMessages::OPERATION_GET_RESOURCE_TYPE: | 784 case Orthanc::DatabasePluginMessages::OPERATION_GET_RESOURCE_TYPE: |
780 { | 785 { |
781 OrthancPluginResourceType type = backend.GetResourceType(manager, request.get_public_id().id()); | 786 OrthancPluginResourceType type = backend.GetResourceType(manager, request.get_resource_type().id()); |
782 response.mutable_get_resource_type()->set_type(Convert(type)); | 787 response.mutable_get_resource_type()->set_type(Convert(type)); |
783 break; | 788 break; |
784 } | 789 } |
785 | 790 |
786 case Orthanc::DatabasePluginMessages::OPERATION_GET_TOTAL_COMPRESSED_SIZE: | 791 case Orthanc::DatabasePluginMessages::OPERATION_GET_TOTAL_COMPRESSED_SIZE: |
805 case Orthanc::DatabasePluginMessages::OPERATION_LIST_AVAILABLE_ATTACHMENTS: | 810 case Orthanc::DatabasePluginMessages::OPERATION_LIST_AVAILABLE_ATTACHMENTS: |
806 { | 811 { |
807 std::list<int32_t> values; | 812 std::list<int32_t> values; |
808 backend.ListAvailableAttachments(values, manager, request.list_available_attachments().id()); | 813 backend.ListAvailableAttachments(values, manager, request.list_available_attachments().id()); |
809 | 814 |
815 response.mutable_list_available_attachments()->mutable_attachments()->Reserve(values.size()); | |
810 for (std::list<int32_t>::const_iterator it = values.begin(); it != values.end(); ++it) | 816 for (std::list<int32_t>::const_iterator it = values.begin(); it != values.end(); ++it) |
811 { | 817 { |
812 response.mutable_list_available_attachments()->add_attachments(*it); | 818 response.mutable_list_available_attachments()->add_attachments(*it); |
813 } | 819 } |
814 | 820 |
1050 OrthancPluginResourcesContentTags tag; | 1056 OrthancPluginResourcesContentTags tag; |
1051 tag.resource = request.set_resources_content().tags(i).resource_id(); | 1057 tag.resource = request.set_resources_content().tags(i).resource_id(); |
1052 tag.group = request.set_resources_content().tags(i).group(); | 1058 tag.group = request.set_resources_content().tags(i).group(); |
1053 tag.element = request.set_resources_content().tags(i).element(); | 1059 tag.element = request.set_resources_content().tags(i).element(); |
1054 tag.value = request.set_resources_content().tags(i).value().c_str(); | 1060 tag.value = request.set_resources_content().tags(i).value().c_str(); |
1055 | 1061 |
1056 if (request.set_resources_content().tags(i).is_identifier()) | 1062 if (request.set_resources_content().tags(i).is_identifier()) |
1057 { | 1063 { |
1058 identifierTags.push_back(tag); | 1064 identifierTags.push_back(tag); |
1059 } | 1065 } |
1060 else | 1066 else |
1061 { | 1067 { |
1062 mainDicomTags.push_back(tag); | 1068 mainDicomTags.push_back(tag); |
1063 } | 1069 } |
1064 } | 1070 } |
1065 | 1071 |
1066 std::vector<OrthancPluginResourcesContentMetadata> metadata(request.set_resources_content().metadata().size()); | 1072 std::vector<OrthancPluginResourcesContentMetadata> metadata; |
1073 metadata.reserve(request.set_resources_content().metadata().size()); | |
1074 | |
1067 for (int i = 0; i < request.set_resources_content().metadata().size(); i++) | 1075 for (int i = 0; i < request.set_resources_content().metadata().size(); i++) |
1068 { | 1076 { |
1069 OrthancPluginResourcesContentMetadata item; | 1077 OrthancPluginResourcesContentMetadata item; |
1070 item.resource = request.set_resources_content().metadata(i).resource_id(); | 1078 item.resource = request.set_resources_content().metadata(i).resource_id(); |
1071 item.metadata = request.set_resources_content().metadata(i).metadata(); | 1079 item.metadata = request.set_resources_content().metadata(i).metadata(); |
1083 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_METADATA: | 1091 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHILDREN_METADATA: |
1084 { | 1092 { |
1085 std::list<std::string> values; | 1093 std::list<std::string> values; |
1086 backend.GetChildrenMetadata(values, manager, request.get_children_metadata().id(), request.get_children_metadata().metadata()); | 1094 backend.GetChildrenMetadata(values, manager, request.get_children_metadata().id(), request.get_children_metadata().metadata()); |
1087 | 1095 |
1096 response.mutable_get_children_metadata()->mutable_values()->Reserve(values.size()); | |
1088 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) | 1097 for (std::list<std::string>::const_iterator it = values.begin(); it != values.end(); ++it) |
1089 { | 1098 { |
1090 response.mutable_get_children_metadata()->add_values(*it); | 1099 response.mutable_get_children_metadata()->add_values(*it); |
1091 } | 1100 } |
1092 | 1101 |
1109 { | 1118 { |
1110 response.mutable_lookup_resource_and_parent()->set_found(true); | 1119 response.mutable_lookup_resource_and_parent()->set_found(true); |
1111 response.mutable_lookup_resource_and_parent()->set_id(id); | 1120 response.mutable_lookup_resource_and_parent()->set_id(id); |
1112 response.mutable_lookup_resource_and_parent()->set_type(Convert(type)); | 1121 response.mutable_lookup_resource_and_parent()->set_type(Convert(type)); |
1113 | 1122 |
1114 if (parent.empty()) | 1123 switch (type) |
1115 { | 1124 { |
1116 response.mutable_lookup_resource_and_parent()->set_has_parent(true); | 1125 case OrthancPluginResourceType_Study: |
1117 } | 1126 case OrthancPluginResourceType_Series: |
1118 else | 1127 case OrthancPluginResourceType_Instance: |
1119 { | 1128 if (parent.empty()) |
1120 response.mutable_lookup_resource_and_parent()->set_has_parent(false); | 1129 { |
1121 response.mutable_lookup_resource_and_parent()->set_parent_public_id(parent); | 1130 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
1131 } | |
1132 else | |
1133 { | |
1134 response.mutable_lookup_resource_and_parent()->set_parent_public_id(parent); | |
1135 } | |
1136 break; | |
1137 | |
1138 case OrthancPluginResourceType_Patient: | |
1139 if (!parent.empty()) | |
1140 { | |
1141 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); | |
1142 } | |
1143 break; | |
1144 | |
1145 default: | |
1146 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
1122 } | 1147 } |
1123 } | 1148 } |
1124 else | 1149 else |
1125 { | 1150 { |
1126 response.mutable_lookup_resource_and_parent()->set_found(false); | 1151 response.mutable_lookup_resource_and_parent()->set_found(false); |