# HG changeset patch # User Sebastien Jodogne # Date 1446114168 -3600 # Node ID f4286d99ee0a385661805e56abf19ccb73e11554 # Parent 51db4a25a741adf6d83946e83ab6588d23e6e662 fix sample database plugin diff -r 51db4a25a741 -r f4286d99ee0a Core/DicomFormat/DicomValue.cpp --- a/Core/DicomFormat/DicomValue.cpp Thu Oct 29 11:09:00 2015 +0100 +++ b/Core/DicomFormat/DicomValue.cpp Thu Oct 29 11:22:48 2015 +0100 @@ -81,10 +81,13 @@ } +#if !defined(ORTHANC_ENABLE_BASE64) || ORTHANC_ENABLE_BASE64 == 1 void DicomValue::FormatDataUriScheme(std::string& target, const std::string& mime) const { Toolbox::EncodeBase64(target, GetContent()); target.insert(0, "data:" + mime + ";base64,"); } +#endif + } diff -r 51db4a25a741 -r f4286d99ee0a Core/DicomFormat/DicomValue.h --- a/Core/DicomFormat/DicomValue.h Thu Oct 29 11:09:00 2015 +0100 +++ b/Core/DicomFormat/DicomValue.h Thu Oct 29 11:22:48 2015 +0100 @@ -78,6 +78,7 @@ DicomValue* Clone() const; +#if !defined(ORTHANC_ENABLE_BASE64) || ORTHANC_ENABLE_BASE64 == 1 void FormatDataUriScheme(std::string& target, const std::string& mime) const; @@ -85,5 +86,6 @@ { FormatDataUriScheme(target, "application/octet-stream"); } +#endif }; } diff -r 51db4a25a741 -r f4286d99ee0a OrthancServer/DatabaseWrapperBase.cpp --- a/OrthancServer/DatabaseWrapperBase.cpp Thu Oct 29 11:09:00 2015 +0100 +++ b/OrthancServer/DatabaseWrapperBase.cpp Thu Oct 29 11:22:48 2015 +0100 @@ -695,10 +695,6 @@ switch (type) { - case IdentifierConstraintType_Equal: - s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value=?")); - break; - case IdentifierConstraintType_GreaterOrEqual: s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value>=?")); break; @@ -711,8 +707,10 @@ s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value GLOB ?")); break; + case IdentifierConstraintType_Equal: default: - throw OrthancException(ErrorCode_ParameterOutOfRange); + s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value=?")); + break; } assert(s.get() != NULL); diff -r 51db4a25a741 -r f4286d99ee0a Plugins/Engine/PluginsEnumerations.cpp --- a/Plugins/Engine/PluginsEnumerations.cpp Thu Oct 29 11:09:00 2015 +0100 +++ b/Plugins/Engine/PluginsEnumerations.cpp Thu Oct 29 11:22:48 2015 +0100 @@ -251,6 +251,28 @@ } + IdentifierConstraintType Convert(OrthancPluginIdentifierConstraint constraint) + { + switch (constraint) + { + case OrthancPluginIdentifierConstraint_Equal: + return IdentifierConstraintType_Equal; + + case OrthancPluginIdentifierConstraint_GreaterOrEqual: + return IdentifierConstraintType_GreaterOrEqual; + + case OrthancPluginIdentifierConstraint_SmallerOrEqual: + return IdentifierConstraintType_SmallerOrEqual; + + case OrthancPluginIdentifierConstraint_Wildcard: + return IdentifierConstraintType_Wildcard; + + default: + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + } + + #if !defined(ORTHANC_ENABLE_DCMTK) || ORTHANC_ENABLE_DCMTK != 0 DcmEVR Convert(OrthancPluginValueRepresentation vr) { diff -r 51db4a25a741 -r f4286d99ee0a Plugins/Engine/PluginsEnumerations.h --- a/Plugins/Engine/PluginsEnumerations.h Thu Oct 29 11:09:00 2015 +0100 +++ b/Plugins/Engine/PluginsEnumerations.h Thu Oct 29 11:22:48 2015 +0100 @@ -63,6 +63,8 @@ OrthancPluginIdentifierConstraint Convert(IdentifierConstraintType constraint); + IdentifierConstraintType Convert(OrthancPluginIdentifierConstraint constraint); + #if !defined(ORTHANC_ENABLE_DCMTK) || ORTHANC_ENABLE_DCMTK != 0 DcmEVR Convert(OrthancPluginValueRepresentation vr); #endif diff -r 51db4a25a741 -r f4286d99ee0a Plugins/Samples/DatabasePlugin/CMakeLists.txt --- a/Plugins/Samples/DatabasePlugin/CMakeLists.txt Thu Oct 29 11:09:00 2015 +0100 +++ b/Plugins/Samples/DatabasePlugin/CMakeLists.txt Thu Oct 29 11:22:48 2015 +0100 @@ -46,6 +46,7 @@ ${ORTHANC_ROOT}/Core/DicomFormat/DicomArray.cpp ${ORTHANC_ROOT}/Core/DicomFormat/DicomMap.cpp ${ORTHANC_ROOT}/Core/DicomFormat/DicomTag.cpp + ${ORTHANC_ROOT}/Core/DicomFormat/DicomValue.cpp ${ORTHANC_ROOT}/Core/Enumerations.cpp ${ORTHANC_ROOT}/Core/SQLite/Connection.cpp ${ORTHANC_ROOT}/Core/SQLite/FunctionContext.cpp diff -r 51db4a25a741 -r f4286d99ee0a Plugins/Samples/DatabasePlugin/Database.cpp --- a/Plugins/Samples/DatabasePlugin/Database.cpp Thu Oct 29 11:09:00 2015 +0100 +++ b/Plugins/Samples/DatabasePlugin/Database.cpp Thu Oct 29 11:22:48 2015 +0100 @@ -340,7 +340,7 @@ { GetOutput().AnswerDicomTag(arr.GetElement(i).GetTag().GetGroup(), arr.GetElement(i).GetTag().GetElement(), - arr.GetElement(i).GetValue().AsString()); + arr.GetElement(i).GetValue().GetContent()); } } diff -r 51db4a25a741 -r f4286d99ee0a Plugins/Samples/DatabasePlugin/Database.h --- a/Plugins/Samples/DatabasePlugin/Database.h Thu Oct 29 11:09:00 2015 +0100 +++ b/Plugins/Samples/DatabasePlugin/Database.h Thu Oct 29 11:22:48 2015 +0100 @@ -99,6 +99,12 @@ virtual void DeleteResource(int64_t id); + virtual void GetAllInternalIds(std::list& target, + OrthancPluginResourceType resourceType) + { + base_.GetAllInternalIds(target, Orthanc::Plugins::Convert(resourceType)); + } + virtual void GetAllPublicIds(std::list& target, OrthancPluginResourceType resourceType) { @@ -187,14 +193,16 @@ return base_.LookupGlobalProperty(target, static_cast(property)); } - virtual void LookupIdentifierExact(std::list& target /*out*/, - OrthancPluginResourceType level, - uint16_t group, - uint16_t element, - const char* value) + virtual void LookupIdentifier(std::list& target /*out*/, + OrthancPluginResourceType level, + uint16_t group, + uint16_t element, + OrthancPluginIdentifierConstraint constraint, + const char* value) { - base_.LookupIdentifierExact(target, Orthanc::Plugins::Convert(level), - Orthanc::DicomTag(group, element), value); + base_.LookupIdentifier(target, Orthanc::Plugins::Convert(level), + Orthanc::DicomTag(group, element), + Orthanc::Plugins::Convert(constraint), value); } virtual bool LookupMetadata(std::string& target /*out*/,