comparison OrthancServer/OrthancRestApi.cpp @ 237:16a4ac70bd8a

last change and export
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 30 Nov 2012 15:45:15 +0100
parents c11273198cef
children e4148b0ab1d0
comparison
equal deleted inserted replaced
236:6d9be2b470b4 237:16a4ac70bd8a
348 348
349 // Changes API -------------------------------------------------------------- 349 // Changes API --------------------------------------------------------------
350 350
351 static void GetSinceAndLimit(int64_t& since, 351 static void GetSinceAndLimit(int64_t& since,
352 unsigned int& limit, 352 unsigned int& limit,
353 bool& last,
353 const RestApi::GetCall& call) 354 const RestApi::GetCall& call)
354 { 355 {
355 static const unsigned int MAX_RESULTS = 100; 356 static const unsigned int MAX_RESULTS = 100;
356 357
358 if (call.HasArgument("last"))
359 {
360 last = true;
361 return;
362 }
363
364 last = false;
365
357 try 366 try
358 { 367 {
359 since = boost::lexical_cast<int64_t>(call.GetArgument("since", "0")); 368 since = boost::lexical_cast<int64_t>(call.GetArgument("since", "0"));
360 limit = boost::lexical_cast<unsigned int>(call.GetArgument("limit", "0")); 369 limit = boost::lexical_cast<unsigned int>(call.GetArgument("limit", "0"));
361 } 370 }
375 RETRIEVE_CONTEXT(call); 384 RETRIEVE_CONTEXT(call);
376 385
377 //std::string filter = GetArgument(getArguments, "filter", ""); 386 //std::string filter = GetArgument(getArguments, "filter", "");
378 int64_t since; 387 int64_t since;
379 unsigned int limit; 388 unsigned int limit;
380 GetSinceAndLimit(since, limit, call); 389 bool last;
381 390 GetSinceAndLimit(since, limit, last, call);
382 Json::Value result; 391
383 if (context.GetIndex().GetChanges(result, since, limit)) 392 Json::Value result;
393 if ((!last && context.GetIndex().GetChanges(result, since, limit)) ||
394 ( last && context.GetIndex().GetLastChange(result)))
384 { 395 {
385 call.GetOutput().AnswerJson(result); 396 call.GetOutput().AnswerJson(result);
386 } 397 }
387 } 398 }
388 399
391 { 402 {
392 RETRIEVE_CONTEXT(call); 403 RETRIEVE_CONTEXT(call);
393 404
394 int64_t since; 405 int64_t since;
395 unsigned int limit; 406 unsigned int limit;
396 GetSinceAndLimit(since, limit, call); 407 bool last;
397 408 GetSinceAndLimit(since, limit, last, call);
398 Json::Value result; 409
399 if (context.GetIndex().GetExportedResources(result, since, limit)) 410 Json::Value result;
411 if ((!last && context.GetIndex().GetExportedResources(result, since, limit)) ||
412 ( last && context.GetIndex().GetLastExportedResource(result)))
400 { 413 {
401 call.GetOutput().AnswerJson(result); 414 call.GetOutput().AnswerJson(result);
402 } 415 }
403 } 416 }
404 417
617 GetListOfDicomModalities(modalities_); 630 GetListOfDicomModalities(modalities_);
618 631
619 Register("/", ServeRoot); 632 Register("/", ServeRoot);
620 Register("/system", GetSystemInformation); 633 Register("/system", GetSystemInformation);
621 Register("/changes", GetChanges); 634 Register("/changes", GetChanges);
622 Register("/exported", GetExports); 635 Register("/exports", GetExports);
623 636
624 Register("/instances", UploadDicomFile); 637 Register("/instances", UploadDicomFile);
625 Register("/instances", ListResources<ResourceType_Instance>); 638 Register("/instances", ListResources<ResourceType_Instance>);
626 Register("/patients", ListResources<ResourceType_Patient>); 639 Register("/patients", ListResources<ResourceType_Patient>);
627 Register("/series", ListResources<ResourceType_Series>); 640 Register("/series", ListResources<ResourceType_Series>);