Mercurial > hg > orthanc
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')