lims-core 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +5 -0
  3. data/.rspec +1 -0
  4. data/.rvmrc +2 -0
  5. data/.travis.yml +2 -0
  6. data/.vimrc +27 -0
  7. data/.yard_templates/default/layout/html/footer.erb +0 -0
  8. data/.yardopts +1 -0
  9. data/Gemfile +54 -0
  10. data/Gemfile.lock +197 -0
  11. data/Guardfile +21 -0
  12. data/Guardfile.tmux +28 -0
  13. data/README.markdown +67 -0
  14. data/Rakefile +16 -0
  15. data/config/database.yml +16 -0
  16. data/doc/Array.html +116 -0
  17. data/doc/Array/ArrayLoggerPersistor.html +152 -0
  18. data/doc/Lims.html +114 -0
  19. data/doc/Lims/Core.html +178 -0
  20. data/doc/Lims/Core/Action.html +91 -0
  21. data/doc/Lims/Core/Actions.html +116 -0
  22. data/doc/Lims/Core/Actions/Action.html +216 -0
  23. data/doc/Lims/Core/Actions/Action/AfterEval.html +853 -0
  24. data/doc/Lims/Core/Actions/Action/InvalidParameters.html +268 -0
  25. data/doc/Lims/Core/Actions/ActionGroup.html +196 -0
  26. data/doc/Lims/Core/Actions/ActionGroup/AfterEval.html +315 -0
  27. data/doc/Lims/Core/Actions/BulkAction.html +224 -0
  28. data/doc/Lims/Core/Actions/BulkAction/AfterEval.html +253 -0
  29. data/doc/Lims/Core/Actions/TestActionGroup.html +101 -0
  30. data/doc/Lims/Core/Actions/TestActionGroup/Action.html +133 -0
  31. data/doc/Lims/Core/Actions/TestActionGroup/ActionGroup.html +127 -0
  32. data/doc/Lims/Core/Base.html +287 -0
  33. data/doc/Lims/Core/Base/AccessibleViaSuper.html +252 -0
  34. data/doc/Lims/Core/Base/ClassMethod.html +177 -0
  35. data/doc/Lims/Core/Base/HashString.html +177 -0
  36. data/doc/Lims/Core/Base/IsArrayOf.html +606 -0
  37. data/doc/Lims/Core/Base/State.html +130 -0
  38. data/doc/Lims/Core/Organization.html +113 -0
  39. data/doc/Lims/Core/Organization/Batch.html +106 -0
  40. data/doc/Lims/Core/Persistence.html +267 -0
  41. data/doc/Lims/Core/Persistence/ComparisonFilter.html +318 -0
  42. data/doc/Lims/Core/Persistence/Filter.html +252 -0
  43. data/doc/Lims/Core/Persistence/IdentityMap.html +409 -0
  44. data/doc/Lims/Core/Persistence/IdentityMap/Class.html +144 -0
  45. data/doc/Lims/Core/Persistence/IdentityMap/DuplicateError.html +126 -0
  46. data/doc/Lims/Core/Persistence/IdentityMap/DuplicateIdError.html +136 -0
  47. data/doc/Lims/Core/Persistence/IdentityMap/DuplicateObjectError.html +136 -0
  48. data/doc/Lims/Core/Persistence/IdentityMapClass.html +133 -0
  49. data/doc/Lims/Core/Persistence/Logger.html +105 -0
  50. data/doc/Lims/Core/Persistence/Logger/Persistor.html +334 -0
  51. data/doc/Lims/Core/Persistence/Logger/Session.html +452 -0
  52. data/doc/Lims/Core/Persistence/Logger/Store.html +470 -0
  53. data/doc/Lims/Core/Persistence/MessageBus.html +871 -0
  54. data/doc/Lims/Core/Persistence/MessageBus/ConnectionError.html +123 -0
  55. data/doc/Lims/Core/Persistence/MessageBus/InvalidSettingsError.html +122 -0
  56. data/doc/Lims/Core/Persistence/MultiCriteriaFilter.html +293 -0
  57. data/doc/Lims/Core/Persistence/PersistAssociationTrait.html +91 -0
  58. data/doc/Lims/Core/Persistence/PersistableTrait.html +91 -0
  59. data/doc/Lims/Core/Persistence/Persistor.html +3072 -0
  60. data/doc/Lims/Core/Persistence/Persistor/DuplicateError.html +205 -0
  61. data/doc/Lims/Core/Persistence/Persistor/DuplicateIdError.html +147 -0
  62. data/doc/Lims/Core/Persistence/Persistor/DuplicateObjectError.html +147 -0
  63. data/doc/Lims/Core/Persistence/PersistorTrait.html +91 -0
  64. data/doc/Lims/Core/Persistence/ResourceState.html +1738 -0
  65. data/doc/Lims/Core/Persistence/Search.html +269 -0
  66. data/doc/Lims/Core/Persistence/Search/CreateSearch.html +251 -0
  67. data/doc/Lims/Core/Persistence/Search/SearchPersistor.html +240 -0
  68. data/doc/Lims/Core/Persistence/Search/SearchSequelPersistor.html +396 -0
  69. data/doc/Lims/Core/Persistence/Sequel.html +117 -0
  70. data/doc/Lims/Core/Persistence/Sequel/Filters.html +462 -0
  71. data/doc/Lims/Core/Persistence/Sequel/ForTest.html +101 -0
  72. data/doc/Lims/Core/Persistence/Sequel/ForTest/Name.html +137 -0
  73. data/doc/Lims/Core/Persistence/Sequel/ForTest/Name/NamePersitor.html +143 -0
  74. data/doc/Lims/Core/Persistence/Sequel/Migrations.html +266 -0
  75. data/doc/Lims/Core/Persistence/Sequel/Persistor.html +665 -0
  76. data/doc/Lims/Core/Persistence/Sequel/Session.html +501 -0
  77. data/doc/Lims/Core/Persistence/Sequel/Store.html +417 -0
  78. data/doc/Lims/Core/Persistence/Session.html +2751 -0
  79. data/doc/Lims/Core/Persistence/Session/UnmanagedObjectError.html +111 -0
  80. data/doc/Lims/Core/Persistence/StateGroup.html +696 -0
  81. data/doc/Lims/Core/Persistence/StateList.html +498 -0
  82. data/doc/Lims/Core/Persistence/Store.html +695 -0
  83. data/doc/Lims/Core/Persistence/UuidResource.html +1044 -0
  84. data/doc/Lims/Core/Persistence/UuidResource/InvalidUuidError.html +111 -0
  85. data/doc/Lims/Core/Persistence/UuidResource/UuidResourcePersistor.html +337 -0
  86. data/doc/Lims/Core/Persistence/Uuidable.html +799 -0
  87. data/doc/Lims/Core/Persistor.html +320 -0
  88. data/doc/Lims/Core/Resource.html +165 -0
  89. data/doc/Object.html +228 -0
  90. data/doc/SessionSpec.html +101 -0
  91. data/doc/SessionSpec/Model.html +279 -0
  92. data/doc/SessionSpec/Model/ModelPersistor.html +327 -0
  93. data/doc/_index.html +732 -0
  94. data/doc/class_list.html +47 -0
  95. data/doc/css/common.css +1 -0
  96. data/doc/css/full_list.css +55 -0
  97. data/doc/css/style.css +322 -0
  98. data/doc/file.README.html +127 -0
  99. data/doc/file_list.html +49 -0
  100. data/doc/frames.html +13 -0
  101. data/doc/index.html +127 -0
  102. data/doc/js/app.js +205 -0
  103. data/doc/js/full_list.js +167 -0
  104. data/doc/js/jquery.js +16 -0
  105. data/doc/method_list.html +1894 -0
  106. data/doc/top-level-namespace.html +100 -0
  107. data/lib/common.rb +18 -0
  108. data/lib/lims-core.rb +29 -0
  109. data/lib/lims-core/actions.rb +10 -0
  110. data/lib/lims-core/actions/action.rb +185 -0
  111. data/lib/lims-core/actions/action_group.rb +54 -0
  112. data/lib/lims-core/actions/bulk_action.rb +65 -0
  113. data/lib/lims-core/base.rb +132 -0
  114. data/lib/lims-core/helpers.rb +41 -0
  115. data/lib/lims-core/persistence.rb +15 -0
  116. data/lib/lims-core/persistence/comparison_filter.rb +54 -0
  117. data/lib/lims-core/persistence/filter.rb +23 -0
  118. data/lib/lims-core/persistence/identity_map.rb +55 -0
  119. data/lib/lims-core/persistence/logger/all.rb +5 -0
  120. data/lib/lims-core/persistence/logger/persistor.rb +35 -0
  121. data/lib/lims-core/persistence/logger/session.rb +30 -0
  122. data/lib/lims-core/persistence/logger/store.rb +37 -0
  123. data/lib/lims-core/persistence/message_bus.rb +131 -0
  124. data/lib/lims-core/persistence/multi_criteria_filter.rb +50 -0
  125. data/lib/lims-core/persistence/persist_association_trait.rb +96 -0
  126. data/lib/lims-core/persistence/persistable_trait.rb +150 -0
  127. data/lib/lims-core/persistence/persistor.rb +495 -0
  128. data/lib/lims-core/persistence/resource_state.rb +157 -0
  129. data/lib/lims-core/persistence/search.rb +3 -0
  130. data/lib/lims-core/persistence/search/all.rb +3 -0
  131. data/lib/lims-core/persistence/search/create_search.rb +55 -0
  132. data/lib/lims-core/persistence/search/search_persistor.rb +45 -0
  133. data/lib/lims-core/persistence/search/search_sequel_persistor.rb +40 -0
  134. data/lib/lims-core/persistence/sequel.rb +14 -0
  135. data/lib/lims-core/persistence/sequel/filters.rb +106 -0
  136. data/lib/lims-core/persistence/sequel/migrations.rb +14 -0
  137. data/lib/lims-core/persistence/sequel/migrations/add_audit_tables.rb +147 -0
  138. data/lib/lims-core/persistence/sequel/migrations/initial.rb +156 -0
  139. data/lib/lims-core/persistence/sequel/persistor.rb +200 -0
  140. data/lib/lims-core/persistence/sequel/session.rb +136 -0
  141. data/lib/lims-core/persistence/sequel/store.rb +37 -0
  142. data/lib/lims-core/persistence/session.rb +409 -0
  143. data/lib/lims-core/persistence/state_group.rb +97 -0
  144. data/lib/lims-core/persistence/state_list.rb +56 -0
  145. data/lib/lims-core/persistence/store.rb +73 -0
  146. data/lib/lims-core/persistence/uuid_resource.rb +115 -0
  147. data/lib/lims-core/persistence/uuid_resource_persistor.rb +43 -0
  148. data/lib/lims-core/persistence/uuidable.rb +107 -0
  149. data/lib/lims-core/resource.rb +21 -0
  150. data/lib/lims-core/subclass_tracker.rb +30 -0
  151. data/lib/lims-core/version.rb +5 -0
  152. data/lims-core.gemspec +40 -0
  153. data/makefile +52 -0
  154. data/showoff/core-2012-06-11/core/01_slide.md +237 -0
  155. data/showoff/core-2012-06-11/core/02_slide.md +110 -0
  156. data/showoff/core-2012-06-11/custom.css +44 -0
  157. data/showoff/core-2012-06-11/main/01_slide.md +53 -0
  158. data/showoff/core-2012-06-11/showoff.json +10 -0
  159. data/showoff/core-2012-06-11/tp1.tpl +1 -0
  160. data/spec/actions/action_group_spec.rb +39 -0
  161. data/spec/actions/spec_helper.rb +1 -0
  162. data/spec/persistence/identity_map_spec.rb +55 -0
  163. data/spec/persistence/logger/spec_helper.rb +7 -0
  164. data/spec/persistence/logger/store_spec.rb +48 -0
  165. data/spec/persistence/message_bus_spec.rb +76 -0
  166. data/spec/persistence/sequel/session_spec.rb +125 -0
  167. data/spec/persistence/sequel/spec_helper.rb +39 -0
  168. data/spec/persistence/sequel/store_shared.rb +25 -0
  169. data/spec/persistence/sequel/store_spec.rb +22 -0
  170. data/spec/persistence/session_spec.rb +199 -0
  171. data/spec/persistence/spec_helper.rb +2 -0
  172. data/spec/persistence/uuid_resource_spec.rb +80 -0
  173. data/spec/spec_helper.rb +10 -0
  174. data/spec/subclass_tracker_sperc.rb +62 -0
  175. data/utils/constant_tree.rb +29 -0
  176. data/utils/stack.rb +48 -0
  177. metadata +402 -0
