comparison OrthancServer/ServerEnumerations.cpp @ 435:28ba73274919

registration of user-defined metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 15 May 2013 15:57:05 +0200
parents ccf3a0a43dac
children d51186bf7602
comparison
equal deleted inserted replaced
434:ccf3a0a43dac 435:28ba73274919
30 **/ 30 **/
31 31
32 #include "ServerEnumerations.h" 32 #include "ServerEnumerations.h"
33 33
34 #include "../Core/OrthancException.h" 34 #include "../Core/OrthancException.h"
35 #include "../Core/EnumerationDictionary.h"
36
37 #include <boost/thread.hpp>
35 38
36 namespace Orthanc 39 namespace Orthanc
37 { 40 {
41 static boost::mutex enumerationsMutex_;
42 static Toolbox::EnumerationDictionary<MetadataType> dictMetadataType_;
43
44 void InitializeServerEnumerations()
45 {
46 boost::mutex::scoped_lock lock(enumerationsMutex_);
47
48 dictMetadataType_.Add(MetadataType_Instance_IndexInSeries, "IndexInSeries");
49 dictMetadataType_.Add(MetadataType_Instance_ReceptionDate, "ReceptionDate");
50 dictMetadataType_.Add(MetadataType_Instance_RemoteAet, "RemoteAET");
51 dictMetadataType_.Add(MetadataType_Series_ExpectedNumberOfInstances, "ExpectedNumberOfInstances");
52 dictMetadataType_.Add(MetadataType_ModifiedFrom, "ModifiedFrom");
53 dictMetadataType_.Add(MetadataType_AnonymizedFrom, "AnonymizedFrom");
54 dictMetadataType_.Add(MetadataType_LastUpdate, "LastUpdate");
55 }
56
57 void RegisterUserMetadata(int metadata,
58 const std::string name)
59 {
60 boost::mutex::scoped_lock lock(enumerationsMutex_);
61
62 if (metadata < static_cast<int>(MetadataType_StartUser) ||
63 metadata > static_cast<int>(MetadataType_EndUser))
64 {
65 throw OrthancException(ErrorCode_ParameterOutOfRange);
66 }
67
68 dictMetadataType_.Add(static_cast<MetadataType>(metadata), name);
69 }
70
71 const char* EnumerationToString(MetadataType type)
72 {
73 boost::mutex::scoped_lock lock(enumerationsMutex_);
74 return dictMetadataType_.Translate(type).c_str();
75 }
76
77 MetadataType StringToMetadata(const std::string& str)
78 {
79 boost::mutex::scoped_lock lock(enumerationsMutex_);
80 return dictMetadataType_.Translate(str);
81 }
82
38 const char* EnumerationToString(ResourceType type) 83 const char* EnumerationToString(ResourceType type)
39 { 84 {
40 switch (type) 85 switch (type)
41 { 86 {
42 case ResourceType_Patient: 87 case ResourceType_Patient: