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;
       }