@@ -0,0 +1,91 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Lims::Core::Action
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '../..';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="../../_index.html">Index (A)</a> &raquo;
37
+ <span class='title'><span class='object_link'><a href="../../Lims.html" title="Lims (module)">Lims</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Core.html" title="Lims::Core (module)">Core</a></span></span>
38
+ &raquo;
39
+ <span class="title">Action</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Module: Lims::Core::Action
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ <dt class="r1 last">Defined in:</dt>
75
+ <dd class="r1 last">spec/actions/labware_action_spec.rb</dd>
76
+
77
+ </dl>
78
+ <div class="clear"></div>
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+ </div>
88
+
89
+
90
+ </body>
91
+ </html>
@@ -0,0 +1,116 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Lims::Core::Actions
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '../..';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="../../_index.html">Index (A)</a> &raquo;
37
+ <span class='title'><span class='object_link'><a href="../../Lims.html" title="Lims (module)">Lims</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Core.html" title="Lims::Core (module)">Core</a></span></span>
38
+ &raquo;
39
+ <span class="title">Actions</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Module: Lims::Core::Actions
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ <dt class="r1 last">Defined in:</dt>
75
+ <dd class="r1 last">lib/lims-core/actions.rb<span class="defines">,<br />
76
+ lib/lims-core/actions/action.rb,<br /> spec/actions/action_group_spec.rb,<br /> lib/lims-core/actions/bulk_action.rb,<br /> lib/lims-core/actions/action_group.rb</span>
77
+ </dd>
78
+
79
+ </dl>
80
+ <div class="clear"></div>
81
+
82
+ <h2>Overview</h2><div class="docstring">
83
+ <div class="discussion">
84
+
85
+ <p>Actions are high level end user groups of elementary steps that a user can
86
+ perform on things . They can be seen as use-case, scenario and will
87
+ probably each correspond to one call in the API.</p>
88
+
89
+
90
+ </div>
91
+ </div>
92
+ <div class="tags">
93
+
94
+
95
+ </div><h2>Defined Under Namespace</h2>
96
+ <p class="children">
97
+
98
+
99
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Actions/Action.html" title="Lims::Core::Actions::Action (module)">Action</a></span>, <span class='object_link'><a href="Actions/ActionGroup.html" title="Lims::Core::Actions::ActionGroup (module)">ActionGroup</a></span>, <span class='object_link'><a href="Actions/BulkAction.html" title="Lims::Core::Actions::BulkAction (module)">BulkAction</a></span>, <span class='object_link'><a href="Actions/TestActionGroup.html" title="Lims::Core::Actions::TestActionGroup (module)">TestActionGroup</a></span>
100
+
101
+
102
+
103
+
104
+ </p>
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+ </div>
113
+
114
+
115
+ </body>
116
+ </html>
@@ -0,0 +1,216 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Lims::Core::Actions::Action
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '../../..';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="../../../_index.html">Index (A)</a> &raquo;
37
+ <span class='title'><span class='object_link'><a href="../../../Lims.html" title="Lims (module)">Lims</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Core.html" title="Lims::Core (module)">Core</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Actions.html" title="Lims::Core::Actions (module)">Actions</a></span></span>
38
+ &raquo;
39
+ <span class="title">Action</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Module: Lims::Core::Actions::Action
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ <dt class="r1">Included in:</dt>
74
+ <dd class="r1"><span class='object_link'><a href="TestActionGroup/Action.html" title="Lims::Core::Actions::TestActionGroup::Action (class)">TestActionGroup::Action</a></span>, <span class='object_link'><a href="../Persistence/Search/CreateSearch.html" title="Lims::Core::Persistence::Search::CreateSearch (class)">Persistence::Search::CreateSearch</a></span></dd>
75
+
76
+
77
+
78
+ <dt class="r2 last">Defined in:</dt>
79
+ <dd class="r2 last">lib/lims-core/actions/action.rb</dd>
80
+
81
+ </dl>
82
+ <div class="clear"></div>
83
+
84
+ <h2>Overview</h2><div class="docstring">
85
+ <div class="discussion">
86
+
87
+ <p>This mixin add the Action behavior to a Class. An action can be called and
88
+ reverted (if possible) within a <span class='object_link'><a href="../Persistence/Session.html" title="Lims::Core::Persistence::Session (class)">session</a></span>. For this,
89
+ the action must implements the <span class='object_link'><a href="Action/AfterEval.html#_call_in_session-instance_method" title="Lims::Core::Actions::Action::AfterEval#_call_in_session (method)">_call_in_session</a></span> and <span class='object_link'><a href="Action/AfterEval.html#_revert_in_session-instance_method" title="Lims::Core::Actions::Action::AfterEval#_revert_in_session (method)">_revert_in_session</a></span>. Those methods are private and take a session as a
90
+ parameter. The public equivalent (call/revert) will create a session (using
91
+ the store) and call the corresponding methods.</p>
92
+
93
+
94
+ </div>
95
+ </div>
96
+ <div class="tags">
97
+
98
+
99
+ </div><h2>Defined Under Namespace</h2>
100
+ <p class="children">
101
+
102
+
103
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Action/AfterEval.html" title="Lims::Core::Actions::Action::AfterEval (module)">AfterEval</a></span>
104
+
105
+
106
+
107
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Action/InvalidParameters.html" title="Lims::Core::Actions::Action::InvalidParameters (class)">InvalidParameters</a></span>
108
+
109
+
110
+ </p>
111
+
112
+ <h2>Constant Summary</h2>
113
+
114
+ <dl class="constants">
115
+
116
+ <dt id="UnrevertableAction-constant" class="">UnrevertableAction =
117
+
118
+ </dt>
119
+ <dd><pre class="code"><span class='const'>Class</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='const'>StandardError</span><span class='rparen'>)</span></pre></dd>
120
+
121
+ </dl>
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+ <h2>
130
+ Class Method Summary
131
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
132
+ </h2>
133
+
134
+ <ul class="summary">
135
+
136
+ <li class="public ">
137
+ <span class="summary_signature">
138
+
139
+ <a href="#included-class_method" title="included (class method)">+ (Object) <strong>included</strong>(klass) </a>
140
+
141
+
142
+
143
+ </span>
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+ <span class="summary_desc"><div class='inline'></div></span>
153
+
154
+ </li>
155
+
156
+
157
+ </ul>
158
+
159
+
160
+
161
+
162
+ <div id="class_method_details" class="method_details_list">
163
+ <h2>Class Method Details</h2>
164
+
165
+
166
+ <div class="method_details first">
167
+ <p class="signature first" id="included-class_method">
168
+
169
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>included</strong>(klass)
170
+
171
+
172
+
173
+ </p><table class="source_code">
174
+ <tr>
175
+ <td>
176
+ <pre class="lines">
177
+
178
+
179
+ 18
180
+ 19
181
+ 20
182
+ 21
183
+ 22
184
+ 23
185
+ 24
186
+ 25
187
+ 26
188
+ 27
189
+ 28</pre>
190
+ </td>
191
+ <td>
192
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 18</span>
193
+
194
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id included'>included</span><span class='lparen'>(</span><span class='id klass'>klass</span><span class='rparen'>)</span>
195
+ <span class='id klass'>klass</span><span class='period'>.</span><span class='id class_eval'>class_eval</span> <span class='kw'>do</span>
196
+ <span class='id include'>include</span> <span class='const'>Virtus</span>
197
+ <span class='id include'>include</span> <span class='const'>Aequitas</span>
198
+ <span class='id attribute'>attribute</span> <span class='symbol'>:store</span><span class='comma'>,</span> <span class='const'>Persistence</span><span class='op'>::</span><span class='const'>Store</span><span class='comma'>,</span> <span class='symbol'>:required</span> <span class='op'>=&gt;</span> <span class='kw'>true</span>
199
+ <span class='id attribute'>attribute</span> <span class='symbol'>:user</span><span class='comma'>,</span> <span class='const'>String</span><span class='comma'>,</span> <span class='symbol'>:required</span> <span class='op'>=&gt;</span> <span class='kw'>true</span>
200
+ <span class='id attribute'>attribute</span> <span class='symbol'>:application</span><span class='comma'>,</span> <span class='const'>String</span><span class='comma'>,</span> <span class='symbol'>:required</span> <span class='op'>=&gt;</span> <span class='kw'>true</span>
201
+ <span class='id attribute'>attribute</span> <span class='symbol'>:result</span><span class='comma'>,</span> <span class='const'>Object</span>
202
+ <span class='id include'>include</span> <span class='const'>AfterEval</span> <span class='comment'># hack so initialize would be called properly
203
+ </span> <span class='kw'>end</span>
204
+ <span class='kw'>end</span></pre>
205
+ </td>
206
+ </tr>
207
+ </table>
208
+ </div>
209
+
210
+ </div>
211
+
212
+ </div>
213
+
214
+
215
+ </body>
216
+ </html>
@@ -0,0 +1,853 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Lims::Core::Actions::Action::AfterEval
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../../../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '../../../..';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="../../../../js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../../../js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="../../../../_index.html">Index (A)</a> &raquo;
37
+ <span class='title'><span class='object_link'><a href="../../../../Lims.html" title="Lims (module)">Lims</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../../Core.html" title="Lims::Core (module)">Core</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Actions.html" title="Lims::Core::Actions (module)">Actions</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Action.html" title="Lims::Core::Actions::Action (module)">Action</a></span></span>
38
+ &raquo;
39
+ <span class="title">AfterEval</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Module: Lims::Core::Actions::Action::AfterEval
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ <dt class="r1 last">Defined in:</dt>
75
+ <dd class="r1 last">lib/lims-core/actions/action.rb</dd>
76
+
77
+ </dl>
78
+ <div class="clear"></div>
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+ <h2>
87
+ Instance Method Summary
88
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
89
+ </h2>
90
+
91
+ <ul class="summary">
92
+
93
+ <li class="private ">
94
+ <span class="summary_signature">
95
+
96
+ <a href="#_call_in_session-instance_method" title="#_call_in_session (instance method)">- (Object) <strong>_call_in_session</strong>(session) </a>
97
+
98
+
99
+
100
+ </span>
101
+
102
+
103
+ <span class="note title private">private</span>
104
+
105
+
106
+
107
+
108
+
109
+ <span class="summary_desc"><div class='inline'>
110
+ <p>This is the main method of an action, called to effectively perform an
111
+ action.</p>
112
+ </div></span>
113
+
114
+ </li>
115
+
116
+
117
+ <li class="private ">
118
+ <span class="summary_signature">
119
+
120
+ <a href="#_objects_to_save-instance_method" title="#_objects_to_save (instance method)">- (Object) <strong>_objects_to_save</strong> </a>
121
+
122
+
123
+
124
+ </span>
125
+
126
+
127
+ <span class="note title private">private</span>
128
+
129
+
130
+
131
+
132
+
133
+ <span class="summary_desc"><div class='inline'>
134
+ <p>List of objects to save (add to the session).</p>
135
+ </div></span>
136
+
137
+ </li>
138
+
139
+
140
+ <li class="private ">
141
+ <span class="summary_signature">
142
+
143
+ <a href="#_revert_in_session-instance_method" title="#_revert_in_session (instance method)">- (Object) <strong>_revert_in_session</strong>(session) </a>
144
+
145
+
146
+
147
+ </span>
148
+
149
+
150
+ <span class="note title private">private</span>
151
+
152
+
153
+
154
+
155
+
156
+ <span class="summary_desc"><div class='inline'>
157
+ <p>how to revert the action, if possible.</p>
158
+ </div></span>
159
+
160
+ </li>
161
+
162
+
163
+ <li class="public ">
164
+ <span class="summary_signature">
165
+
166
+ <a href="#call-instance_method" title="#call (instance method)">- (Object) <strong>call</strong> {|a, session| ... }</a>
167
+
168
+
169
+
170
+ </span>
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+ <span class="summary_desc"><div class='inline'>
180
+ <p>Executes the action.</p>
181
+ </div></span>
182
+
183
+ </li>
184
+
185
+
186
+ <li class="public ">
187
+ <span class="summary_signature">
188
+
189
+ <a href="#errors_to_hash-instance_method" title="#errors_to_hash (instance method)">- (Object) <strong>errors_to_hash</strong> </a>
190
+
191
+
192
+
193
+ </span>
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+ <span class="summary_desc"><div class='inline'></div></span>
203
+
204
+ </li>
205
+
206
+
207
+ <li class="public ">
208
+ <span class="summary_signature">
209
+
210
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (AfterEval) <strong>initialize</strong>(*args, &amp;initializer) </a>
211
+
212
+
213
+
214
+ </span>
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ <span class="summary_desc"><div class='inline'>
224
+ <p>Initialize a new actions 'Common' parameters are set as argument whereas
225
+ specific ones are set on a dummy object via the block.</p>
226
+ </div></span>
227
+
228
+ </li>
229
+
230
+
231
+ <li class="public ">
232
+ <span class="summary_signature">
233
+
234
+ <a href="#revert-instance_method" title="#revert (instance method)">- (Object) <strong>revert</strong> </a>
235
+
236
+
237
+
238
+ </span>
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+ <span class="summary_desc"><div class='inline'>
248
+ <p>Execute the opposite of the action if possible.</p>
249
+ </div></span>
250
+
251
+ </li>
252
+
253
+
254
+ <li class="public ">
255
+ <span class="summary_signature">
256
+
257
+ <a href="#with_session-instance_method" title="#with_session (instance method)">- (Object, False) <strong>with_session</strong>(*args, &amp;block) </a>
258
+
259
+
260
+
261
+ </span>
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+ <span class="summary_desc"><div class='inline'>
271
+ <p>Execute the given block within a new session.</p>
272
+ </div></span>
273
+
274
+ </li>
275
+
276
+
277
+ </ul>
278
+
279
+
280
+
281
+
282
+ <div id="instance_method_details" class="method_details_list">
283
+ <h2>Instance Method Details</h2>
284
+
285
+
286
+ <div class="method_details first">
287
+ <p class="signature first" id="_call_in_session-instance_method">
288
+
289
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>_call_in_session</strong>(session) <span class="extras">(private)</span>
290
+
291
+
292
+
293
+ </p><div class="docstring">
294
+ <div class="discussion">
295
+
296
+ <p>This is the main method of an action, called to effectively perform an
297
+ action.</p>
298
+
299
+
300
+ </div>
301
+ </div>
302
+ <div class="tags">
303
+
304
+ <h3>Raises:</h3>
305
+ <ul class="raise">
306
+
307
+ <li>
308
+
309
+
310
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
311
+
312
+
313
+
314
+ </li>
315
+
316
+ </ul>
317
+
318
+ </div><table class="source_code">
319
+ <tr>
320
+ <td>
321
+ <pre class="lines">
322
+
323
+
324
+ 159
325
+ 160
326
+ 161</pre>
327
+ </td>
328
+ <td>
329
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 159</span>
330
+
331
+ <span class='kw'>def</span> <span class='id _call_in_session'>_call_in_session</span><span class='lparen'>(</span><span class='id session'>session</span><span class='rparen'>)</span>
332
+ <span class='id raise'>raise</span> <span class='const'>NotImplementedError</span>
333
+ <span class='kw'>end</span></pre>
334
+ </td>
335
+ </tr>
336
+ </table>
337
+ </div>
338
+
339
+ <div class="method_details ">
340
+ <p class="signature " id="_objects_to_save-instance_method">
341
+
342
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>_objects_to_save</strong> <span class="extras">(private)</span>
343
+
344
+
345
+
346
+ </p><div class="docstring">
347
+ <div class="discussion">
348
+
349
+ <p>List of objects to save (add to the session). By default get all attributes
350
+ and the resulth. Override if need (to add a created resource for example).</p>
351
+
352
+
353
+ </div>
354
+ </div>
355
+ <div class="tags">
356
+
357
+ <h3>Returns:</h3>
358
+ <ul class="return">
359
+
360
+ <li>
361
+
362
+
363
+ <span class='type'></span>
364
+
365
+
366
+
367
+
368
+ <div class='inline'>
369
+ <p>a list of object to save</p>
370
+ </div>
371
+
372
+ </li>
373
+
374
+ </ul>
375
+
376
+ </div><table class="source_code">
377
+ <tr>
378
+ <td>
379
+ <pre class="lines">
380
+
381
+
382
+ 173
383
+ 174
384
+ 175</pre>
385
+ </td>
386
+ <td>
387
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 173</span>
388
+
389
+ <span class='kw'>def</span> <span class='id _objects_to_save'>_objects_to_save</span>
390
+ <span class='lbracket'>[</span><span class='id result'>result</span><span class='comma'>,</span> <span class='op'>*</span><span class='id attributes'>attributes</span><span class='period'>.</span><span class='id map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id a'>a</span><span class='op'>|</span> <span class='id a'>a</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id o'>o</span><span class='op'>|</span> <span class='id o'>o</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Resource</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
391
+ <span class='kw'>end</span></pre>
392
+ </td>
393
+ </tr>
394
+ </table>
395
+ </div>
396
+
397
+ <div class="method_details ">
398
+ <p class="signature " id="_revert_in_session-instance_method">
399
+
400
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>_revert_in_session</strong>(session) <span class="extras">(private)</span>
401
+
402
+
403
+
404
+ </p><div class="docstring">
405
+ <div class="discussion">
406
+
407
+ <p>how to revert the action, if possible.</p>
408
+
409
+
410
+ </div>
411
+ </div>
412
+ <div class="tags">
413
+
414
+
415
+ </div><table class="source_code">
416
+ <tr>
417
+ <td>
418
+ <pre class="lines">
419
+
420
+
421
+ 165
422
+ 166
423
+ 167</pre>
424
+ </td>
425
+ <td>
426
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 165</span>
427
+
428
+ <span class='kw'>def</span> <span class='id _revert_in_session'>_revert_in_session</span><span class='lparen'>(</span><span class='id session'>session</span><span class='rparen'>)</span>
429
+ <span class='id raise'>raise</span> <span class='const'>UnrevertableAction</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
430
+ <span class='kw'>end</span></pre>
431
+ </td>
432
+ </tr>
433
+ </table>
434
+ </div>
435
+
436
+ <div class="method_details ">
437
+ <p class="signature " id="call-instance_method">
438
+
439
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>call</strong> {|a, session| ... }
440
+
441
+
442
+
443
+ </p><div class="docstring">
444
+ <div class="discussion">
445
+
446
+ <p>Executes the action. This is a wrapper around _call_in_session, and it
447
+ shouldn't be overriden. A block can be passed to be evaluated with the
448
+ session after the save session been saved. This is usefull to get ids of
449
+ saved object. False will be returned if the action failed (or parameters
450
+ are invalid)</p>
451
+
452
+
453
+ </div>
454
+ </div>
455
+ <div class="tags">
456
+
457
+ <h3>Yield Parameters:</h3>
458
+ <ul class="yieldparam">
459
+
460
+ <li>
461
+
462
+ <span class='name'>a</span>
463
+
464
+
465
+ <span class='type'>(<tt><span class='object_link'><a href="../Action.html" title="Lims::Core::Actions::Action (module)">Action</a></span></tt>)</span>
466
+
467
+
468
+
469
+ &mdash;
470
+ <div class='inline'>
471
+ <p>self</p>
472
+ </div>
473
+
474
+ </li>
475
+
476
+ <li>
477
+
478
+ <span class='name'>session</span>
479
+
480
+
481
+ <span class='type'>(<tt>Session</tt>)</span>
482
+
483
+
484
+
485
+ &mdash;
486
+ <div class='inline'>
487
+ <p>the current session.</p>
488
+ </div>
489
+
490
+ </li>
491
+
492
+ </ul>
493
+ <h3>Returns:</h3>
494
+ <ul class="return">
495
+
496
+ <li>
497
+
498
+
499
+ <span class='type'></span>
500
+
501
+
502
+
503
+
504
+ <div class='inline'>
505
+ <p>the value return by the block</p>
506
+ </div>
507
+
508
+ </li>
509
+
510
+ </ul>
511
+
512
+ </div><table class="source_code">
513
+ <tr>
514
+ <td>
515
+ <pre class="lines">
516
+
517
+
518
+ 57
519
+ 58
520
+ 59
521
+ 60
522
+ 61</pre>
523
+ </td>
524
+ <td>
525
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 57</span>
526
+
527
+ <span class='kw'>def</span> <span class='id call'>call</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id after_save'>after_save</span><span class='rparen'>)</span>
528
+ <span class='id with_session'>with_session</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id session'>session</span><span class='op'>|</span>
529
+ <span class='id execute_and_store_result'>execute_and_store_result</span><span class='lparen'>(</span><span class='id session'>session</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id after_save'>after_save</span><span class='rparen'>)</span>
530
+ <span class='kw'>end</span><span class='period'>.</span><span class='id andtap'>andtap</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id block'>block</span><span class='op'>|</span> <span class='id block'>block</span><span class='period'>.</span><span class='id call'>call</span> <span class='rbrace'>}</span>
531
+ <span class='kw'>end</span></pre>
532
+ </td>
533
+ </tr>
534
+ </table>
535
+ </div>
536
+
537
+ <div class="method_details ">
538
+ <p class="signature " id="errors_to_hash-instance_method">
539
+
540
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>errors_to_hash</strong>
541
+
542
+
543
+
544
+ </p><table class="source_code">
545
+ <tr>
546
+ <td>
547
+ <pre class="lines">
548
+
549
+
550
+ 144
551
+ 145
552
+ 146
553
+ 147
554
+ 148
555
+ 149
556
+ 150
557
+ 151
558
+ 152
559
+ 153
560
+ 154
561
+ 155</pre>
562
+ </td>
563
+ <td>
564
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 144</span>
565
+
566
+ <span class='kw'>def</span> <span class='id errors_to_hash'>errors_to_hash</span><span class='lparen'>(</span><span class='rparen'>)</span>
567
+ <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id hash'>hash</span><span class='op'>|</span>
568
+ <span class='id errors'>errors</span><span class='period'>.</span><span class='id keys'>keys</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id key'>key</span><span class='op'>|</span>
569
+ <span class='id hash'>hash</span><span class='lbracket'>[</span><span class='id key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id array'>array</span><span class='op'>|</span>
570
+ <span class='comment'># errors[key] returns an array of Aequitas::Violation
571
+ </span> <span class='id errors'>errors</span><span class='lbracket'>[</span><span class='id key'>key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id error'>error</span><span class='op'>|</span>
572
+ <span class='id array'>array</span> <span class='op'>&lt;&lt;</span> <span class='id error'>error</span><span class='period'>.</span><span class='id message'>message</span>
573
+ <span class='kw'>end</span>
574
+ <span class='kw'>end</span>
575
+ <span class='kw'>end</span>
576
+ <span class='kw'>end</span>
577
+ <span class='kw'>end</span></pre>
578
+ </td>
579
+ </tr>
580
+ </table>
581
+ </div>
582
+
583
+ <div class="method_details ">
584
+ <p class="signature " id="initialize-instance_method">
585
+
586
+ - (<tt><span class='object_link'><a href="" title="Lims::Core::Actions::Action::AfterEval (module)">AfterEval</a></span></tt>) <strong>initialize</strong>(*args, &amp;initializer)
587
+
588
+
589
+
590
+ </p><div class="docstring">
591
+ <div class="discussion">
592
+
593
+ <p>Initialize a new actions 'Common' parameters are set as argument whereas
594
+ specific ones are set on a dummy object via the block. The block is
595
+ executed within a session allowing to find object form id, etc.</p>
596
+
597
+
598
+ </div>
599
+ </div>
600
+ <div class="tags">
601
+
602
+
603
+ </div><table class="source_code">
604
+ <tr>
605
+ <td>
606
+ <pre class="lines">
607
+
608
+
609
+ 43
610
+ 44
611
+ 45
612
+ 46</pre>
613
+ </td>
614
+ <td>
615
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 43</span>
616
+
617
+ <span class='kw'>def</span> <span class='id initialize'>initialize</span><span class='lparen'>(</span><span class='op'>*</span><span class='id args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id initializer'>initializer</span><span class='rparen'>)</span>
618
+ <span class='ivar'>@initializer</span> <span class='op'>=</span> <span class='id initializer'>initializer</span>
619
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='op'>*</span><span class='id args'>args</span><span class='rparen'>)</span>
620
+ <span class='kw'>end</span></pre>
621
+ </td>
622
+ </tr>
623
+ </table>
624
+ </div>
625
+
626
+ <div class="method_details ">
627
+ <p class="signature " id="revert-instance_method">
628
+
629
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>revert</strong>
630
+
631
+
632
+
633
+ </p><div class="docstring">
634
+ <div class="discussion">
635
+
636
+ <p>Execute the opposite of the action if possible. This a wrapper around
637
+ _revert_in_session, and shouldn't be overriden.</p>
638
+
639
+
640
+ </div>
641
+ </div>
642
+ <div class="tags">
643
+
644
+ <h3>Raises:</h3>
645
+ <ul class="raise">
646
+
647
+ <li>
648
+
649
+
650
+ <span class='type'></span>
651
+
652
+
653
+
654
+
655
+ <div class='inline'>
656
+ <p>UnrevertableAction</p>
657
+ </div>
658
+
659
+ </li>
660
+
661
+ </ul>
662
+
663
+ </div><table class="source_code">
664
+ <tr>
665
+ <td>
666
+ <pre class="lines">
667
+
668
+
669
+ 78
670
+ 79
671
+ 80</pre>
672
+ </td>
673
+ <td>
674
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 78</span>
675
+
676
+ <span class='kw'>def</span> <span class='id revert'>revert</span><span class='lparen'>(</span><span class='rparen'>)</span>
677
+ <span class='id with_session'>with_session</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id s'>s</span><span class='op'>|</span> <span class='id _revert_in_session'>_revert_in_session</span><span class='lparen'>(</span><span class='id s'>s</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
678
+ <span class='kw'>end</span></pre>
679
+ </td>
680
+ </tr>
681
+ </table>
682
+ </div>
683
+
684
+ <div class="method_details ">
685
+ <p class="signature " id="with_session-instance_method">
686
+
687
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>, <tt>False</tt>) <strong>with_session</strong>(*args, &amp;block)
688
+
689
+
690
+
691
+ </p><div class="docstring">
692
+ <div class="discussion">
693
+
694
+ <p>Execute the given block within a new session. Validates the action and fill
695
+ #errors if needed</p>
696
+
697
+
698
+ </div>
699
+ </div>
700
+ <div class="tags">
701
+
702
+ <h3>Returns:</h3>
703
+ <ul class="return">
704
+
705
+ <li>
706
+
707
+
708
+ <span class='type'>(<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>, <tt>False</tt>)</span>
709
+
710
+
711
+
712
+ </li>
713
+
714
+ </ul>
715
+
716
+ </div><table class="source_code">
717
+ <tr>
718
+ <td>
719
+ <pre class="lines">
720
+
721
+
722
+ 85
723
+ 86
724
+ 87
725
+ 88
726
+ 89
727
+ 90
728
+ 91
729
+ 92
730
+ 93
731
+ 94
732
+ 95
733
+ 96
734
+ 97
735
+ 98
736
+ 99
737
+ 100
738
+ 101
739
+ 102
740
+ 103
741
+ 104
742
+ 105
743
+ 106
744
+ 107
745
+ 108
746
+ 109
747
+ 110
748
+ 111
749
+ 112
750
+ 113
751
+ 114
752
+ 115
753
+ 116
754
+ 117
755
+ 118
756
+ 119
757
+ 120
758
+ 121
759
+ 122
760
+ 123
761
+ 124
762
+ 125
763
+ 126
764
+ 127
765
+ 128
766
+ 129
767
+ 130
768
+ 131
769
+ 132
770
+ 133
771
+ 134
772
+ 135
773
+ 136
774
+ 137
775
+ 138
776
+ 139
777
+ 140
778
+ 141
779
+ 142</pre>
780
+ </td>
781
+ <td>
782
+ <pre class="code"><span class="info file"># File 'lib/lims-core/actions/action.rb', line 85</span>
783
+
784
+ <span class='kw'>def</span> <span class='id with_session'>with_session</span><span class='lparen'>(</span><span class='op'>*</span><span class='id args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id block'>block</span><span class='rparen'>)</span>
785
+ <span class='ivar'>@store</span><span class='period'>.</span><span class='id with_session'>with_session</span><span class='lparen'>(</span><span class='op'>*</span><span class='id args'>args</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id session'>session</span><span class='op'>|</span>
786
+ <span class='comment'># initialize action
787
+ </span> <span class='kw'>if</span> <span class='ivar'>@initializer</span>
788
+ <span class='id params'>params</span> <span class='op'>=</span> <span class='const'>OpenStruct</span><span class='period'>.</span><span class='id new'>new</span>
789
+
790
+ <span class='ivar'>@initializer</span><span class='lbracket'>[</span><span class='id params'>params</span><span class='comma'>,</span> <span class='id session'>session</span><span class='rbracket'>]</span>
791
+
792
+ <span class='comment'># We want to catch ALL attributes errors
793
+ </span> <span class='comment'># therefore We need to iterate on each attributes
794
+ </span> <span class='comment'># and catch the potentiel exception raised by each
795
+ </span> <span class='comment'># assignment.
796
+ </span>
797
+
798
+ <span class='id attribute_errors'>attribute_errors</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
799
+ <span class='id params'>params</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id key'>key</span><span class='comma'>,</span> <span class='id value'>value</span><span class='op'>|</span>
800
+ <span class='kw'>begin</span>
801
+ <span class='id send'>send</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id key'>key</span><span class='rbrace'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id value'>value</span><span class='rparen'>)</span>
802
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span> <span class='op'>=&gt;</span> <span class='id e'>e</span>
803
+ <span class='id attribute_errors'>attribute_errors</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id key'>key</span><span class='comma'>,</span> <span class='id value'>value</span><span class='rbracket'>]</span>
804
+ <span class='kw'>end</span>
805
+ <span class='kw'>end</span>
806
+
807
+ <span class='kw'>unless</span> <span class='id attribute_errors'>attribute_errors</span><span class='period'>.</span><span class='id empty?'>empty?</span>
808
+ <span class='comment'># An error occured.
809
+ </span> <span class='comment'># We need to check if set attributes are valid
810
+ </span> <span class='comment'># and add the attributes errors to the general error message.
811
+ </span> <span class='id valid?'>valid?</span>
812
+ <span class='id invalid_parameters'>invalid_parameters</span> <span class='op'>=</span> <span class='id errors_to_hash'>errors_to_hash</span>
813
+
814
+ <span class='id attribute_errors'>attribute_errors</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id key'>key</span><span class='comma'>,</span> <span class='id value'>value</span><span class='op'>|</span>
815
+ <span class='id invalid_parameters'>invalid_parameters</span><span class='lbracket'>[</span><span class='id key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>field :</span><span class='embexpr_beg'>#{</span><span class='id key'>key</span><span class='rbrace'>}</span><span class='tstring_content'> doesn't exist or value '</span><span class='embexpr_beg'>#{</span><span class='id value'>value</span><span class='rbrace'>}</span><span class='tstring_content'>' is invalid</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
816
+ <span class='kw'>end</span>
817
+ <span class='id raise'>raise</span> <span class='const'>InvalidParameters</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='id invalid_parameters'>invalid_parameters</span><span class='rparen'>)</span>
818
+ <span class='kw'>end</span>
819
+ <span class='ivar'>@initializer</span> <span class='op'>=</span> <span class='kw'>nil</span>
820
+ <span class='kw'>end</span>
821
+
822
+ <span class='comment'># Note: there is a bug in Aequitas gem on the valid?
823
+ </span> <span class='comment'># method call. For an attribute which needs to be required
824
+ </span> <span class='comment'># and greater than 0, the greater than 0 is tested first
825
+ </span> <span class='comment'># and the required after. So if the parameter is not set,
826
+ </span> <span class='comment'># nil &gt;= 0 is evaluated by Aequitas and an exception is
827
+ </span> <span class='comment'># raised. We catch it here and raise an InvalidParameters error.
828
+ </span> <span class='id is_valid'>is_valid</span> <span class='op'>=</span> <span class='kw'>begin</span>
829
+ <span class='id valid?'>valid?</span>
830
+ <span class='kw'>rescue</span>
831
+ <span class='id raise'>raise</span> <span class='const'>InvalidParameters</span><span class='period'>.</span><span class='id new'>new</span>
832
+ <span class='kw'>end</span>
833
+
834
+ <span class='kw'>if</span> <span class='id is_valid'>is_valid</span>
835
+ <span class='id block'>block</span><span class='period'>.</span><span class='id call'>call</span><span class='lparen'>(</span><span class='id session'>session</span><span class='rparen'>)</span>
836
+ <span class='kw'>else</span>
837
+ <span class='id invalid_parameters'>invalid_parameters</span> <span class='op'>=</span> <span class='id errors_to_hash'>errors_to_hash</span>
838
+ <span class='id raise'>raise</span> <span class='const'>InvalidParameters</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='id invalid_parameters'>invalid_parameters</span><span class='rparen'>)</span>
839
+ <span class='kw'>end</span>
840
+ <span class='kw'>end</span>
841
+ <span class='kw'>end</span></pre>
842
+ </td>
843
+ </tr>
844
+ </table>
845
+ </div>
846
+
847
+ </div>
848
+
849
+ </div>
850
+
851
+
852
+ </body>
853
+ </html>