Mercurial > hg > orthanc
diff OrthancServer/StorageCommitmentReports.cpp @ 3737:f29843323daf storage-commitment
accessing storage commitment reports from REST API
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Mar 2020 20:33:01 +0100 |
parents | 0540b54324f1 |
children | bff4da769f6f |
line wrap: on
line diff
--- a/OrthancServer/StorageCommitmentReports.cpp Tue Mar 10 17:43:49 2020 +0100 +++ b/OrthancServer/StorageCommitmentReports.cpp Tue Mar 10 20:33:01 2020 +0100 @@ -62,7 +62,7 @@ Success success; success.sopClassUid_ = sopClassUid; success.sopInstanceUid_ = sopInstanceUid; - successes_.push_back(success); + success_.push_back(success); } } @@ -102,6 +102,71 @@ } + void StorageCommitmentReports::Report::Format(Json::Value& json) const + { + static const char* const FIELD_STATUS = "Status"; + static const char* const FIELD_SOP_CLASS_UID = "SOPClassUID"; + static const char* const FIELD_SOP_INSTANCE_UID = "SOPInstanceUID"; + static const char* const FIELD_FAILURE_REASON = "FailureReason"; + static const char* const FIELD_DESCRIPTION = "Description"; + static const char* const FIELD_REMOTE_AET = "RemoteAET"; + static const char* const FIELD_SUCCESS = "Success"; + static const char* const FIELD_FAILURES = "Failures"; + + + json = Json::objectValue; + json[FIELD_REMOTE_AET] = remoteAet_; + + switch (GetStatus()) + { + case Status_Pending: + json[FIELD_STATUS] = "Pending"; + break; + + case Status_Success: + json[FIELD_STATUS] = "Success"; + break; + + case Status_Failure: + json[FIELD_STATUS] = "Failure"; + break; + + default: + throw OrthancException(ErrorCode_InternalError); + } + + { + Json::Value success = Json::arrayValue; + for (std::list<Success>::const_iterator + it = success_.begin(); it != success_.end(); ++it) + { + Json::Value item = Json::objectValue; + item[FIELD_SOP_CLASS_UID] = it->sopClassUid_; + item[FIELD_SOP_INSTANCE_UID] = it->sopInstanceUid_; + success.append(item); + } + + json[FIELD_SUCCESS] = success; + } + + { + Json::Value failures = Json::arrayValue; + for (std::list<Failure>::const_iterator + it = failures_.begin(); it != failures_.end(); ++it) + { + Json::Value item = Json::objectValue; + item[FIELD_SOP_CLASS_UID] = it->sopClassUid_; + item[FIELD_SOP_INSTANCE_UID] = it->sopInstanceUid_; + item[FIELD_FAILURE_REASON] = it->reason_; + item[FIELD_DESCRIPTION] = EnumerationToString(it->reason_); + failures.append(item); + } + + json[FIELD_FAILURES] = failures; + } + } + + StorageCommitmentReports::~StorageCommitmentReports() { while (!content_.IsEmpty())