diff OrthancServer/Resources/Toolbox.lua @ 4044:d25f4c0fa160 framework

splitting code into OrthancFramework and OrthancServer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 10 Jun 2020 20:30:34 +0200
parents Resources/Toolbox.lua@6406f5493d92
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancServer/Resources/Toolbox.lua	Wed Jun 10 20:30:34 2020 +0200
@@ -0,0 +1,124 @@
+--[[ PrintRecursive(struct, [limit], [indent])   Recursively print arbitrary data. 
+Set limit (default 100) to stanch infinite loops.
+Indents tables as [KEY] VALUE, nested tables as [KEY] [KEY]...[KEY] VALUE
+Set indent ("") to prefix each line:    Mytable [KEY] [KEY]...[KEY] VALUE
+Source: https://gist.github.com/stuby/5445834#file-rprint-lua
+--]]
+
+function PrintRecursive(s, l, i) -- recursive Print (structure, limit, indent)
+   l = (l) or 100;  -- default item limit
+   i = i or "";     -- indent string
+   if (l<1) then print "ERROR: Item limit reached."; return l-1 end;
+   local ts = type(s);
+   if (ts ~= "table") then print (i,ts,s); return l-1 end
+   print (i,ts);           -- print "table"
+   for k,v in pairs(s) do  -- print "[KEY] VALUE"
+      l = PrintRecursive(v, l, i.."\t["..tostring(k).."]");
+      if (l < 0) then break end
+   end
+   return l
+end	
+
+
+
+
+function _InitializeJob()
+   _job = {}
+end
+
+
+function _AccessJob()
+   return _job
+end
+
+
+function SendToModality(resourceId, modality, localAet)
+   if resourceId == nil then
+      error('Cannot send a nonexistent resource')
+   end
+
+   table.insert(_job, { 
+                   Operation = 'store-scu', 
+                   Resource = resourceId,
+                   Modality = modality,
+                   LocalAet = localAet
+                })
+   return resourceId
+end
+
+
+function SendToPeer(resourceId, peer)
+   if resourceId == nil then
+      error('Cannot send a nonexistent resource')
+   end
+
+   table.insert(_job, { 
+                   Operation = 'store-peer', 
+                   Resource = resourceId,
+                   Peer = peer
+                })
+   return resourceId
+end
+
+
+function Delete(resourceId)
+   if resourceId == nil then
+      error('Cannot delete a nonexistent resource')
+   end
+
+   table.insert(_job, { 
+                   Operation = 'delete', 
+                   Resource = resourceId
+                })
+   return nil  -- Forbid chaining
+end
+
+
+function ModifyResource(resourceId, replacements, removals, removePrivateTags)
+   if resourceId == nil then
+      error('Cannot modify a nonexistent resource')
+   end
+
+   if resourceId == '' then
+      error('Cannot modify twice an resource');
+   end
+
+   table.insert(_job, { 
+                   Operation = 'modify', 
+                   Resource = resourceId,
+                   Replace = replacements, 
+                   Remove = removals,
+                   RemovePrivateTags = removePrivateTags 
+                })
+
+   return ''  -- Chain with another operation
+end
+
+
+function ModifyInstance(resourceId, replacements, removals, removePrivateTags)
+   return ModifyResource(resourceId, replacements, removals, removePrivateTags)
+end
+
+
+-- This function is only applicable to individual instances
+function CallSystem(resourceId, command, args)
+   if resourceId == nil then
+      error('Cannot execute a system call on a nonexistent resource')
+   end
+
+   if command == nil then
+      error('No command was specified for system call')
+   end
+
+   table.insert(_job, { 
+                   Operation = 'call-system', 
+                   Resource = resourceId,
+                   Command = command,
+                   Arguments = args
+                })
+
+   return resourceId
+end
+
+
+print('Lua toolbox installed')