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,117 @@
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::Persistence::Sequel
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 (S)</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="../Persistence.html" title="Lims::Core::Persistence (module)">Persistence</a></span></span>
38
+ &raquo;
39
+ <span class="title">Sequel</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::Persistence::Sequel
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/persistence/sequel.rb<span class="defines">,<br />
76
+ spec/persistence/sequel/session_spec.rb,<br /> lib/lims-core/persistence/sequel/store.rb,<br /> lib/lims-core/persistence/sequel/session.rb,<br /> lib/lims-core/persistence/sequel/persistor.rb,<br /> lib/lims-core/persistence/sequel/migrations.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>Persistence module using the <a href="http://sequel.rubyforge.org/" target="_parent" title="sequel">sequel</a> gem. It
86
+ implements abstract/base classes : <span class='object_link'><a href="Sequel/Store.html" title="Lims::Core::Persistence::Sequel::Store (class)">Store</a></span>, <span class='object_link'><a href="Sequel/Session.html" title="Lims::Core::Persistence::Sequel::Session (class)">Session</a></span> etc.</p>
87
+
88
+
89
+ </div>
90
+ </div>
91
+ <div class="tags">
92
+
93
+
94
+ </div><h2>Defined Under Namespace</h2>
95
+ <p class="children">
96
+
97
+
98
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Sequel/Filters.html" title="Lims::Core::Persistence::Sequel::Filters (module)">Filters</a></span>, <span class='object_link'><a href="Sequel/ForTest.html" title="Lims::Core::Persistence::Sequel::ForTest (module)">ForTest</a></span>, <span class='object_link'><a href="Sequel/Migrations.html" title="Lims::Core::Persistence::Sequel::Migrations (module)">Migrations</a></span>, <span class='object_link'><a href="Sequel/Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span>
99
+
100
+
101
+
102
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Sequel/Session.html" title="Lims::Core::Persistence::Sequel::Session (class)">Session</a></span>, <span class='object_link'><a href="Sequel/Store.html" title="Lims::Core::Persistence::Sequel::Store (class)">Store</a></span>
103
+
104
+
105
+ </p>
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ </div>
114
+
115
+
116
+ </body>
117
+ </html>
@@ -0,0 +1,462 @@
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::Persistence::Sequel::Filters
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 (F)</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="../../Persistence.html" title="Lims::Core::Persistence (module)">Persistence</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Sequel.html" title="Lims::Core::Persistence::Sequel (module)">Sequel</a></span></span>
38
+ &raquo;
39
+ <span class="title">Filters</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::Persistence::Sequel::Filters
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="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></dd>
75
+
76
+
77
+
78
+ <dt class="r2 last">Defined in:</dt>
79
+ <dd class="r2 last">lib/lims-core/persistence/sequel/filters.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>Implementes filter methods needed by persitors.</p>
88
+
89
+
90
+ </div>
91
+ </div>
92
+ <div class="tags">
93
+
94
+
95
+ </div>
96
+ <h2>Constant Summary</h2>
97
+
98
+ <dl class="constants">
99
+
100
+ <dt id="COMPARISON_OPERATORS-constant" class="">COMPARISON_OPERATORS =
101
+
102
+ </dt>
103
+ <dd><pre class="code"><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span></pre></dd>
104
+
105
+ </dl>
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ <h2>
114
+ Instance Method Summary
115
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
116
+ </h2>
117
+
118
+ <ul class="summary">
119
+
120
+ <li class="public ">
121
+ <span class="summary_signature">
122
+
123
+ <a href="#add_comparison_filter-instance_method" title="#add_comparison_filter (instance method)">- (Persistor) <strong>add_comparison_filter</strong>(dataset, comparison_criteria) </a>
124
+
125
+
126
+
127
+ </span>
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <span class="summary_desc"><div class='inline'>
137
+ <p>Joins the comparison filter to the existing persistor.</p>
138
+ </div></span>
139
+
140
+ </li>
141
+
142
+
143
+ <li class="public ">
144
+ <span class="summary_signature">
145
+
146
+ <a href="#comparison_filter-instance_method" title="#comparison_filter (instance method)">- (Persistor) <strong>comparison_filter</strong>(criteria) </a>
147
+
148
+
149
+
150
+ </span>
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+ <span class="summary_desc"><div class='inline'>
160
+ <p>Implement a comparison filter for a Sequel::Persistor.</p>
161
+ </div></span>
162
+
163
+ </li>
164
+
165
+
166
+ <li class="public ">
167
+ <span class="summary_signature">
168
+
169
+ <a href="#multi_criteria_filter-instance_method" title="#multi_criteria_filter (instance method)">- (Persistor) <strong>multi_criteria_filter</strong>(criteria) </a>
170
+
171
+
172
+
173
+ </span>
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+ <span class="summary_desc"><div class='inline'>
183
+ <p>Implement a multicriteria filter for a Sequel::Persistor.</p>
184
+ </div></span>
185
+
186
+ </li>
187
+
188
+
189
+ </ul>
190
+
191
+
192
+
193
+
194
+ <div id="instance_method_details" class="method_details_list">
195
+ <h2>Instance Method Details</h2>
196
+
197
+
198
+ <div class="method_details first">
199
+ <p class="signature first" id="add_comparison_filter-instance_method">
200
+
201
+ - (<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>) <strong>add_comparison_filter</strong>(dataset, comparison_criteria)
202
+
203
+
204
+
205
+ </p><div class="docstring">
206
+ <div class="discussion">
207
+
208
+ <p>Joins the comparison filter to the existing persistor.</p>
209
+
210
+
211
+ </div>
212
+ </div>
213
+ <div class="tags">
214
+ <h3>Parameters:</h3>
215
+ <ul class="param">
216
+
217
+ <li>
218
+
219
+ <span class='name'>dataset</span>
220
+
221
+
222
+ <span class='type'>(<tt>Dataset</tt>)</span>
223
+
224
+
225
+
226
+ </li>
227
+
228
+ <li>
229
+
230
+ <span class='name'>criteria</span>
231
+
232
+
233
+ <span class='type'>(<tt>Hash&lt;String, <span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span>&gt;</tt>)</span>
234
+
235
+
236
+
237
+ &mdash;
238
+ <div class='inline'>
239
+ <p>for the comparison</p>
240
+ </div>
241
+
242
+ </li>
243
+
244
+ </ul>
245
+
246
+ <h3>Returns:</h3>
247
+ <ul class="return">
248
+
249
+ <li>
250
+
251
+
252
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>)</span>
253
+
254
+
255
+
256
+ </li>
257
+
258
+ </ul>
259
+
260
+ </div><table class="source_code">
261
+ <tr>
262
+ <td>
263
+ <pre class="lines">
264
+
265
+
266
+ 50
267
+ 51
268
+ 52
269
+ 53</pre>
270
+ </td>
271
+ <td>
272
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/filters.rb', line 50</span>
273
+
274
+ <span class='kw'>def</span> <span class='id add_comparison_filter'>add_comparison_filter</span><span class='lparen'>(</span><span class='id dataset'>dataset</span><span class='comma'>,</span> <span class='id comparison_criteria'>comparison_criteria</span><span class='rparen'>)</span>
275
+ <span class='id comparison_persistor'>comparison_persistor</span> <span class='op'>=</span> <span class='id comparison_filter'>comparison_filter</span><span class='lparen'>(</span><span class='id comparison_criteria'>comparison_criteria</span><span class='rparen'>)</span>
276
+ <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id dataset'>dataset</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='id comparison_persistor'>comparison_persistor</span><span class='period'>.</span><span class='id dataset'>dataset</span><span class='comma'>,</span> <span class='symbol'>:id</span> <span class='op'>=&gt;</span> <span class='symbol'>:key</span><span class='rparen'>)</span><span class='period'>.</span><span class='id qualify'>qualify</span><span class='rparen'>)</span>
277
+ <span class='kw'>end</span></pre>
278
+ </td>
279
+ </tr>
280
+ </table>
281
+ </div>
282
+
283
+ <div class="method_details ">
284
+ <p class="signature " id="comparison_filter-instance_method">
285
+
286
+ - (<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>) <strong>comparison_filter</strong>(criteria)
287
+
288
+
289
+
290
+ </p><div class="docstring">
291
+ <div class="discussion">
292
+
293
+ <p>Implement a comparison filter for a Sequel::Persistor. Key being the name
294
+ of the resource's field and the value is a Hash. The key of the hash is a
295
+ comparison operator and the value is the given value the filter do the
296
+ comparison against.</p>
297
+
298
+
299
+ </div>
300
+ </div>
301
+ <div class="tags">
302
+ <h3>Parameters:</h3>
303
+ <ul class="param">
304
+
305
+ <li>
306
+
307
+ <span class='name'>criteria</span>
308
+
309
+
310
+ <span class='type'>(<tt>Hash&lt;String, <span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span>&gt;</tt>)</span>
311
+
312
+
313
+
314
+ </li>
315
+
316
+ </ul>
317
+
318
+ <h3>Returns:</h3>
319
+ <ul class="return">
320
+
321
+ <li>
322
+
323
+
324
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>)</span>
325
+
326
+
327
+
328
+ </li>
329
+
330
+ </ul>
331
+
332
+ </div><table class="source_code">
333
+ <tr>
334
+ <td>
335
+ <pre class="lines">
336
+
337
+
338
+ 32
339
+ 33
340
+ 34
341
+ 35
342
+ 36
343
+ 37
344
+ 38
345
+ 39
346
+ 40
347
+ 41
348
+ 42
349
+ 43
350
+ 44</pre>
351
+ </td>
352
+ <td>
353
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/filters.rb', line 32</span>
354
+
355
+ <span class='kw'>def</span> <span class='id comparison_filter'>comparison_filter</span><span class='lparen'>(</span><span class='id criteria'>criteria</span><span class='rparen'>)</span>
356
+ <span class='id clause'>clause</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
357
+ <span class='id criteria'>criteria</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id field'>field</span><span class='comma'>,</span> <span class='id comparison_expression'>comparison_expression</span><span class='op'>|</span>
358
+ <span class='id comparison_expression'>comparison_expression</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id operator'>operator</span><span class='comma'>,</span> <span class='id value'>value</span><span class='op'>|</span>
359
+ <span class='id raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Not supported comparison operator has been given: '</span><span class='embexpr_beg'>#{</span><span class='id operator'>operator</span><span class='rbrace'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='const'>COMPARISON_OPERATORS</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='id operator'>operator</span><span class='rparen'>)</span>
360
+
361
+ <span class='id clause'>clause</span> <span class='op'>=</span> <span class='id clause'>clause</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>) &amp; (</span><span class='tstring_end'>'</span></span> <span class='kw'>unless</span> <span class='id clause'>clause</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
362
+ <span class='id clause'>clause</span> <span class='op'>=</span> <span class='id clause'>clause</span> <span class='op'>+</span> <span class='id field'>field</span> <span class='op'>+</span> <span class='id operator'>operator</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>'</span><span class='tstring_end'>&quot;</span></span> <span class='op'>+</span> <span class='id value'>value</span><span class='period'>.</span><span class='id to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>'</span><span class='tstring_end'>&quot;</span></span>
363
+ <span class='kw'>end</span>
364
+ <span class='kw'>end</span>
365
+
366
+ <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id dataset'>dataset</span><span class='period'>.</span><span class='id where'>where</span><span class='lparen'>(</span><span class='id clause'>clause</span><span class='rparen'>)</span><span class='period'>.</span><span class='id qualify'>qualify</span><span class='rparen'>)</span>
367
+ <span class='kw'>end</span></pre>
368
+ </td>
369
+ </tr>
370
+ </table>
371
+ </div>
372
+
373
+ <div class="method_details ">
374
+ <p class="signature " id="multi_criteria_filter-instance_method">
375
+
376
+ - (<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>) <strong>multi_criteria_filter</strong>(criteria)
377
+
378
+
379
+
380
+ </p><div class="docstring">
381
+ <div class="discussion">
382
+
383
+ <p>Implement a multicriteria filter for a Sequel::Persistor. Value can be
384
+ either a String, an Array or a Hash. Strings and Arrays are normal
385
+ filters, whereas Hashes correspond to a joined search. The criteria will
386
+ apply to the joined object corresponding to the key.</p>
387
+
388
+
389
+ </div>
390
+ </div>
391
+ <div class="tags">
392
+ <h3>Parameters:</h3>
393
+ <ul class="param">
394
+
395
+ <li>
396
+
397
+ <span class='name'>Hash&lt;String,</span>
398
+
399
+
400
+ <span class='type'>(<tt>Hash&lt;String, <span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span> &gt; criteria</tt>)</span>
401
+
402
+
403
+
404
+ &mdash;
405
+ <div class='inline'>
406
+ <p>Object &gt; criteria</p>
407
+ </div>
408
+
409
+ </li>
410
+
411
+ </ul>
412
+
413
+ <h3>Returns:</h3>
414
+ <ul class="return">
415
+
416
+ <li>
417
+
418
+
419
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Sequel::Persistor (module)">Persistor</a></span></tt>)</span>
420
+
421
+
422
+
423
+ </li>
424
+
425
+ </ul>
426
+
427
+ </div><table class="source_code">
428
+ <tr>
429
+ <td>
430
+ <pre class="lines">
431
+
432
+
433
+ 18
434
+ 19
435
+ 20
436
+ 21
437
+ 22
438
+ 23
439
+ 24</pre>
440
+ </td>
441
+ <td>
442
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/filters.rb', line 18</span>
443
+
444
+ <span class='kw'>def</span> <span class='id multi_criteria_filter'>multi_criteria_filter</span><span class='lparen'>(</span><span class='id criteria'>criteria</span><span class='rparen'>)</span>
445
+ <span class='comment'># We need to create the adequat dataset.
446
+ </span> <span class='id dataset'>dataset</span> <span class='op'>=</span> <span class='id __multi_criteria_filter'>__multi_criteria_filter</span><span class='lparen'>(</span><span class='id criteria'>criteria</span><span class='rparen'>)</span><span class='period'>.</span><span class='id dataset'>dataset</span>
447
+ <span class='comment'># As the dataset can include join, we need to select only the columns
448
+ </span> <span class='comment'># corresponding to the persistor
449
+ </span> <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id dataset'>dataset</span><span class='period'>.</span><span class='id qualify'>qualify</span><span class='lparen'>(</span><span class='id table_name'>table_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id distinct'>distinct</span><span class='lparen'>(</span><span class='rparen'>)</span><span class='rparen'>)</span>
450
+ <span class='kw'>end</span></pre>
451
+ </td>
452
+ </tr>
453
+ </table>
454
+ </div>
455
+
456
+ </div>
457
+
458
+ </div>
459
+
460
+
461
+ </body>
462
+ </html>