comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 3187:4bbadcd03966

refactoring retrieval of metadata from database
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 04 Feb 2019 12:06:19 +0100
parents 8ea7c4546c3a
children 810772486249
comparison
equal deleted inserted replaced
3184:5d1f5984dc41 3187:4bbadcd03966
703 static void ListMetadata(RestApiGetCall& call) 703 static void ListMetadata(RestApiGetCall& call)
704 { 704 {
705 CheckValidResourceType(call); 705 CheckValidResourceType(call);
706 706
707 std::string publicId = call.GetUriComponent("id", ""); 707 std::string publicId = call.GetUriComponent("id", "");
708 std::list<MetadataType> metadata; 708 std::map<MetadataType, std::string> metadata;
709 709
710 OrthancRestApi::GetIndex(call).ListAvailableMetadata(metadata, publicId); 710 OrthancRestApi::GetIndex(call).GetAllMetadata(metadata, publicId);
711 711
712 Json::Value result; 712 Json::Value result;
713 713
714 if (call.HasArgument("expand")) 714 if (call.HasArgument("expand"))
715 { 715 {
716 result = Json::objectValue; 716 result = Json::objectValue;
717 717
718 for (std::list<MetadataType>::const_iterator 718 for (std::map<MetadataType, std::string>::const_iterator
719 it = metadata.begin(); it != metadata.end(); ++it) 719 it = metadata.begin(); it != metadata.end(); ++it)
720 { 720 {
721 std::string value; 721 std::string key = EnumerationToString(it->first);
722 if (OrthancRestApi::GetIndex(call).LookupMetadata(value, publicId, *it)) 722 result[key] = it->second;
723 {
724 std::string key = EnumerationToString(*it);
725 result[key] = value;
726 }
727 } 723 }
728 } 724 }
729 else 725 else
730 { 726 {
731 result = Json::arrayValue; 727 result = Json::arrayValue;
732 728
733 for (std::list<MetadataType>::const_iterator 729 for (std::map<MetadataType, std::string>::const_iterator
734 it = metadata.begin(); it != metadata.end(); ++it) 730 it = metadata.begin(); it != metadata.end(); ++it)
735 { 731 {
736 result.append(EnumerationToString(*it)); 732 result.append(EnumerationToString(it->first));
737 } 733 }
738 } 734 }
739 735
740 call.GetOutput().AnswerJson(result); 736 call.GetOutput().AnswerJson(result);
741 } 737 }