# HG changeset patch # User Sebastien Jodogne # Date 1442591159 -7200 # Node ID bad4772b605c2748360d07447bbc599e85366b4e # Parent 77c4cc4def0f1adf45c47ed2d71e9d924d5be613 OrthancPluginErrorCode in database plugins diff -r 77c4cc4def0f -r bad4772b605c Plugins/Engine/OrthancPluginDatabase.cpp --- a/Plugins/Engine/OrthancPluginDatabase.cpp Fri Sep 18 16:46:35 2015 +0200 +++ b/Plugins/Engine/OrthancPluginDatabase.cpp Fri Sep 18 17:45:59 2015 +0200 @@ -35,6 +35,7 @@ #include "../../Core/OrthancException.h" #include "../../Core/Logging.h" +#include "PluginsEnumerations.h" #include @@ -224,9 +225,11 @@ tmp.compressedSize = attachment.GetCompressedSize(); tmp.compressedHash = attachment.GetCompressedMD5().c_str(); - if (backend_.addAttachment(payload_, id, &tmp) != 0) + OrthancPluginErrorCode error = backend_.addAttachment(payload_, id, &tmp); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -234,27 +237,33 @@ void OrthancPluginDatabase::AttachChild(int64_t parent, int64_t child) { - if (backend_.attachChild(payload_, parent, child) != 0) + OrthancPluginErrorCode error = backend_.attachChild(payload_, parent, child); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } void OrthancPluginDatabase::ClearChanges() { - if (backend_.clearChanges(payload_) != 0) + OrthancPluginErrorCode error = backend_.clearChanges(payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } void OrthancPluginDatabase::ClearExportedResources() { - if (backend_.clearExportedResources(payload_) != 0) + OrthancPluginErrorCode error = backend_.clearExportedResources(payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -264,9 +273,11 @@ { int64_t id; - if (backend_.createResource(&id, payload_, publicId.c_str(), Convert(type)) != 0) + OrthancPluginErrorCode error = backend_.createResource(&id, payload_, publicId.c_str(), Convert(type)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return id; @@ -276,9 +287,11 @@ void OrthancPluginDatabase::DeleteAttachment(int64_t id, FileContentType attachment) { - if (backend_.deleteAttachment(payload_, id, static_cast(attachment)) != 0) + OrthancPluginErrorCode error = backend_.deleteAttachment(payload_, id, static_cast(attachment)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -286,18 +299,22 @@ void OrthancPluginDatabase::DeleteMetadata(int64_t id, MetadataType type) { - if (backend_.deleteMetadata(payload_, id, static_cast(type)) != 0) + OrthancPluginErrorCode error = backend_.deleteMetadata(payload_, id, static_cast(type)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } void OrthancPluginDatabase::DeleteResource(int64_t id) { - if (backend_.deleteResource(payload_, id) != 0) + OrthancPluginErrorCode error = backend_.deleteResource(payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -329,9 +346,11 @@ { ResetAnswers(); - if (backend_.getAllPublicIds(GetContext(), payload_, Convert(resourceType)) != 0) + OrthancPluginErrorCode error = backend_.getAllPublicIds(GetContext(), payload_, Convert(resourceType)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -348,9 +367,12 @@ // This extension is available since Orthanc 0.9.4 ResetAnswers(); - if (extensions_.getAllPublicIdsWithLimit(GetContext(), payload_, Convert(resourceType), since, limit) != 0) + OrthancPluginErrorCode error = extensions_.getAllPublicIdsWithLimit + (GetContext(), payload_, Convert(resourceType), since, limit); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -399,9 +421,11 @@ answerDone_ = &done; done = false; - if (backend_.getChanges(GetContext(), payload_, since, maxResults) != 0) + OrthancPluginErrorCode error = backend_.getChanges(GetContext(), payload_, since, maxResults); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -411,9 +435,11 @@ { ResetAnswers(); - if (backend_.getChildrenInternalId(GetContext(), payload_, id) != 0) + OrthancPluginErrorCode error = backend_.getChildrenInternalId(GetContext(), payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -425,9 +451,11 @@ { ResetAnswers(); - if (backend_.getChildrenPublicId(GetContext(), payload_, id) != 0) + OrthancPluginErrorCode error = backend_.getChildrenPublicId(GetContext(), payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -444,9 +472,11 @@ answerDone_ = &done; done = false; - if (backend_.getExportedResources(GetContext(), payload_, since, maxResults) != 0) + OrthancPluginErrorCode error = backend_.getExportedResources(GetContext(), payload_, since, maxResults); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -459,9 +489,11 @@ answerChanges_ = ⌖ answerDone_ = &ignored; - if (backend_.getLastChange(GetContext(), payload_) != 0) + OrthancPluginErrorCode error = backend_.getLastChange(GetContext(), payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -474,9 +506,11 @@ answerExportedResources_ = ⌖ answerDone_ = &ignored; - if (backend_.getLastExportedResource(GetContext(), payload_) != 0) + OrthancPluginErrorCode error = backend_.getLastExportedResource(GetContext(), payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -487,9 +521,11 @@ ResetAnswers(); answerDicomMap_ = ↦ - if (backend_.getMainDicomTags(GetContext(), payload_, id) != 0) + OrthancPluginErrorCode error = backend_.getMainDicomTags(GetContext(), payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -499,8 +535,14 @@ ResetAnswers(); std::string s; - if (backend_.getPublicId(GetContext(), payload_, resourceId) != 0 || - !ForwardSingleAnswer(s)) + OrthancPluginErrorCode error = backend_.getPublicId(GetContext(), payload_, resourceId); + + if (error != OrthancPluginErrorCode_Success) + { + throw OrthancException(Plugins::Convert(error)); + } + + if (!ForwardSingleAnswer(s)) { throw OrthancException(ErrorCode_Plugin); } @@ -513,9 +555,11 @@ { uint64_t count; - if (backend_.getResourceCount(&count, payload_, Convert(resourceType)) != 0) + OrthancPluginErrorCode error = backend_.getResourceCount(&count, payload_, Convert(resourceType)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return count; @@ -526,9 +570,11 @@ { OrthancPluginResourceType type; - if (backend_.getResourceType(&type, payload_, resourceId) != 0) + OrthancPluginErrorCode error = backend_.getResourceType(&type, payload_, resourceId); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return Convert(type); @@ -539,9 +585,11 @@ { uint64_t size; - if (backend_.getTotalCompressedSize(&size, payload_) != 0) + OrthancPluginErrorCode error = backend_.getTotalCompressedSize(&size, payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return size; @@ -552,9 +600,11 @@ { uint64_t size; - if (backend_.getTotalUncompressedSize(&size, payload_) != 0) + OrthancPluginErrorCode error = backend_.getTotalUncompressedSize(&size, payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return size; @@ -565,9 +615,11 @@ { int32_t existing; - if (backend_.isExistingResource(&existing, payload_, internalId) != 0) + OrthancPluginErrorCode error = backend_.isExistingResource(&existing, payload_, internalId); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return (existing != 0); @@ -578,9 +630,11 @@ { int32_t isProtected; - if (backend_.isProtectedPatient(&isProtected, payload_, internalId) != 0) + OrthancPluginErrorCode error = backend_.isProtectedPatient(&isProtected, payload_, internalId); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return (isProtected != 0); @@ -592,9 +646,11 @@ { ResetAnswers(); - if (backend_.listAvailableMetadata(GetContext(), payload_, id) != 0) + OrthancPluginErrorCode error = backend_.listAvailableMetadata(GetContext(), payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } if (type_ != _OrthancPluginDatabaseAnswerType_None && @@ -621,9 +677,11 @@ { ResetAnswers(); - if (backend_.listAvailableAttachments(GetContext(), payload_, id) != 0) + OrthancPluginErrorCode error = backend_.listAvailableAttachments(GetContext(), payload_, id); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } if (type_ != _OrthancPluginDatabaseAnswerType_None && @@ -655,9 +713,11 @@ tmp.publicId = change.GetPublicId().c_str(); tmp.date = change.GetDate().c_str(); - if (backend_.logChange(payload_, &tmp) != 0) + OrthancPluginErrorCode error = backend_.logChange(payload_, &tmp); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -675,9 +735,11 @@ tmp.seriesInstanceUid = resource.GetSeriesInstanceUid().c_str(); tmp.sopInstanceUid = resource.GetSopInstanceUid().c_str(); - if (backend_.logExportedResource(payload_, &tmp) != 0) + OrthancPluginErrorCode error = backend_.logExportedResource(payload_, &tmp); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -688,9 +750,12 @@ { ResetAnswers(); - if (backend_.lookupAttachment(GetContext(), payload_, id, static_cast(contentType))) + OrthancPluginErrorCode error = backend_.lookupAttachment + (GetContext(), payload_, id, static_cast(contentType)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } if (type_ == _OrthancPluginDatabaseAnswerType_None) @@ -715,10 +780,12 @@ { ResetAnswers(); - if (backend_.lookupGlobalProperty(GetContext(), payload_, - static_cast(property))) + OrthancPluginErrorCode error = backend_.lookupGlobalProperty + (GetContext(), payload_, static_cast(property)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return ForwardSingleAnswer(target); @@ -736,9 +803,11 @@ tmp.element = tag.GetElement(); tmp.value = value.c_str(); - if (backend_.lookupIdentifier(GetContext(), payload_, &tmp) != 0) + OrthancPluginErrorCode error = backend_.lookupIdentifier(GetContext(), payload_, &tmp); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -750,9 +819,11 @@ { ResetAnswers(); - if (backend_.lookupIdentifier2(GetContext(), payload_, value.c_str()) != 0) + OrthancPluginErrorCode error = backend_.lookupIdentifier2(GetContext(), payload_, value.c_str()); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } ForwardAnswers(target); @@ -765,9 +836,11 @@ { ResetAnswers(); - if (backend_.lookupMetadata(GetContext(), payload_, id, static_cast(type))) + OrthancPluginErrorCode error = backend_.lookupMetadata(GetContext(), payload_, id, static_cast(type)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return ForwardSingleAnswer(target); @@ -779,9 +852,11 @@ { ResetAnswers(); - if (backend_.lookupParent(GetContext(), payload_, resourceId)) + OrthancPluginErrorCode error = backend_.lookupParent(GetContext(), payload_, resourceId); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return ForwardSingleAnswer(parentId); @@ -794,9 +869,11 @@ { ResetAnswers(); - if (backend_.lookupResource(GetContext(), payload_, publicId.c_str())) + OrthancPluginErrorCode error = backend_.lookupResource(GetContext(), payload_, publicId.c_str()); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } if (type_ == _OrthancPluginDatabaseAnswerType_None) @@ -821,9 +898,11 @@ { ResetAnswers(); - if (backend_.selectPatientToRecycle(GetContext(), payload_)) + OrthancPluginErrorCode error = backend_.selectPatientToRecycle(GetContext(), payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return ForwardSingleAnswer(internalId); @@ -835,9 +914,11 @@ { ResetAnswers(); - if (backend_.selectPatientToRecycle2(GetContext(), payload_, patientIdToAvoid)) + OrthancPluginErrorCode error = backend_.selectPatientToRecycle2(GetContext(), payload_, patientIdToAvoid); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return ForwardSingleAnswer(internalId); @@ -847,10 +928,12 @@ void OrthancPluginDatabase::SetGlobalProperty(GlobalProperty property, const std::string& value) { - if (backend_.setGlobalProperty(payload_, static_cast(property), - value.c_str()) != 0) + OrthancPluginErrorCode error = backend_.setGlobalProperty + (payload_, static_cast(property), value.c_str()); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -859,24 +942,25 @@ const DicomTag& tag, const std::string& value) { - int32_t status; OrthancPluginDicomTag tmp; tmp.group = tag.GetGroup(); tmp.element = tag.GetElement(); tmp.value = value.c_str(); + OrthancPluginErrorCode error; + if (tag.IsIdentifier()) { - status = backend_.setIdentifierTag(payload_, id, &tmp); + error = backend_.setIdentifierTag(payload_, id, &tmp); } else { - status = backend_.setMainDicomTag(payload_, id, &tmp); + error = backend_.setMainDicomTag(payload_, id, &tmp); } - if (status != 0) + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -885,10 +969,12 @@ MetadataType type, const std::string& value) { - if (backend_.setMetadata(payload_, id, static_cast(type), - value.c_str()) != 0) + OrthancPluginErrorCode error = backend_.setMetadata + (payload_, id, static_cast(type), value.c_str()); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -896,9 +982,11 @@ void OrthancPluginDatabase::SetProtectedPatient(int64_t internalId, bool isProtected) { - if (backend_.setProtectedPatient(payload_, internalId, isProtected) != 0) + OrthancPluginErrorCode error = backend_.setProtectedPatient(payload_, internalId, isProtected); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } @@ -919,25 +1007,31 @@ virtual void Begin() { - if (backend_.startTransaction(payload_) != 0) + OrthancPluginErrorCode error = backend_.startTransaction(payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } virtual void Rollback() { - if (backend_.rollbackTransaction(payload_) != 0) + OrthancPluginErrorCode error = backend_.rollbackTransaction(payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } virtual void Commit() { - if (backend_.commitTransaction(payload_) != 0) + OrthancPluginErrorCode error = backend_.commitTransaction(payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } }; @@ -988,9 +1082,11 @@ if (extensions_.getDatabaseVersion != NULL) { uint32_t version; - if (extensions_.getDatabaseVersion(&version, payload_) != 0) + OrthancPluginErrorCode error = extensions_.getDatabaseVersion(&version, payload_); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } return version; @@ -1010,11 +1106,13 @@ { if (extensions_.upgradeDatabase != NULL) { - if (extensions_.upgradeDatabase( - payload_, targetVersion, - reinterpret_cast(&storageArea)) != 0) + OrthancPluginErrorCode error = extensions_.upgradeDatabase( + payload_, targetVersion, + reinterpret_cast(&storageArea)); + + if (error != OrthancPluginErrorCode_Success) { - throw OrthancException(ErrorCode_Plugin); + throw OrthancException(Plugins::Convert(error)); } } } diff -r 77c4cc4def0f -r bad4772b605c Plugins/Include/orthanc/OrthancCDatabasePlugin.h --- a/Plugins/Include/orthanc/OrthancCDatabasePlugin.h Fri Sep 18 16:46:35 2015 +0200 +++ b/Plugins/Include/orthanc/OrthancCDatabasePlugin.h Fri Sep 18 17:45:59 2015 +0200 @@ -320,27 +320,27 @@ typedef struct { - int32_t (*addAttachment) ( + OrthancPluginErrorCode (*addAttachment) ( /* inputs */ void* payload, int64_t id, const OrthancPluginAttachment* attachment); - int32_t (*attachChild) ( + OrthancPluginErrorCode (*attachChild) ( /* inputs */ void* payload, int64_t parent, int64_t child); - int32_t (*clearChanges) ( + OrthancPluginErrorCode (*clearChanges) ( /* inputs */ void* payload); - int32_t (*clearExportedResources) ( + OrthancPluginErrorCode (*clearExportedResources) ( /* inputs */ void* payload); - int32_t (*createResource) ( + OrthancPluginErrorCode (*createResource) ( /* outputs */ int64_t* id, /* inputs */ @@ -348,25 +348,25 @@ const char* publicId, OrthancPluginResourceType resourceType); - int32_t (*deleteAttachment) ( + OrthancPluginErrorCode (*deleteAttachment) ( /* inputs */ void* payload, int64_t id, int32_t contentType); - int32_t (*deleteMetadata) ( + OrthancPluginErrorCode (*deleteMetadata) ( /* inputs */ void* payload, int64_t id, int32_t metadataType); - int32_t (*deleteResource) ( + OrthancPluginErrorCode (*deleteResource) ( /* inputs */ void* payload, int64_t id); /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*getAllPublicIds) ( + OrthancPluginErrorCode (*getAllPublicIds) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -375,7 +375,7 @@ /* Output: Use OrthancPluginDatabaseAnswerChange() and * OrthancPluginDatabaseAnswerChangesDone() */ - int32_t (*getChanges) ( + OrthancPluginErrorCode (*getChanges) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -384,7 +384,7 @@ uint32_t maxResult); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*getChildrenInternalId) ( + OrthancPluginErrorCode (*getChildrenInternalId) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -392,7 +392,7 @@ int64_t id); /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*getChildrenPublicId) ( + OrthancPluginErrorCode (*getChildrenPublicId) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -401,7 +401,7 @@ /* Output: Use OrthancPluginDatabaseAnswerExportedResource() and * OrthancPluginDatabaseAnswerExportedResourcesDone() */ - int32_t (*getExportedResources) ( + OrthancPluginErrorCode (*getExportedResources) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -410,21 +410,21 @@ uint32_t maxResult); /* Output: Use OrthancPluginDatabaseAnswerChange() */ - int32_t (*getLastChange) ( + OrthancPluginErrorCode (*getLastChange) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload); /* Output: Use OrthancPluginDatabaseAnswerExportedResource() */ - int32_t (*getLastExportedResource) ( + OrthancPluginErrorCode (*getLastExportedResource) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload); /* Output: Use OrthancPluginDatabaseAnswerDicomTag() */ - int32_t (*getMainDicomTags) ( + OrthancPluginErrorCode (*getMainDicomTags) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -432,47 +432,47 @@ int64_t id); /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*getPublicId) ( + OrthancPluginErrorCode (*getPublicId) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload, int64_t id); - int32_t (*getResourceCount) ( + OrthancPluginErrorCode (*getResourceCount) ( /* outputs */ uint64_t* target, /* inputs */ void* payload, OrthancPluginResourceType resourceType); - int32_t (*getResourceType) ( + OrthancPluginErrorCode (*getResourceType) ( /* outputs */ OrthancPluginResourceType* resourceType, /* inputs */ void* payload, int64_t id); - int32_t (*getTotalCompressedSize) ( + OrthancPluginErrorCode (*getTotalCompressedSize) ( /* outputs */ uint64_t* target, /* inputs */ void* payload); - int32_t (*getTotalUncompressedSize) ( + OrthancPluginErrorCode (*getTotalUncompressedSize) ( /* outputs */ uint64_t* target, /* inputs */ void* payload); - int32_t (*isExistingResource) ( + OrthancPluginErrorCode (*isExistingResource) ( /* outputs */ int32_t* existing, /* inputs */ void* payload, int64_t id); - int32_t (*isProtectedPatient) ( + OrthancPluginErrorCode (*isProtectedPatient) ( /* outputs */ int32_t* isProtected, /* inputs */ @@ -480,7 +480,7 @@ int64_t id); /* Output: Use OrthancPluginDatabaseAnswerInt32() */ - int32_t (*listAvailableMetadata) ( + OrthancPluginErrorCode (*listAvailableMetadata) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -488,25 +488,25 @@ int64_t id); /* Output: Use OrthancPluginDatabaseAnswerInt32() */ - int32_t (*listAvailableAttachments) ( + OrthancPluginErrorCode (*listAvailableAttachments) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload, int64_t id); - int32_t (*logChange) ( + OrthancPluginErrorCode (*logChange) ( /* inputs */ void* payload, const OrthancPluginChange* change); - int32_t (*logExportedResource) ( + OrthancPluginErrorCode (*logExportedResource) ( /* inputs */ void* payload, const OrthancPluginExportedResource* exported); /* Output: Use OrthancPluginDatabaseAnswerAttachment() */ - int32_t (*lookupAttachment) ( + OrthancPluginErrorCode (*lookupAttachment) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -515,7 +515,7 @@ int32_t contentType); /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*lookupGlobalProperty) ( + OrthancPluginErrorCode (*lookupGlobalProperty) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -523,7 +523,7 @@ int32_t property); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*lookupIdentifier) ( + OrthancPluginErrorCode (*lookupIdentifier) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -531,7 +531,7 @@ const OrthancPluginDicomTag* tag); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*lookupIdentifier2) ( + OrthancPluginErrorCode (*lookupIdentifier2) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -539,7 +539,7 @@ const char* value); /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*lookupMetadata) ( + OrthancPluginErrorCode (*lookupMetadata) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -548,7 +548,7 @@ int32_t metadata); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*lookupParent) ( + OrthancPluginErrorCode (*lookupParent) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -556,7 +556,7 @@ int64_t id); /* Output: Use OrthancPluginDatabaseAnswerResource() */ - int32_t (*lookupResource) ( + OrthancPluginErrorCode (*lookupResource) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -564,68 +564,68 @@ const char* publicId); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*selectPatientToRecycle) ( + OrthancPluginErrorCode (*selectPatientToRecycle) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload); /* Output: Use OrthancPluginDatabaseAnswerInt64() */ - int32_t (*selectPatientToRecycle2) ( + OrthancPluginErrorCode (*selectPatientToRecycle2) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ void* payload, int64_t patientIdToAvoid); - int32_t (*setGlobalProperty) ( + OrthancPluginErrorCode (*setGlobalProperty) ( /* inputs */ void* payload, int32_t property, const char* value); - int32_t (*setMainDicomTag) ( + OrthancPluginErrorCode (*setMainDicomTag) ( /* inputs */ void* payload, int64_t id, const OrthancPluginDicomTag* tag); - int32_t (*setIdentifierTag) ( + OrthancPluginErrorCode (*setIdentifierTag) ( /* inputs */ void* payload, int64_t id, const OrthancPluginDicomTag* tag); - int32_t (*setMetadata) ( + OrthancPluginErrorCode (*setMetadata) ( /* inputs */ void* payload, int64_t id, int32_t metadata, const char* value); - int32_t (*setProtectedPatient) ( + OrthancPluginErrorCode (*setProtectedPatient) ( /* inputs */ void* payload, int64_t id, int32_t isProtected); - int32_t (*startTransaction) ( + OrthancPluginErrorCode (*startTransaction) ( /* inputs */ void* payload); - int32_t (*rollbackTransaction) ( + OrthancPluginErrorCode (*rollbackTransaction) ( /* inputs */ void* payload); - int32_t (*commitTransaction) ( + OrthancPluginErrorCode (*commitTransaction) ( /* inputs */ void* payload); - int32_t (*open) ( + OrthancPluginErrorCode (*open) ( /* inputs */ void* payload); - int32_t (*close) ( + OrthancPluginErrorCode (*close) ( /* inputs */ void* payload); @@ -635,7 +635,7 @@ typedef struct { /* Output: Use OrthancPluginDatabaseAnswerString() */ - int32_t (*getAllPublicIdsWithLimit) ( + OrthancPluginErrorCode (*getAllPublicIdsWithLimit) ( /* outputs */ OrthancPluginDatabaseContext* context, /* inputs */ @@ -644,13 +644,13 @@ uint64_t since, uint64_t limit); - int32_t (*getDatabaseVersion) ( + OrthancPluginErrorCode (*getDatabaseVersion) ( /* outputs */ uint32_t* version, /* inputs */ void* payload); - int32_t (*upgradeDatabase) ( + OrthancPluginErrorCode (*upgradeDatabase) ( /* inputs */ void* payload, uint32_t targetVersion, diff -r 77c4cc4def0f -r bad4772b605c Plugins/Include/orthanc/OrthancCPlugin.h --- a/Plugins/Include/orthanc/OrthancCPlugin.h Fri Sep 18 16:46:35 2015 +0200 +++ b/Plugins/Include/orthanc/OrthancCPlugin.h Fri Sep 18 17:45:59 2015 +0200 @@ -109,7 +109,7 @@ #define ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER 0 #define ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER 9 -#define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 4 +#define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 5 diff -r 77c4cc4def0f -r bad4772b605c Plugins/Include/orthanc/OrthancCppDatabasePlugin.h --- a/Plugins/Include/orthanc/OrthancCppDatabasePlugin.h Fri Sep 18 16:46:35 2015 +0200 +++ b/Plugins/Include/orthanc/OrthancCppDatabasePlugin.h Fri Sep 18 17:45:59 2015 +0200 @@ -62,6 +62,29 @@ //! @endcond + /** + * @ingroup Callbacks + **/ + class DatabaseException + { + private: + OrthancPluginErrorCode code_; + + public: + DatabaseException() : code_(OrthancPluginErrorCode_Plugin) + { + } + + DatabaseException(OrthancPluginErrorCode code) : code_(code) + { + } + + OrthancPluginErrorCode GetErrorCode() const + { + return code_; + } + }; + /** * @ingroup Callbacks @@ -463,9 +486,9 @@ } - static int32_t AddAttachment(void* payload, - int64_t id, - const OrthancPluginAttachment* attachment) + static OrthancPluginErrorCode AddAttachment(void* payload, + int64_t id, + const OrthancPluginAttachment* attachment) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -473,19 +496,23 @@ try { backend->AddAttachment(id, *attachment); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t AttachChild(void* payload, - int64_t parent, - int64_t child) + static OrthancPluginErrorCode AttachChild(void* payload, + int64_t parent, + int64_t child) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -493,17 +520,21 @@ try { backend->AttachChild(parent, child); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t ClearChanges(void* payload) + static OrthancPluginErrorCode ClearChanges(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -511,17 +542,21 @@ try { backend->ClearChanges(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t ClearExportedResources(void* payload) + static OrthancPluginErrorCode ClearExportedResources(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -529,20 +564,24 @@ try { backend->ClearExportedResources(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t CreateResource(int64_t* id, - void* payload, - const char* publicId, - OrthancPluginResourceType resourceType) + static OrthancPluginErrorCode CreateResource(int64_t* id, + void* payload, + const char* publicId, + OrthancPluginResourceType resourceType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -550,19 +589,23 @@ try { *id = backend->CreateResource(publicId, resourceType); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t DeleteAttachment(void* payload, - int64_t id, - int32_t contentType) + static OrthancPluginErrorCode DeleteAttachment(void* payload, + int64_t id, + int32_t contentType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -570,19 +613,23 @@ try { backend->DeleteAttachment(id, contentType); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t DeleteMetadata(void* payload, - int64_t id, - int32_t metadataType) + static OrthancPluginErrorCode DeleteMetadata(void* payload, + int64_t id, + int32_t metadataType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -590,18 +637,22 @@ try { backend->DeleteMetadata(id, metadataType); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t DeleteResource(void* payload, - int64_t id) + static OrthancPluginErrorCode DeleteResource(void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -609,19 +660,23 @@ try { backend->DeleteResource(id); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetAllPublicIds(OrthancPluginDatabaseContext* context, - void* payload, - OrthancPluginResourceType resourceType) + static OrthancPluginErrorCode GetAllPublicIds(OrthancPluginDatabaseContext* context, + void* payload, + OrthancPluginResourceType resourceType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -639,21 +694,25 @@ it->c_str()); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetAllPublicIdsWithLimit(OrthancPluginDatabaseContext* context, - void* payload, - OrthancPluginResourceType resourceType, - uint64_t since, - uint64_t limit) + static OrthancPluginErrorCode GetAllPublicIdsWithLimit(OrthancPluginDatabaseContext* context, + void* payload, + OrthancPluginResourceType resourceType, + uint64_t since, + uint64_t limit) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -671,20 +730,24 @@ it->c_str()); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetChanges(OrthancPluginDatabaseContext* context, - void* payload, - int64_t since, - uint32_t maxResult) + static OrthancPluginErrorCode GetChanges(OrthancPluginDatabaseContext* context, + void* payload, + int64_t since, + uint32_t maxResult) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Change); @@ -700,19 +763,23 @@ backend->GetOutput().database_); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetChildrenInternalId(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode GetChildrenInternalId(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -729,19 +796,23 @@ backend->GetOutput().database_, *it); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetChildrenPublicId(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode GetChildrenPublicId(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -759,20 +830,24 @@ it->c_str()); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetExportedResources(OrthancPluginDatabaseContext* context, - void* payload, - int64_t since, - uint32_t maxResult) + static OrthancPluginErrorCode GetExportedResources(OrthancPluginDatabaseContext* context, + void* payload, + int64_t since, + uint32_t maxResult) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_ExportedResource); @@ -787,18 +862,22 @@ OrthancPluginDatabaseAnswerExportedResourcesDone(backend->GetOutput().context_, backend->GetOutput().database_); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetLastChange(OrthancPluginDatabaseContext* context, - void* payload) + static OrthancPluginErrorCode GetLastChange(OrthancPluginDatabaseContext* context, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Change); @@ -806,18 +885,22 @@ try { backend->GetLastChange(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetLastExportedResource(OrthancPluginDatabaseContext* context, - void* payload) + static OrthancPluginErrorCode GetLastExportedResource(OrthancPluginDatabaseContext* context, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_ExportedResource); @@ -825,19 +908,23 @@ try { backend->GetLastExportedResource(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetMainDicomTags(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode GetMainDicomTags(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_DicomTag); @@ -845,19 +932,23 @@ try { backend->GetMainDicomTags(id); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetPublicId(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode GetPublicId(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -869,19 +960,23 @@ backend->GetOutput().database_, s.c_str()); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetResourceCount(uint64_t* target, - void* payload, - OrthancPluginResourceType resourceType) + static OrthancPluginErrorCode GetResourceCount(uint64_t* target, + void* payload, + OrthancPluginResourceType resourceType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -889,19 +984,23 @@ try { *target = backend->GetResourceCount(resourceType); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetResourceType(OrthancPluginResourceType* resourceType, - void* payload, - int64_t id) + static OrthancPluginErrorCode GetResourceType(OrthancPluginResourceType* resourceType, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -909,18 +1008,22 @@ try { *resourceType = backend->GetResourceType(id); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetTotalCompressedSize(uint64_t* target, - void* payload) + static OrthancPluginErrorCode GetTotalCompressedSize(uint64_t* target, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -928,18 +1031,22 @@ try { *target = backend->GetTotalCompressedSize(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetTotalUncompressedSize(uint64_t* target, - void* payload) + static OrthancPluginErrorCode GetTotalUncompressedSize(uint64_t* target, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -947,19 +1054,23 @@ try { *target = backend->GetTotalUncompressedSize(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t IsExistingResource(int32_t* existing, - void* payload, - int64_t id) + static OrthancPluginErrorCode IsExistingResource(int32_t* existing, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -967,19 +1078,23 @@ try { *existing = backend->IsExistingResource(id); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t IsProtectedPatient(int32_t* isProtected, - void* payload, - int64_t id) + static OrthancPluginErrorCode IsProtectedPatient(int32_t* isProtected, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -987,19 +1102,23 @@ try { *isProtected = backend->IsProtectedPatient(id); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t ListAvailableMetadata(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode ListAvailableMetadata(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1017,19 +1136,23 @@ *it); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t ListAvailableAttachments(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode ListAvailableAttachments(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1047,18 +1170,22 @@ *it); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LogChange(void* payload, - const OrthancPluginChange* change) + static OrthancPluginErrorCode LogChange(void* payload, + const OrthancPluginChange* change) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1066,18 +1193,22 @@ try { backend->LogChange(*change); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LogExportedResource(void* payload, - const OrthancPluginExportedResource* exported) + static OrthancPluginErrorCode LogExportedResource(void* payload, + const OrthancPluginExportedResource* exported) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1085,20 +1216,24 @@ try { backend->LogExportedResource(*exported); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupAttachment(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id, - int32_t contentType) + static OrthancPluginErrorCode LookupAttachment(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id, + int32_t contentType) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Attachment); @@ -1106,19 +1241,23 @@ try { backend->LookupAttachment(id, contentType); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupGlobalProperty(OrthancPluginDatabaseContext* context, - void* payload, - int32_t property) + static OrthancPluginErrorCode LookupGlobalProperty(OrthancPluginDatabaseContext* context, + void* payload, + int32_t property) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1133,19 +1272,23 @@ s.c_str()); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupIdentifier(OrthancPluginDatabaseContext* context, - void* payload, - const OrthancPluginDicomTag* tag) + static OrthancPluginErrorCode LookupIdentifier(OrthancPluginDatabaseContext* context, + void* payload, + const OrthancPluginDicomTag* tag) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1162,19 +1305,23 @@ backend->GetOutput().database_, *it); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupIdentifier2(OrthancPluginDatabaseContext* context, - void* payload, - const char* value) + static OrthancPluginErrorCode LookupIdentifier2(OrthancPluginDatabaseContext* context, + void* payload, + const char* value) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1191,20 +1338,24 @@ backend->GetOutput().database_, *it); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupMetadata(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id, - int32_t metadata) + static OrthancPluginErrorCode LookupMetadata(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id, + int32_t metadata) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1218,19 +1369,23 @@ backend->GetOutput().database_, s.c_str()); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupParent(OrthancPluginDatabaseContext* context, - void* payload, - int64_t id) + static OrthancPluginErrorCode LookupParent(OrthancPluginDatabaseContext* context, + void* payload, + int64_t id) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1244,19 +1399,23 @@ backend->GetOutput().database_, parent); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t LookupResource(OrthancPluginDatabaseContext* context, - void* payload, - const char* publicId) + static OrthancPluginErrorCode LookupResource(OrthancPluginDatabaseContext* context, + void* payload, + const char* publicId) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1272,18 +1431,22 @@ id, type); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SelectPatientToRecycle(OrthancPluginDatabaseContext* context, - void* payload) + static OrthancPluginErrorCode SelectPatientToRecycle(OrthancPluginDatabaseContext* context, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1297,19 +1460,23 @@ backend->GetOutput().database_, id); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SelectPatientToRecycle2(OrthancPluginDatabaseContext* context, - void* payload, - int64_t patientIdToAvoid) + static OrthancPluginErrorCode SelectPatientToRecycle2(OrthancPluginDatabaseContext* context, + void* payload, + int64_t patientIdToAvoid) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1323,19 +1490,23 @@ backend->GetOutput().database_, id); } - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SetGlobalProperty(void* payload, - int32_t property, - const char* value) + static OrthancPluginErrorCode SetGlobalProperty(void* payload, + int32_t property, + const char* value) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1343,19 +1514,23 @@ try { backend->SetGlobalProperty(property, value); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SetMainDicomTag(void* payload, - int64_t id, - const OrthancPluginDicomTag* tag) + static OrthancPluginErrorCode SetMainDicomTag(void* payload, + int64_t id, + const OrthancPluginDicomTag* tag) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1363,19 +1538,23 @@ try { backend->SetMainDicomTag(id, tag->group, tag->element, tag->value); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SetIdentifierTag(void* payload, - int64_t id, - const OrthancPluginDicomTag* tag) + static OrthancPluginErrorCode SetIdentifierTag(void* payload, + int64_t id, + const OrthancPluginDicomTag* tag) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1383,20 +1562,24 @@ try { backend->SetIdentifierTag(id, tag->group, tag->element, tag->value); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SetMetadata(void* payload, - int64_t id, - int32_t metadata, - const char* value) + static OrthancPluginErrorCode SetMetadata(void* payload, + int64_t id, + int32_t metadata, + const char* value) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1404,19 +1587,23 @@ try { backend->SetMetadata(id, metadata, value); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t SetProtectedPatient(void* payload, - int64_t id, - int32_t isProtected) + static OrthancPluginErrorCode SetProtectedPatient(void* payload, + int64_t id, + int32_t isProtected) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1424,17 +1611,21 @@ try { backend->SetProtectedPatient(id, (isProtected != 0)); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t StartTransaction(void* payload) + static OrthancPluginErrorCode StartTransaction(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1442,17 +1633,21 @@ try { backend->StartTransaction(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t RollbackTransaction(void* payload) + static OrthancPluginErrorCode RollbackTransaction(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1460,17 +1655,21 @@ try { backend->RollbackTransaction(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t CommitTransaction(void* payload) + static OrthancPluginErrorCode CommitTransaction(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1478,17 +1677,21 @@ try { backend->CommitTransaction(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t Open(void* payload) + static OrthancPluginErrorCode Open(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1496,17 +1699,21 @@ try { backend->Open(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t Close(void* payload) + static OrthancPluginErrorCode Close(void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); @@ -1514,49 +1721,61 @@ try { backend->Close(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t GetDatabaseVersion(uint32_t* version, - void* payload) + static OrthancPluginErrorCode GetDatabaseVersion(uint32_t* version, + void* payload) { IDatabaseBackend* backend = reinterpret_cast(payload); try { *version = backend->GetDatabaseVersion(); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } } - static int32_t UpgradeDatabase(void* payload, - uint32_t targetVersion, - OrthancPluginStorageArea* storageArea) + static OrthancPluginErrorCode UpgradeDatabase(void* payload, + uint32_t targetVersion, + OrthancPluginStorageArea* storageArea) { IDatabaseBackend* backend = reinterpret_cast(payload); try { backend->UpgradeDatabase(targetVersion, storageArea); - return 0; + return OrthancPluginErrorCode_Success; } catch (std::runtime_error& e) { LogError(backend, e); - return -1; + return OrthancPluginErrorCode_Plugin; + } + catch (DatabaseException& e) + { + return e.GetErrorCode(); } }