Mercurial > hg > orthanc
diff OrthancServer/DicomProtocol/RemoteModalityParameters.cpp @ 807:566a2fb3c1fb
update/delete modalities
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 07 May 2014 15:54:23 +0200 |
parents | 557575fd93e9 |
children | 8a36c947490c |
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/RemoteModalityParameters.cpp Wed May 07 15:22:28 2014 +0200 +++ b/OrthancServer/DicomProtocol/RemoteModalityParameters.cpp Wed May 07 15:54:23 2014 +0200 @@ -34,6 +34,9 @@ #include "../../Core/OrthancException.h" +#include <boost/lexical_cast.hpp> +#include <stdexcept> + namespace Orthanc { RemoteModalityParameters::RemoteModalityParameters() @@ -54,4 +57,51 @@ port_ = port; } + + void RemoteModalityParameters::FromJson(const Json::Value& modality) + { + if (!modality.isArray() || + (modality.size() != 3 && modality.size() != 4)) + { + throw OrthancException(ErrorCode_BadFileFormat); + } + + SetApplicationEntityTitle(modality.get(0u, "").asString()); + SetHost(modality.get(1u, "").asString()); + + const Json::Value& portValue = modality.get(2u, ""); + try + { + SetPort(portValue.asInt()); + } + catch (std::runtime_error /* error inside JsonCpp */) + { + try + { + SetPort(boost::lexical_cast<int>(portValue.asString())); + } + catch (boost::bad_lexical_cast) + { + throw OrthancException(ErrorCode_BadFileFormat); + } + } + + if (modality.size() == 4) + { + SetManufacturer(modality.get(3u, "").asString()); + } + else + { + SetManufacturer(ModalityManufacturer_Generic); + } + } + + void RemoteModalityParameters::ToJson(Json::Value& value) const + { + value = Json::arrayValue; + value.append(GetApplicationEntityTitle()); + value.append(GetHost()); + value.append(GetPort()); + value.append(EnumerationToString(GetManufacturer())); + } }