Mercurial > hg > orthanc
annotate Resources/Toolbox.lua @ 3003:5ae3ff2398e9
refactoring OrthancFindRequestHandler using LookupResource::IVisitor
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 11 Dec 2018 19:02:51 +0100 |
parents | 6406f5493d92 |
children |
rev | line source |
---|---|
397
941ea46e9e26
lua filter of new instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
1 --[[ PrintRecursive(struct, [limit], [indent]) Recursively print arbitrary data. |
384 | 2 Set limit (default 100) to stanch infinite loops. |
3 Indents tables as [KEY] VALUE, nested tables as [KEY] [KEY]...[KEY] VALUE | |
4 Set indent ("") to prefix each line: Mytable [KEY] [KEY]...[KEY] VALUE | |
394
9784f19f7e1b
path relative to configuration path, list of lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5 Source: https://gist.github.com/stuby/5445834#file-rprint-lua |
384 | 6 --]] |
394
9784f19f7e1b
path relative to configuration path, list of lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
7 |
397
941ea46e9e26
lua filter of new instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
8 function PrintRecursive(s, l, i) -- recursive Print (structure, limit, indent) |
1006
649d47854314
proper handling of metadata in Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
9 l = (l) or 100; -- default item limit |
649d47854314
proper handling of metadata in Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
10 i = i or ""; -- indent string |
384 | 11 if (l<1) then print "ERROR: Item limit reached."; return l-1 end; |
12 local ts = type(s); | |
13 if (ts ~= "table") then print (i,ts,s); return l-1 end | |
14 print (i,ts); -- print "table" | |
15 for k,v in pairs(s) do -- print "[KEY] VALUE" | |
397
941ea46e9e26
lua filter of new instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
16 l = PrintRecursive(v, l, i.."\t["..tostring(k).."]"); |
384 | 17 if (l < 0) then break end |
18 end | |
19 return l | |
20 end | |
418
b79bf2f4ab2e
execution of lua through REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
21 |
1010 | 22 |
23 | |
24 | |
25 function _InitializeJob() | |
26 _job = {} | |
27 end | |
28 | |
29 | |
30 function _AccessJob() | |
31 return _job | |
32 end | |
33 | |
34 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
35 function SendToModality(resourceId, modality, localAet) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
36 if resourceId == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
37 error('Cannot send a nonexistent resource') |
1010 | 38 end |
39 | |
40 table.insert(_job, { | |
41 Operation = 'store-scu', | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
42 Resource = resourceId, |
1427
d710ea64f0fd
Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1065
diff
changeset
|
43 Modality = modality, |
d710ea64f0fd
Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1065
diff
changeset
|
44 LocalAet = localAet |
1010 | 45 }) |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
46 return resourceId |
1010 | 47 end |
48 | |
49 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
50 function SendToPeer(resourceId, peer) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
51 if resourceId == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
52 error('Cannot send a nonexistent resource') |
1010 | 53 end |
54 | |
55 table.insert(_job, { | |
56 Operation = 'store-peer', | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
57 Resource = resourceId, |
1010 | 58 Peer = peer |
59 }) | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
60 return resourceId |
1010 | 61 end |
62 | |
63 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
64 function Delete(resourceId) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
65 if resourceId == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
66 error('Cannot delete a nonexistent resource') |
1010 | 67 end |
68 | |
69 table.insert(_job, { | |
70 Operation = 'delete', | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
71 Resource = resourceId |
1010 | 72 }) |
73 return nil -- Forbid chaining | |
74 end | |
75 | |
76 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
77 function ModifyResource(resourceId, replacements, removals, removePrivateTags) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
78 if resourceId == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
79 error('Cannot modify a nonexistent resource') |
1010 | 80 end |
81 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
82 if resourceId == '' then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
83 error('Cannot modify twice an resource'); |
1010 | 84 end |
85 | |
86 table.insert(_job, { | |
87 Operation = 'modify', | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
88 Resource = resourceId, |
1010 | 89 Replace = replacements, |
90 Remove = removals, | |
91 RemovePrivateTags = removePrivateTags | |
92 }) | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
93 |
1010 | 94 return '' -- Chain with another operation |
95 end | |
96 | |
97 | |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
98 function ModifyInstance(resourceId, replacements, removals, removePrivateTags) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
99 return ModifyResource(resourceId, replacements, removals, removePrivateTags) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
100 end |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
101 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
102 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
103 -- This function is only applicable to individual instances |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
104 function CallSystem(resourceId, command, args) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
105 if resourceId == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
106 error('Cannot execute a system call on a nonexistent resource') |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
107 end |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
108 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
109 if command == nil then |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
110 error('No command was specified for system call') |
1065
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
111 end |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
112 |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
113 table.insert(_job, { |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
114 Operation = 'call-system', |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
115 Resource = resourceId, |
1065
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
116 Command = command, |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
117 Arguments = args |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
118 }) |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
119 |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
120 return resourceId |
1065
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
121 end |
921532f67770
Lua scripts can invoke system commands, with CallSystem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1010
diff
changeset
|
122 |
1010 | 123 |
418
b79bf2f4ab2e
execution of lua through REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
124 print('Lua toolbox installed') |