Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 2626:e09021ddc00d jobs
cleanup
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 25 May 2018 11:25:33 +0200 |
parents | 714dcddeb65f |
children | 3fc310ceb6d4 |
comparison
equal
deleted
inserted
replaced
2625:5469dda691cd | 2626:e09021ddc00d |
---|---|
605 /*************************************************************************** | 605 /*************************************************************************** |
606 * DICOM C-Store SCU | 606 * DICOM C-Store SCU |
607 ***************************************************************************/ | 607 ***************************************************************************/ |
608 | 608 |
609 static bool GetInstancesToExport(Json::Value& otherArguments, | 609 static bool GetInstancesToExport(Json::Value& otherArguments, |
610 std::list<std::string>& instances, | 610 SetOfInstancesJob& job, |
611 const std::string& remote, | 611 const std::string& remote, |
612 RestApiPostCall& call) | 612 RestApiPostCall& call) |
613 { | 613 { |
614 otherArguments = Json::objectValue; | 614 otherArguments = Json::objectValue; |
615 ServerContext& context = OrthancRestApi::GetContext(call); | 615 ServerContext& context = OrthancRestApi::GetContext(call); |
679 | 679 |
680 if (Configuration::GetGlobalBoolParameter("LogExportedResources", true)) | 680 if (Configuration::GetGlobalBoolParameter("LogExportedResources", true)) |
681 { | 681 { |
682 context.GetIndex().LogExportedResource(stripped, remote); | 682 context.GetIndex().LogExportedResource(stripped, remote); |
683 } | 683 } |
684 | 684 |
685 std::list<std::string> tmp; | 685 context.AddChildInstances(job, stripped); |
686 context.GetIndex().GetChildInstances(tmp, stripped); | |
687 | |
688 for (std::list<std::string>::const_iterator | |
689 it = tmp.begin(); it != tmp.end(); ++it) | |
690 { | |
691 instances.push_back(*it); | |
692 } | |
693 } | 686 } |
694 | 687 |
695 return true; | 688 return true; |
696 } | 689 } |
697 | 690 |
698 | 691 |
699 static void SubmitJob(RestApiPostCall& call, | 692 static void SubmitJob(RestApiPostCall& call, |
700 const Json::Value& request, | 693 const Json::Value& request, |
701 const std::list<std::string>& instances, | |
702 SetOfInstancesJob* jobRaw) | 694 SetOfInstancesJob* jobRaw) |
703 { | 695 { |
704 std::auto_ptr<SetOfInstancesJob> job(jobRaw); | 696 std::auto_ptr<SetOfInstancesJob> job(jobRaw); |
705 | 697 |
706 if (job.get() == NULL) | 698 if (job.get() == NULL) |
713 bool permissive = Toolbox::GetJsonBooleanField(request, "Permissive", true); | 705 bool permissive = Toolbox::GetJsonBooleanField(request, "Permissive", true); |
714 bool asynchronous = Toolbox::GetJsonBooleanField(request, "Asynchronous", false); | 706 bool asynchronous = Toolbox::GetJsonBooleanField(request, "Asynchronous", false); |
715 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); | 707 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); |
716 | 708 |
717 job->SetPermissive(permissive); | 709 job->SetPermissive(permissive); |
718 job->Reserve(instances.size()); | |
719 | |
720 for (std::list<std::string>::const_iterator | |
721 it = instances.begin(); it != instances.end(); ++it) | |
722 { | |
723 job->AddInstance(*it); | |
724 } | |
725 | 710 |
726 if (asynchronous) | 711 if (asynchronous) |
727 { | 712 { |
728 // Asynchronous mode: Submit the job, but don't wait for its completion | 713 // Asynchronous mode: Submit the job, but don't wait for its completion |
729 std::string id; | 714 std::string id; |
750 ServerContext& context = OrthancRestApi::GetContext(call); | 735 ServerContext& context = OrthancRestApi::GetContext(call); |
751 | 736 |
752 std::string remote = call.GetUriComponent("id", ""); | 737 std::string remote = call.GetUriComponent("id", ""); |
753 | 738 |
754 Json::Value request; | 739 Json::Value request; |
755 std::list<std::string> instances; | |
756 if (!GetInstancesToExport(request, instances, remote, call)) | |
757 { | |
758 return; | |
759 } | |
760 | |
761 std::string localAet = Toolbox::GetJsonStringField | |
762 (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle()); | |
763 std::string moveOriginatorAET = Toolbox::GetJsonStringField | |
764 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); | |
765 int moveOriginatorID = Toolbox::GetJsonIntegerField | |
766 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); | |
767 | |
768 RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote); | |
769 | |
770 std::auto_ptr<DicomModalityStoreJob> job(new DicomModalityStoreJob(context)); | 740 std::auto_ptr<DicomModalityStoreJob> job(new DicomModalityStoreJob(context)); |
771 job->SetDescription("REST API"); | 741 |
772 job->SetLocalAet(localAet); | 742 if (GetInstancesToExport(request, *job, remote, call)) |
773 job->SetRemoteModality(p); | 743 { |
774 | 744 std::string localAet = Toolbox::GetJsonStringField |
775 if (moveOriginatorID != 0) | 745 (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle()); |
776 { | 746 std::string moveOriginatorAET = Toolbox::GetJsonStringField |
777 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); | 747 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); |
778 } | 748 int moveOriginatorID = Toolbox::GetJsonIntegerField |
779 | 749 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); |
780 SubmitJob(call, request, instances, job.release()); | 750 |
751 RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote); | |
752 | |
753 job->SetDescription("REST API"); | |
754 job->SetLocalAet(localAet); | |
755 job->SetRemoteModality(p); | |
756 | |
757 if (moveOriginatorID != 0) | |
758 { | |
759 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); | |
760 } | |
761 | |
762 SubmitJob(call, request, job.release()); | |
763 } | |
781 } | 764 } |
782 | 765 |
783 | 766 |
784 /*************************************************************************** | 767 /*************************************************************************** |
785 * DICOM C-Move SCU | 768 * DICOM C-Move SCU |
896 ServerContext& context = OrthancRestApi::GetContext(call); | 879 ServerContext& context = OrthancRestApi::GetContext(call); |
897 | 880 |
898 std::string remote = call.GetUriComponent("id", ""); | 881 std::string remote = call.GetUriComponent("id", ""); |
899 | 882 |
900 Json::Value request; | 883 Json::Value request; |
901 std::list<std::string> instances; | |
902 if (!GetInstancesToExport(request, instances, remote, call)) | |
903 { | |
904 return; | |
905 } | |
906 | |
907 WebServiceParameters peer; | |
908 Configuration::GetOrthancPeer(peer, remote); | |
909 | |
910 std::auto_ptr<OrthancPeerStoreJob> job(new OrthancPeerStoreJob(context)); | 884 std::auto_ptr<OrthancPeerStoreJob> job(new OrthancPeerStoreJob(context)); |
911 job->SetDescription("REST API"); | 885 |
912 job->SetPeer(peer); | 886 if (GetInstancesToExport(request, *job, remote, call)) |
913 | 887 { |
914 SubmitJob(call, request, instances, job.release()); | 888 WebServiceParameters peer; |
889 Configuration::GetOrthancPeer(peer, remote); | |
890 | |
891 job->SetDescription("REST API"); | |
892 job->SetPeer(peer); | |
893 | |
894 SubmitJob(call, request, job.release()); | |
895 } | |
915 } | 896 } |
916 | 897 |
917 | 898 |
918 // DICOM bridge ------------------------------------------------------------- | 899 // DICOM bridge ------------------------------------------------------------- |
919 | 900 |