Mercurial > hg > orthanc
diff OrthancServer/ServerIndex.cpp @ 3091:476cba12c2b0 db-changes
IDatabaseWrapper::GetChildrenMetadata()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 05 Jan 2019 15:08:53 +0100 |
parents | 31244604f617 |
children | 2e1808b6146a |
line wrap: on
line diff
--- a/OrthancServer/ServerIndex.cpp Sat Jan 05 12:17:30 2019 +0100 +++ b/OrthancServer/ServerIndex.cpp Sat Jan 05 15:08:53 2019 +0100 @@ -993,21 +993,25 @@ SeriesStatus ServerIndex::GetSeriesStatus(int64_t id, int64_t expectedNumberOfInstances) { - // Loop over the instances of this series - std::list<int64_t> children; - db_.GetChildrenInternalId(children, id); + std::list<std::string> values; + db_.GetChildrenMetadata(values, id, MetadataType_Instance_IndexInSeries); std::set<int64_t> instances; - for (std::list<int64_t>::const_iterator - it = children.begin(); it != children.end(); ++it) + + for (std::list<std::string>::const_iterator + it = values.begin(); it != values.end(); ++it) { - // Get the index of this instance in the series int64_t index; - if (!GetMetadataAsInteger(index, *it, MetadataType_Instance_IndexInSeries)) + + try + { + index = boost::lexical_cast<int64_t>(*it); + } + catch (boost::bad_lexical_cast&) { return SeriesStatus_Unknown; } - + if (!(index > 0 && index <= expectedNumberOfInstances)) { // Out-of-range instance index @@ -1200,9 +1204,13 @@ int64_t i; if (GetMetadataAsInteger(i, id, MetadataType_Instance_IndexInSeries)) + { result["IndexInSeries"] = static_cast<int>(i); + } else + { result["IndexInSeries"] = Json::nullValue; + } break; }