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,417 @@
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
+ Class: Lims::Core::Persistence::Sequel::Store
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> &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">Store</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>Class: Lims::Core::Persistence::Sequel::Store
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+ <dt class="r1">Inherits:</dt>
68
+ <dd class="r1">
69
+ <span class="inheritName"><span class='object_link'><a href="../Store.html" title="Lims::Core::Persistence::Store (class)">Lims::Core::Persistence::Store</a></span></span>
70
+
71
+ <ul class="fullTree">
72
+ <li><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></li>
73
+
74
+ <li class="next"><span class='object_link'><a href="../Store.html" title="Lims::Core::Persistence::Store (class)">Lims::Core::Persistence::Store</a></span></li>
75
+
76
+ <li class="next">Lims::Core::Persistence::Sequel::Store</li>
77
+
78
+ </ul>
79
+ <a href="#" class="inheritanceTree">show all</a>
80
+
81
+ </dd>
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+ <dt class="r2 last">Defined in:</dt>
92
+ <dd class="r2 last">lib/lims-core/persistence/sequel/store.rb</dd>
93
+
94
+ </dl>
95
+ <div class="clear"></div>
96
+
97
+ <h2>Overview</h2><div class="docstring">
98
+ <div class="discussion">
99
+
100
+ <p>An Sequel::Store, ie an wrapper around a database using the sequel gem</p>
101
+
102
+
103
+ </div>
104
+ </div>
105
+ <div class="tags">
106
+
107
+
108
+ </div>
109
+ <h2>Constant Summary</h2>
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ <h3 class="inherited">Constants inherited from <span class='object_link'><a href="../Store.html" title="Lims::Core::Persistence::Store (class)">Lims::Core::Persistence::Store</a></span></h3>
118
+ <p class="inherited"><span class='object_link'><a href="../Store.html#DIRTY_ATTRIBUTE_STRATEGY_DEEP_COPY-constant" title="Lims::Core::Persistence::Store::DIRTY_ATTRIBUTE_STRATEGY_DEEP_COPY (constant)">DIRTY_ATTRIBUTE_STRATEGY_DEEP_COPY</a></span>, <span class='object_link'><a href="../Store.html#DIRTY_ATTRIBUTE_STRATEGY_MD5-constant" title="Lims::Core::Persistence::Store::DIRTY_ATTRIBUTE_STRATEGY_MD5 (constant)">DIRTY_ATTRIBUTE_STRATEGY_MD5</a></span>, <span class='object_link'><a href="../Store.html#DIRTY_ATTRIBUTE_STRATEGY_QUICK_HASH-constant" title="Lims::Core::Persistence::Store::DIRTY_ATTRIBUTE_STRATEGY_QUICK_HASH (constant)">DIRTY_ATTRIBUTE_STRATEGY_QUICK_HASH</a></span>, <span class='object_link'><a href="../Store.html#DIRTY_ATTRIBUTE_STRATEGY_SHA1-constant" title="Lims::Core::Persistence::Store::DIRTY_ATTRIBUTE_STRATEGY_SHA1 (constant)">DIRTY_ATTRIBUTE_STRATEGY_SHA1</a></span></p>
119
+
120
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
121
+ <ul class="summary">
122
+
123
+ <li class="public ">
124
+ <span class="summary_signature">
125
+
126
+ <a href="#database-instance_method" title="#database (instance method)">- (Object) <strong>database</strong> </a>
127
+
128
+
129
+
130
+ </span>
131
+
132
+
133
+ <span class="note title readonly">readonly</span>
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+ <span class="summary_desc"><div class='inline'>
143
+ <p>Returns the value of attribute database.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ </ul>
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+ <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="../Store.html" title="Lims::Core::Persistence::Store (class)">Lims::Core::Persistence::Store</a></span></h3>
159
+ <p class="inherited"><span class='object_link'><a href="../Store.html#dirty_attribute_strategy-instance_method" title="Lims::Core::Persistence::Store#dirty_attribute_strategy (method)">dirty_attribute_strategy</a></span></p>
160
+
161
+
162
+
163
+ <h2>
164
+ Instance Method Summary
165
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
166
+ </h2>
167
+
168
+ <ul class="summary">
169
+
170
+ <li class="public ">
171
+ <span class="summary_signature">
172
+
173
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Store) <strong>initialize</strong>(database, *args) </a>
174
+
175
+
176
+
177
+ </span>
178
+
179
+ <span class="note title constructor">constructor</span>
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+ <span class="summary_desc"><div class='inline'>
189
+ <p>Create a store with a Sequel::Database We don't wrap for now the creation
190
+ of the database.</p>
191
+ </div></span>
192
+
193
+ </li>
194
+
195
+
196
+ <li class="public ">
197
+ <span class="summary_signature">
198
+
199
+ <a href="#transaction-instance_method" title="#transaction (instance method)">- (Object) <strong>transaction</strong> </a>
200
+
201
+
202
+
203
+ </span>
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+ <span class="summary_desc"><div class='inline'>
213
+ <p>Execute given block within a transaction.</p>
214
+ </div></span>
215
+
216
+ </li>
217
+
218
+
219
+ </ul>
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Store.html" title="Lims::Core::Persistence::Store (class)">Lims::Core::Persistence::Store</a></span></h3>
231
+ <p class="inherited"><span class='object_link'><a href="../Store.html#base_module-instance_method" title="Lims::Core::Persistence::Store#base_module (method)">#base_module</a></span>, <span class='object_link'><a href="../Store.html#base_module-class_method" title="Lims::Core::Persistence::Store.base_module (method)">base_module</a></span>, <span class='object_link'><a href="../Store.html#const_missing-class_method" title="Lims::Core::Persistence::Store.const_missing (method)">const_missing</a></span>, <span class='object_link'><a href="../Store.html#create_session-instance_method" title="Lims::Core::Persistence::Store#create_session (method)">#create_session</a></span>, <span class='object_link'><a href="../Store.html#with_session-instance_method" title="Lims::Core::Persistence::Store#with_session (method)">#with_session</a></span></p>
232
+ <div id="constructor_details" class="method_details_list">
233
+ <h2>Constructor Details</h2>
234
+
235
+ <div class="method_details first">
236
+ <p class="signature first" id="initialize-instance_method">
237
+
238
+ - (<tt><span class='object_link'><a href="" title="Lims::Core::Persistence::Sequel::Store (class)">Store</a></span></tt>) <strong>initialize</strong>(database, *args)
239
+
240
+
241
+
242
+ </p><div class="docstring">
243
+ <div class="discussion">
244
+
245
+ <p>Create a store with a Sequel::Database We don't wrap for now the creation
246
+ of the database</p>
247
+
248
+
249
+ </div>
250
+ </div>
251
+ <div class="tags">
252
+ <h3>Parameters:</h3>
253
+ <ul class="param">
254
+
255
+ <li>
256
+
257
+ <span class='name'>type</span>
258
+
259
+
260
+ <span class='type'>(<tt>Sequel::Database</tt>)</span>
261
+
262
+
263
+
264
+ &mdash;
265
+ <div class='inline'>
266
+ <p>underlying database</p>
267
+ </div>
268
+
269
+ </li>
270
+
271
+ </ul>
272
+
273
+ <h3>Raises:</h3>
274
+ <ul class="raise">
275
+
276
+ <li>
277
+
278
+
279
+ <span class='type'>(<tt>RuntimeError</tt>)</span>
280
+
281
+
282
+
283
+ </li>
284
+
285
+ </ul>
286
+
287
+ </div><table class="source_code">
288
+ <tr>
289
+ <td>
290
+ <pre class="lines">
291
+
292
+
293
+ 19
294
+ 20
295
+ 21
296
+ 22
297
+ 23
298
+ 24</pre>
299
+ </td>
300
+ <td>
301
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/store.rb', line 19</span>
302
+
303
+ <span class='kw'>def</span> <span class='id initialize'>initialize</span><span class='lparen'>(</span><span class='id database'>database</span><span class='comma'>,</span> <span class='op'>*</span><span class='id args'>args</span><span class='rparen'>)</span>
304
+ <span class='id raise'>raise</span> <span class='const'>RuntimeError</span> <span class='kw'>unless</span> <span class='id database'>database</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Sequel</span><span class='op'>::</span><span class='const'>Database</span><span class='rparen'>)</span>
305
+ <span class='ivar'>@database</span> <span class='op'>=</span> <span class='id database'>database</span>
306
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='op'>*</span><span class='id args'>args</span><span class='rparen'>)</span>
307
+ <span class='ivar'>@dirty_attribute_strategy</span> <span class='op'>=</span> <span class='const'>DIRTY_ATTRIBUTE_STRATEGY_SHA1</span>
308
+ <span class='kw'>end</span></pre>
309
+ </td>
310
+ </tr>
311
+ </table>
312
+ </div>
313
+
314
+ </div>
315
+
316
+ <div id="instance_attr_details" class="attr_details">
317
+ <h2>Instance Attribute Details</h2>
318
+
319
+
320
+ <span id=""></span>
321
+ <span id="database-instance_method"></span>
322
+ <div class="method_details first">
323
+ <p class="signature first" id="database-instance_method">
324
+
325
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>database</strong> <span class="extras">(readonly)</span>
326
+
327
+
328
+
329
+ </p><div class="docstring">
330
+ <div class="discussion">
331
+
332
+ <p>Returns the value of attribute database</p>
333
+
334
+
335
+ </div>
336
+ </div>
337
+ <div class="tags">
338
+
339
+
340
+ </div><table class="source_code">
341
+ <tr>
342
+ <td>
343
+ <pre class="lines">
344
+
345
+
346
+ 13
347
+ 14
348
+ 15</pre>
349
+ </td>
350
+ <td>
351
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/store.rb', line 13</span>
352
+
353
+ <span class='kw'>def</span> <span class='id database'>database</span>
354
+ <span class='ivar'>@database</span>
355
+ <span class='kw'>end</span></pre>
356
+ </td>
357
+ </tr>
358
+ </table>
359
+ </div>
360
+
361
+ </div>
362
+
363
+
364
+ <div id="instance_method_details" class="method_details_list">
365
+ <h2>Instance Method Details</h2>
366
+
367
+
368
+ <div class="method_details first">
369
+ <p class="signature first" id="transaction-instance_method">
370
+
371
+ - (<tt><span class='object_link'><a href="../../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>transaction</strong>
372
+
373
+
374
+
375
+ </p><div class="docstring">
376
+ <div class="discussion">
377
+
378
+ <p>Execute given block within a transaction</p>
379
+
380
+
381
+ </div>
382
+ </div>
383
+ <div class="tags">
384
+
385
+
386
+ </div><table class="source_code">
387
+ <tr>
388
+ <td>
389
+ <pre class="lines">
390
+
391
+
392
+ 27
393
+ 28
394
+ 29
395
+ 30
396
+ 31</pre>
397
+ </td>
398
+ <td>
399
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/sequel/store.rb', line 27</span>
400
+
401
+ <span class='kw'>def</span> <span class='id transaction'>transaction</span>
402
+ <span class='id database'>database</span><span class='period'>.</span><span class='id transaction'>transaction</span> <span class='kw'>do</span>
403
+ <span class='kw'>super</span>
404
+ <span class='kw'>end</span>
405
+ <span class='kw'>end</span></pre>
406
+ </td>
407
+ </tr>
408
+ </table>
409
+ </div>
410
+
411
+ </div>
412
+
413
+ </div>
414
+
415
+
416
+ </body>
417
+ </html>
@@ -0,0 +1,2751 @@
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
+ Class: Lims::Core::Persistence::Session
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">Session</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>Class: Lims::Core::Persistence::Session
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+ <dt class="r1">Inherits:</dt>
68
+ <dd class="r1">
69
+ <span class="inheritName"><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></span>
70
+
71
+ <ul class="fullTree">
72
+ <li><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></li>
73
+
74
+ <li class="next">Lims::Core::Persistence::Session</li>
75
+
76
+ </ul>
77
+ <a href="#" class="inheritanceTree">show all</a>
78
+
79
+ </dd>
80
+
81
+
82
+
83
+
84
+ <dt class="r2">Extended by:</dt>
85
+ <dd class="r2">Forwardable</dd>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+ <dt class="r1 last">Defined in:</dt>
94
+ <dd class="r1 last">lib/lims-core/persistence/session.rb</dd>
95
+
96
+ </dl>
97
+ <div class="clear"></div>
98
+
99
+ <h2>Overview</h2><div class="docstring">
100
+ <div class="discussion">
101
+
102
+ <p>A session is in charge of restoring and saving object throug the
103
+ persistence layer. A Session can not normally be created by the end user.
104
+ It has to be in a Store::with_session block, which acts has a transaction
105
+ and save/update everything at the end of it. It should also provides an
106
+ identity map. Session information (user, time) are also associated to the
107
+ modifications of those objects.</p>
108
+
109
+
110
+ </div>
111
+ </div>
112
+ <div class="tags">
113
+
114
+
115
+ </div><div id="subclasses">
116
+ <h2>Direct Known Subclasses</h2>
117
+ <p class="children"><span class='object_link'><a href="Logger/Session.html" title="Lims::Core::Persistence::Logger::Session (class)">Logger::Session</a></span>, <span class='object_link'><a href="Sequel/Session.html" title="Lims::Core::Persistence::Sequel::Session (class)">Lims::Core::Persistence::Sequel::Session</a></span></p>
118
+ </div>
119
+ <h2>Defined Under Namespace</h2>
120
+ <p class="children">
121
+
122
+
123
+
124
+
125
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Session/UnmanagedObjectError.html" title="Lims::Core::Persistence::Session::UnmanagedObjectError (class)">UnmanagedObjectError</a></span>
126
+
127
+
128
+ </p>
129
+
130
+
131
+
132
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
133
+ <ul class="summary">
134
+
135
+ <li class="public ">
136
+ <span class="summary_signature">
137
+
138
+ <a href="#dirty_attribute_strategy-instance_method" title="#dirty_attribute_strategy (instance method)">- (Object) <strong>dirty_attribute_strategy</strong> </a>
139
+
140
+
141
+
142
+ </span>
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+ <span class="summary_desc"><div class='inline'>
155
+ <p>The dirty-attribute strategy decides how object modification is detected to
156
+ avoid saved unmodified object.</p>
157
+ </div></span>
158
+
159
+ </li>
160
+
161
+
162
+ </ul>
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <h2>
170
+ Class Method Summary
171
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
172
+ </h2>
173
+
174
+ <ul class="summary">
175
+
176
+ <li class="private ">
177
+ <span class="summary_signature">
178
+
179
+ <a href="#find_or_create_persistor_for-class_method" title="find_or_create_persistor_for (class method)">+ (Object) <strong>find_or_create_persistor_for</strong>(model) </a>
180
+
181
+
182
+
183
+ </span>
184
+
185
+
186
+ <span class="note title private">private</span>
187
+
188
+
189
+
190
+
191
+
192
+ <span class="summary_desc"><div class='inline'></div></span>
193
+
194
+ </li>
195
+
196
+
197
+ <li class="private ">
198
+ <span class="summary_signature">
199
+
200
+ <a href="#model_for-class_method" title="model_for (class method)">+ (Symbol) <strong>model_for</strong>(object) </a>
201
+
202
+
203
+
204
+ </span>
205
+
206
+
207
+ <span class="note title private">private</span>
208
+
209
+
210
+
211
+
212
+
213
+ <span class="summary_desc"><div class='inline'>
214
+ <p>Find the model corresponding to an object Takes many type of input.</p>
215
+ </div></span>
216
+
217
+ </li>
218
+
219
+
220
+ <li class="public ">
221
+ <span class="summary_signature">
222
+
223
+ <a href="#model_map-class_method" title="model_map (class method)">+ (Object) <strong>model_map</strong> </a>
224
+
225
+
226
+
227
+ </span>
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+ <span class="summary_desc"><div class='inline'>
237
+ <p>The map name &lt;=&gt; model class is shared between all type of session.</p>
238
+ </div></span>
239
+
240
+ </li>
241
+
242
+
243
+ <li class="private ">
244
+ <span class="summary_signature">
245
+
246
+ <a href="#model_to_name-class_method" title="model_to_name (class method)">+ (Symbol) <strong>model_to_name</strong>(model) </a>
247
+
248
+
249
+
250
+ </span>
251
+
252
+
253
+ <span class="note title private">private</span>
254
+
255
+
256
+
257
+
258
+
259
+ <span class="summary_desc"><div class='inline'>
260
+ <p>Find the registered name of a given class @<a href="http://Class">param</a>
261
+ model.</p>
262
+ </div></span>
263
+
264
+ </li>
265
+
266
+
267
+ <li class="private ">
268
+ <span class="summary_signature">
269
+
270
+ <a href="#name_to_model-class_method" title="name_to_model (class method)">+ (Class) <strong>name_to_model</strong>(name) </a>
271
+
272
+
273
+
274
+ </span>
275
+
276
+
277
+ <span class="note title private">private</span>
278
+
279
+
280
+
281
+
282
+
283
+ <span class="summary_desc"><div class='inline'>
284
+ <p>Find the model class for a registered name registered name are used when
285
+ doing session.model.</p>
286
+ </div></span>
287
+
288
+ </li>
289
+
290
+
291
+ <li class="public ">
292
+ <span class="summary_signature">
293
+
294
+ <a href="#pack_uuid-class_method" title="pack_uuid (class method)">+ (Object) <strong>pack_uuid</strong>(uuid) </a>
295
+
296
+
297
+
298
+ </span>
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+ <span class="summary_desc"><div class='inline'>
308
+ <p>Pack if needed an uuid to its store representation This method is need to
309
+ lookup an uuid by name.</p>
310
+ </div></span>
311
+
312
+ </li>
313
+
314
+
315
+ <li class="private ">
316
+ <span class="summary_signature">
317
+
318
+ <a href="#persistor_class_for-class_method" title="persistor_class_for (class method)">+ (Class) <strong>persistor_class_for</strong>(object) </a>
319
+
320
+
321
+
322
+ </span>
323
+
324
+
325
+ <span class="note title private">private</span>
326
+
327
+
328
+
329
+
330
+
331
+ <span class="summary_desc"><div class='inline'></div></span>
332
+
333
+ </li>
334
+
335
+
336
+ <li class="private ">
337
+ <span class="summary_signature">
338
+
339
+ <a href="#persistor_class_map-class_method" title="persistor_class_map (class method)">+ (Object) <strong>persistor_class_map</strong> </a>
340
+
341
+
342
+
343
+ </span>
344
+
345
+
346
+ <span class="note title private">private</span>
347
+
348
+
349
+
350
+
351
+
352
+ <span class="summary_desc"><div class='inline'></div></span>
353
+
354
+ </li>
355
+
356
+
357
+ <li class="private ">
358
+ <span class="summary_signature">
359
+
360
+ <a href="#persistor_name_for-class_method" title="persistor_name_for (class method)">+ (Object) <strong>persistor_name_for</strong>(object) </a>
361
+
362
+
363
+
364
+ </span>
365
+
366
+
367
+ <span class="note title private">private</span>
368
+
369
+
370
+
371
+
372
+
373
+ <span class="summary_desc"><div class='inline'></div></span>
374
+
375
+ </li>
376
+
377
+
378
+ <li class="private ">
379
+ <span class="summary_signature">
380
+
381
+ <a href="#register_model-class_method" title="register_model (class method)">+ (Object) <strong>register_model</strong>(name, model) </a>
382
+
383
+
384
+
385
+ </span>
386
+
387
+
388
+ <span class="note title private">private</span>
389
+
390
+
391
+
392
+
393
+
394
+ <span class="summary_desc"><div class='inline'>
395
+ <p>Register a model for a given name.</p>
396
+ </div></span>
397
+
398
+ </li>
399
+
400
+
401
+ <li class="public ">
402
+ <span class="summary_signature">
403
+
404
+ <a href="#unpack_uuid-class_method" title="unpack_uuid (class method)">+ (String) <strong>unpack_uuid</strong>(puuid) </a>
405
+
406
+
407
+
408
+ </span>
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ <span class="summary_desc"><div class='inline'>
418
+ <p>Unpac if needed an uuid from its store representation.</p>
419
+ </div></span>
420
+
421
+ </li>
422
+
423
+
424
+ </ul>
425
+
426
+ <h2>
427
+ Instance Method Summary
428
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
429
+ </h2>
430
+
431
+ <ul class="summary">
432
+
433
+ <li class="public ">
434
+ <span class="summary_signature">
435
+
436
+ <a href="#%3C%3C-instance_method" title="#&lt;&lt; (instance method)">- (Object) <strong>&lt;&lt;</strong>(object) </a>
437
+
438
+
439
+
440
+ </span>
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+ <span class="summary_desc"><div class='inline'>
450
+ <p>Tell the session to be responsible of an object.</p>
451
+ </div></span>
452
+
453
+ </li>
454
+
455
+
456
+ <li class="public ">
457
+ <span class="summary_signature">
458
+
459
+ <a href="#delete-instance_method" title="#delete (instance method)">- (Object) <strong>delete</strong>(object) </a>
460
+
461
+
462
+
463
+ </span>
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+ <span class="summary_desc"><div class='inline'>
473
+ <p>Mark an object as to be deleted.</p>
474
+ </div></span>
475
+
476
+ </li>
477
+
478
+
479
+ <li class="public ">
480
+ <span class="summary_signature">
481
+
482
+ <a href="#dirty_key_for-instance_method" title="#dirty_key_for (instance method)">- (Object) <strong>dirty_key_for</strong>(object) </a>
483
+
484
+
485
+
486
+ </span>
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+ <span class="summary_desc"><div class='inline'></div></span>
496
+
497
+ </li>
498
+
499
+
500
+ <li class="private ">
501
+ <span class="summary_signature">
502
+
503
+ <a href="#filter-instance_method" title="#filter (instance method)">- (Persistor) <strong>filter</strong>(persistor) </a>
504
+
505
+
506
+
507
+ </span>
508
+
509
+
510
+ <span class="note title private">private</span>
511
+
512
+
513
+
514
+
515
+
516
+ <span class="summary_desc"><div class='inline'>
517
+ <p>Create a new persistor sharing the same internal parameters but with the
518
+ "context" (datasest) of the new one.</p>
519
+ </div></span>
520
+
521
+ </li>
522
+
523
+
524
+ <li class="public ">
525
+ <span class="summary_signature">
526
+
527
+ <a href="#id_for-instance_method" title="#id_for (instance method)">- (Id<sup>?</sup>) <strong>id_for</strong>(object) </a>
528
+
529
+
530
+
531
+ </span>
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+ <span class="summary_desc"><div class='inline'>
541
+ <p>Returns the id of an object if exists.</p>
542
+ </div></span>
543
+
544
+ </li>
545
+
546
+
547
+ <li class="public ">
548
+ <span class="summary_signature">
549
+
550
+ <a href="#id_for%21-instance_method" title="#id_for! (instance method)">- (Id) <strong>id_for!</strong>(object) </a>
551
+
552
+
553
+
554
+ </span>
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+ <span class="summary_desc"><div class='inline'>
564
+ <p>Returns the id of an object and save it if necessary.</p>
565
+ </div></span>
566
+
567
+ </li>
568
+
569
+
570
+ <li class="public ">
571
+ <span class="summary_signature">
572
+
573
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Session) <strong>initialize</strong>(store, *params) </a>
574
+
575
+
576
+
577
+ </span>
578
+
579
+ <span class="note title constructor">constructor</span>
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+ <span class="summary_desc"><div class='inline'>
589
+ <p>param [Store] store the underlying store.</p>
590
+ </div></span>
591
+
592
+ </li>
593
+
594
+
595
+ <li class="public ">
596
+ <span class="summary_signature">
597
+
598
+ <a href="#manage_state-instance_method" title="#manage_state (instance method)">- (Object) <strong>manage_state</strong>(state) </a>
599
+
600
+
601
+
602
+ </span>
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+ <span class="summary_desc"><div class='inline'></div></span>
612
+
613
+ </li>
614
+
615
+
616
+ <li class="public ">
617
+ <span class="summary_signature">
618
+
619
+ <a href="#managed%3F-instance_method" title="#managed? (instance method)">- (Boolean) <strong>managed?</strong>(object) </a>
620
+
621
+
622
+
623
+ </span>
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+ <span class="summary_desc"><div class='inline'>
633
+ <p>Check if the session 'mananage' already this object.</p>
634
+ </div></span>
635
+
636
+ </li>
637
+
638
+
639
+ <li class="public ">
640
+ <span class="summary_signature">
641
+
642
+ <a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(name, *args, &amp;block) </a>
643
+
644
+
645
+
646
+ </span>
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+ <span class="summary_desc"><div class='inline'></div></span>
656
+
657
+ </li>
658
+
659
+
660
+ <li class="public ">
661
+ <span class="summary_signature">
662
+
663
+ <a href="#pack_uuid-instance_method" title="#pack_uuid (instance method)">- (Object) <strong>pack_uuid</strong>(uuid) </a>
664
+
665
+
666
+
667
+ </span>
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+ <span class="summary_desc"><div class='inline'></div></span>
677
+
678
+ </li>
679
+
680
+
681
+ <li class="public ">
682
+ <span class="summary_signature">
683
+
684
+ <a href="#persistor_for-instance_method" title="#persistor_for (instance method)">- (Persistor<sup>?</sup>) <strong>persistor_for</strong>(object) </a>
685
+
686
+
687
+
688
+ </span>
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+ <span class="summary_desc"><div class='inline'>
698
+ <p>Get the persistor corresponding to the object class.</p>
699
+ </div></span>
700
+
701
+ </li>
702
+
703
+
704
+ <li class="private ">
705
+ <span class="summary_signature">
706
+
707
+ <a href="#persistor_name_for-instance_method" title="#persistor_name_for (instance method)">- (Object) <strong>persistor_name_for</strong>(object) </a>
708
+
709
+
710
+
711
+ </span>
712
+
713
+
714
+ <span class="note title private">private</span>
715
+
716
+
717
+
718
+
719
+
720
+ <span class="summary_desc"><div class='inline'></div></span>
721
+
722
+ </li>
723
+
724
+
725
+ <li class="private ">
726
+ <span class="summary_signature">
727
+
728
+ <a href="#save_all-instance_method" title="#save_all (instance method)">- (Object) <strong>save_all</strong> </a>
729
+
730
+
731
+
732
+ </span>
733
+
734
+
735
+ <span class="note title private">private</span>
736
+
737
+
738
+
739
+
740
+
741
+ <span class="summary_desc"><div class='inline'>
742
+ <p>save all objects which needs to be.</p>
743
+ </div></span>
744
+
745
+ </li>
746
+
747
+
748
+ <li class="public ">
749
+ <span class="summary_signature">
750
+
751
+ <a href="#serialize-instance_method" title="#serialize (instance method)">- (Object) <strong>serialize</strong>(object) </a>
752
+
753
+
754
+
755
+ </span>
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+ <span class="summary_desc"><div class='inline'></div></span>
765
+
766
+ </li>
767
+
768
+
769
+ <li class="public ">
770
+ <span class="summary_signature">
771
+
772
+ <a href="#state_for-instance_method" title="#state_for (instance method)">- (Object) <strong>state_for</strong>(object) </a>
773
+
774
+
775
+
776
+ </span>
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+ <span class="summary_desc"><div class='inline'></div></span>
786
+
787
+ </li>
788
+
789
+
790
+ <li class="public ">
791
+ <span class="summary_signature">
792
+
793
+ <a href="#states_for-instance_method" title="#states_for (instance method)">- (Object) <strong>states_for</strong>(objects) </a>
794
+
795
+
796
+
797
+ </span>
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+ <span class="summary_desc"><div class='inline'></div></span>
807
+
808
+ </li>
809
+
810
+
811
+ <li class="public ">
812
+ <span class="summary_signature">
813
+
814
+ <a href="#unpack_uuid-instance_method" title="#unpack_uuid (instance method)">- (Object) <strong>unpack_uuid</strong>(uuid) </a>
815
+
816
+
817
+
818
+ </span>
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+ <span class="summary_desc"><div class='inline'></div></span>
828
+
829
+ </li>
830
+
831
+
832
+ <li class="public ">
833
+ <span class="summary_signature">
834
+
835
+ <a href="#unserialize-instance_method" title="#unserialize (instance method)">- (Object) <strong>unserialize</strong>(object) </a>
836
+
837
+
838
+
839
+ </span>
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+ <span class="summary_desc"><div class='inline'></div></span>
849
+
850
+ </li>
851
+
852
+
853
+ <li class="public ">
854
+ <span class="summary_signature">
855
+
856
+ <a href="#with_session-instance_method" title="#with_session (instance method)">- (Object) <strong>with_session</strong>(*params) {|session| ... }</a>
857
+
858
+
859
+
860
+ </span>
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+ <span class="summary_desc"><div class='inline'>
870
+ <p>Execute a block and save every 'marked' object in a transaction at the End.</p>
871
+ </div></span>
872
+
873
+ </li>
874
+
875
+
876
+ </ul>
877
+
878
+
879
+
880
+ <div id="constructor_details" class="method_details_list">
881
+ <h2>Constructor Details</h2>
882
+
883
+ <div class="method_details first">
884
+ <p class="signature first" id="initialize-instance_method">
885
+
886
+ - (<tt><span class='object_link'><a href="" title="Lims::Core::Persistence::Session (class)">Session</a></span></tt>) <strong>initialize</strong>(store, *params)
887
+
888
+
889
+
890
+ </p><div class="docstring">
891
+ <div class="discussion">
892
+
893
+ <p>param [Store] store the underlying store.</p>
894
+
895
+
896
+ </div>
897
+ </div>
898
+ <div class="tags">
899
+
900
+
901
+ </div><table class="source_code">
902
+ <tr>
903
+ <td>
904
+ <pre class="lines">
905
+
906
+
907
+ 42
908
+ 43
909
+ 44
910
+ 45
911
+ 46
912
+ 47
913
+ 48
914
+ 49</pre>
915
+ </td>
916
+ <td>
917
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 42</span>
918
+
919
+ <span class='kw'>def</span> <span class='id initialize'>initialize</span><span class='lparen'>(</span><span class='id store'>store</span><span class='comma'>,</span> <span class='op'>*</span><span class='id params'>params</span><span class='rparen'>)</span>
920
+ <span class='ivar'>@store</span> <span class='op'>=</span> <span class='id store'>store</span>
921
+ <span class='ivar'>@object_states</span> <span class='op'>=</span> <span class='const'>StateList</span><span class='period'>.</span><span class='id new'>new</span>
922
+ <span class='ivar'>@in_session</span> <span class='op'>=</span> <span class='kw'>false</span>
923
+ <span class='ivar'>@saved</span> <span class='op'>=</span> <span class='const'>Set</span><span class='period'>.</span><span class='id new'>new</span>
924
+ <span class='ivar'>@persistor_map</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
925
+ <span class='ivar'>@dirty_attribute_strategy</span> <span class='op'>=</span> <span class='ivar'>@store</span><span class='period'>.</span><span class='id dirty_attribute_strategy'>dirty_attribute_strategy</span>
926
+ <span class='kw'>end</span></pre>
927
+ </td>
928
+ </tr>
929
+ </table>
930
+ </div>
931
+
932
+ </div>
933
+ <div id="method_missing_details" class="method_details_list">
934
+ <h2>Dynamic Method Handling</h2>
935
+ <p class="notice this">
936
+ This class handles dynamic methods through the <tt>method_missing</tt> method
937
+
938
+ </p>
939
+
940
+ <div class="method_details first">
941
+ <p class="signature first" id="method_missing-instance_method">
942
+
943
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>method_missing</strong>(name, *args, &amp;block)
944
+
945
+
946
+
947
+ </p><table class="source_code">
948
+ <tr>
949
+ <td>
950
+ <pre class="lines">
951
+
952
+
953
+ 89
954
+ 90
955
+ 91
956
+ 92
957
+ 93
958
+ 94
959
+ 95
960
+ 96
961
+ 97</pre>
962
+ </td>
963
+ <td>
964
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 89</span>
965
+
966
+ <span class='kw'>def</span> <span class='id method_missing'>method_missing</span><span class='lparen'>(</span><span class='id name'>name</span><span class='comma'>,</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>
967
+ <span class='kw'>begin</span>
968
+ <span class='id persistor_for'>persistor_for</span><span class='lparen'>(</span><span class='id name'>name</span><span class='rparen'>)</span>
969
+ <span class='kw'>rescue</span> <span class='const'>NameError</span>
970
+ <span class='comment'># No persistor found for the given name
971
+ </span> <span class='comment'># Call the normal method_missing
972
+ </span> <span class='kw'>super</span><span class='lparen'>(</span><span class='id name'>name</span><span class='comma'>,</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>
973
+ <span class='kw'>end</span>
974
+ <span class='kw'>end</span></pre>
975
+ </td>
976
+ </tr>
977
+ </table>
978
+ </div>
979
+
980
+ </div>
981
+
982
+ <div id="instance_attr_details" class="attr_details">
983
+ <h2>Instance Attribute Details</h2>
984
+
985
+
986
+ <span id="dirty_attribute_strategy=-instance_method"></span>
987
+ <span id="dirty_attribute_strategy-instance_method"></span>
988
+ <div class="method_details first">
989
+ <p class="signature first" id="dirty_attribute_strategy-instance_method">
990
+
991
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>dirty_attribute_strategy</strong>
992
+
993
+
994
+
995
+ </p><div class="docstring">
996
+ <div class="discussion">
997
+
998
+ <p>The dirty-attribute strategy decides how object modification is detected to
999
+ avoid saved unmodified object. The default value comes from the session.</p>
1000
+
1001
+
1002
+ </div>
1003
+ </div>
1004
+ <div class="tags">
1005
+
1006
+
1007
+ </div><table class="source_code">
1008
+ <tr>
1009
+ <td>
1010
+ <pre class="lines">
1011
+
1012
+
1013
+ 27
1014
+ 28
1015
+ 29</pre>
1016
+ </td>
1017
+ <td>
1018
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 27</span>
1019
+
1020
+ <span class='kw'>def</span> <span class='id dirty_attribute_strategy'>dirty_attribute_strategy</span>
1021
+ <span class='ivar'>@dirty_attribute_strategy</span>
1022
+ <span class='kw'>end</span></pre>
1023
+ </td>
1024
+ </tr>
1025
+ </table>
1026
+ </div>
1027
+
1028
+ </div>
1029
+
1030
+
1031
+ <div id="class_method_details" class="method_details_list">
1032
+ <h2>Class Method Details</h2>
1033
+
1034
+
1035
+ <div class="method_details first">
1036
+ <p class="signature first" id="find_or_create_persistor_for-class_method">
1037
+
1038
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>find_or_create_persistor_for</strong>(model) <span class="extras">(private)</span>
1039
+
1040
+
1041
+
1042
+ </p><table class="source_code">
1043
+ <tr>
1044
+ <td>
1045
+ <pre class="lines">
1046
+
1047
+
1048
+ 309
1049
+ 310
1050
+ 311
1051
+ 312
1052
+ 313
1053
+ 314
1054
+ 315
1055
+ 316
1056
+ 317
1057
+ 318
1058
+ 319
1059
+ 320
1060
+ 321
1061
+ 322
1062
+ 323
1063
+ 324
1064
+ 325
1065
+ 326
1066
+ 327
1067
+ 328
1068
+ 329
1069
+ 330
1070
+ 331
1071
+ 332
1072
+ 333
1073
+ 334
1074
+ 335
1075
+ 336
1076
+ 337
1077
+ 338
1078
+ 339
1079
+ 340
1080
+ 341
1081
+ 342
1082
+ 343
1083
+ 344
1084
+ 345</pre>
1085
+ </td>
1086
+ <td>
1087
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 309</span>
1088
+
1089
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id find_or_create_persistor_for'>find_or_create_persistor_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1090
+ <span class='comment'># find the persistor within the class
1091
+ </span> <span class='comment'># other corresponding to the current session type
1092
+ </span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id model'>model</span>
1093
+ <span class='id session_persistor_class'>session_persistor_class</span> <span class='op'>=</span> <span class='id parent_scope'>parent_scope</span><span class='period'>.</span><span class='id const_get'>const_get</span><span class='lparen'>(</span><span class='symbol'>:Persistor</span><span class='rparen'>)</span>
1094
+ <span class='id model'>model</span><span class='period'>.</span><span class='id constants'>constants</span><span class='lparen'>(</span><span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id name'>name</span><span class='op'>|</span>
1095
+ <span class='id klass'>klass</span> <span class='op'>=</span> <span class='id model'>model</span><span class='period'>.</span><span class='id const_get'>const_get</span><span class='lparen'>(</span><span class='id name'>name</span><span class='rparen'>)</span>
1096
+ <span class='kw'>next</span> <span class='kw'>unless</span> <span class='id klass'>klass</span><span class='period'>.</span><span class='id is_a?'>is_a?</span> <span class='const'>Module</span>
1097
+ <span class='kw'>if</span> <span class='id klass'>klass</span><span class='period'>.</span><span class='id ancestors'>ancestors</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='id session_persistor_class'>session_persistor_class</span><span class='rparen'>)</span>
1098
+ <span class='comment'># found
1099
+ </span> <span class='kw'>return</span> <span class='id klass'>klass</span>
1100
+ <span class='kw'>end</span>
1101
+ <span class='kw'>end</span>
1102
+ <span class='comment'># not found, we need to create it
1103
+ </span> <span class='comment'># First we look for the base persistor to inherit from
1104
+ </span> <span class='id debugger'>debugger</span> <span class='kw'>unless</span> <span class='id superclass'>superclass</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:persistor_class_for</span>
1105
+ <span class='id raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Can't find base persistor for </span><span class='embexpr_beg'>#{</span><span class='id model'>model</span><span class='period'>.</span><span class='id inspect'>inspect</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id superclass'>superclass</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:persistor_class_for</span>
1106
+
1107
+ <span class='id parent_persistor_class'>parent_persistor_class</span> <span class='op'>=</span> <span class='id superclass'>superclass</span><span class='period'>.</span><span class='id persistor_class_for'>persistor_class_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1108
+
1109
+ <span class='comment'># if the current persistor (ex Sequel::Persistor) is the same as the base one
1110
+ </span> <span class='comment'># there is nothing else to do
1111
+ </span> <span class='kw'>return</span> <span class='id parent_persistor_class'>parent_persistor_class</span> <span class='kw'>unless</span> <span class='id parent_scope'>parent_scope</span><span class='op'>::</span><span class='id const_defined?'>const_defined?</span><span class='lparen'>(</span><span class='symbol'>:Persistor</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1112
+
1113
+ <span class='id raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>no Persistor defined for </span><span class='embexpr_beg'>#{</span><span class='id model'>model</span><span class='period'>.</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id parent_persistor_class'>parent_persistor_class</span>
1114
+ <span class='id module_name'>module_name</span> <span class='op'>=</span> <span class='id parent_scope'>parent_scope</span><span class='period'>.</span><span class='id name'>name</span><span class='period'>.</span><span class='id sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.*Persistence::</span><span class='regexp_end'>/</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
1115
+ <span class='id model_name'>model_name</span> <span class='op'>=</span> <span class='id model'>model</span><span class='period'>.</span><span class='id name'>name</span><span class='period'>.</span><span class='id split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>::</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id pop'>pop</span>
1116
+ <span class='comment'># the we create a new Persistor class including the Persistor mixin
1117
+ </span> <span class='comment'># corresponding to the session
1118
+ </span> <span class='id class_declaration'>class_declaration</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;-EOV</span>
1119
+ <span class='tstring_content'> class </span><span class='embexpr_beg'>#{</span><span class='id model_name'>model_name</span><span class='rbrace'>}</span><span class='embexpr_beg'>#{</span><span class='id module_name'>module_name</span><span class='rbrace'>}</span><span class='tstring_content'>Persistor &lt; </span><span class='embexpr_beg'>#{</span><span class='id parent_persistor_class'>parent_persistor_class</span><span class='period'>.</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_content'>
1120
+ </span><span class='embexpr_beg'> include #{</span><span class='id parent_scope'>parent_scope</span><span class='op'>::</span><span class='const'>Persistor</span><span class='rbrace'>}</span><span class='tstring_content'>
1121
+ end
1122
+ </span><span class='heredoc_end'> EOV
1123
+ </span> <span class='id model'>model</span><span class='period'>.</span><span class='id class_eval'>class_eval</span> <span class='id class_declaration'>class_declaration</span>
1124
+
1125
+ <span class='kw'>end</span></pre>
1126
+ </td>
1127
+ </tr>
1128
+ </table>
1129
+ </div>
1130
+
1131
+ <div class="method_details ">
1132
+ <p class="signature " id="model_for-class_method">
1133
+
1134
+ + (<tt>Symbol</tt>) <strong>model_for</strong>(object) <span class="extras">(private)</span>
1135
+
1136
+
1137
+
1138
+ </p><div class="docstring">
1139
+ <div class="discussion">
1140
+
1141
+ <p>Find the model corresponding to an object Takes many type of input</p>
1142
+
1143
+
1144
+ </div>
1145
+ </div>
1146
+ <div class="tags">
1147
+ <h3>Parameters:</h3>
1148
+ <ul class="param">
1149
+
1150
+ <li>
1151
+
1152
+ <span class='name'>object</span>
1153
+
1154
+
1155
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>, <tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>)</span>
1156
+
1157
+
1158
+
1159
+ </li>
1160
+
1161
+ </ul>
1162
+
1163
+ <h3>Returns:</h3>
1164
+ <ul class="return">
1165
+
1166
+ <li>
1167
+
1168
+
1169
+ <span class='type'>(<tt>Symbol</tt>)</span>
1170
+
1171
+
1172
+
1173
+ </li>
1174
+
1175
+ </ul>
1176
+
1177
+ </div><table class="source_code">
1178
+ <tr>
1179
+ <td>
1180
+ <pre class="lines">
1181
+
1182
+
1183
+ 249
1184
+ 250
1185
+ 251
1186
+ 252
1187
+ 253
1188
+ 254
1189
+ 255
1190
+ 256
1191
+ 257
1192
+ 258
1193
+ 259
1194
+ 260
1195
+ 261
1196
+ 262
1197
+ 263
1198
+ 264
1199
+ 265
1200
+ 266
1201
+ 267
1202
+ 268
1203
+ 269
1204
+ 270
1205
+ 271
1206
+ 272
1207
+ 273
1208
+ 274
1209
+ 275
1210
+ 276
1211
+ 277
1212
+ 278
1213
+ 279
1214
+ 280
1215
+ 281</pre>
1216
+ </td>
1217
+ <td>
1218
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 249</span>
1219
+
1220
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1221
+ <span class='kw'>case</span> <span class='id object'>object</span>
1222
+ <span class='kw'>when</span> <span class='kw'>nil</span> <span class='kw'>then</span> <span class='kw'>nil</span>
1223
+ <span class='kw'>when</span> <span class='const'>String</span> <span class='kw'>then</span> <span class='id name_to_model'>name_to_model</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1224
+ <span class='kw'>when</span> <span class='const'>Symbol</span> <span class='kw'>then</span> <span class='id name_to_model'>name_to_model</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1225
+ <span class='kw'>when</span> <span class='const'>Class</span> <span class='kw'>then</span>
1226
+ <span class='comment'># check if the class has been registered
1227
+ </span> <span class='comment'># IMPORTANT needs to be done before 'when module'
1228
+ </span> <span class='comment'># because object can class and module at the same time.
1229
+ </span> <span class='kw'>return</span> <span class='id object'>object</span> <span class='kw'>if</span> <span class='id model_to_name'>model_to_name</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1230
+
1231
+ <span class='comment'># if it's already persistor find the associate model
1232
+ </span> <span class='id persistor_class_map'>persistor_class_map</span><span class='period'>.</span><span class='id id_for'>id_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id model'>model</span><span class='op'>|</span>
1233
+ <span class='kw'>return</span> <span class='id model'>model</span>
1234
+ <span class='kw'>end</span>
1235
+
1236
+
1237
+
1238
+ <span class='comment'># check the super class
1239
+ </span> <span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='period'>.</span><span class='id superclass'>superclass</span><span class='rparen'>)</span><span class='period'>.</span><span class='id andtap'>andtap</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id model'>model</span><span class='op'>|</span>
1240
+ <span class='kw'>return</span> <span class='id model'>model</span>
1241
+ <span class='rbrace'>}</span>
1242
+
1243
+ <span class='comment'># Check the owner
1244
+ </span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id object'>object</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:parent_scope</span>
1245
+ <span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='period'>.</span><span class='id parent_scope'>parent_scope</span><span class='rparen'>)</span><span class='period'>.</span><span class='id andtap'>andtap</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id model'>model</span><span class='op'>|</span>
1246
+ <span class='kw'>return</span> <span class='id model'>model</span>
1247
+ <span class='rbrace'>}</span>
1248
+ <span class='kw'>when</span> <span class='const'>Module</span> <span class='kw'>then</span> <span class='id object'>object</span>
1249
+ <span class='kw'>else</span>
1250
+ <span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='period'>.</span><span class='id class'>class</span><span class='rparen'>)</span>
1251
+ <span class='kw'>end</span>
1252
+ <span class='kw'>end</span></pre>
1253
+ </td>
1254
+ </tr>
1255
+ </table>
1256
+ </div>
1257
+
1258
+ <div class="method_details ">
1259
+ <p class="signature " id="model_map-class_method">
1260
+
1261
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>model_map</strong>
1262
+
1263
+
1264
+
1265
+ </p><div class="docstring">
1266
+ <div class="discussion">
1267
+
1268
+ <p>The map name &lt;=&gt; model class is shared between all type of session</p>
1269
+
1270
+
1271
+ </div>
1272
+ </div>
1273
+ <div class="tags">
1274
+
1275
+
1276
+ </div><table class="source_code">
1277
+ <tr>
1278
+ <td>
1279
+ <pre class="lines">
1280
+
1281
+
1282
+ 33
1283
+ 34
1284
+ 35</pre>
1285
+ </td>
1286
+ <td>
1287
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 33</span>
1288
+
1289
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id model_map'>model_map</span><span class='lparen'>(</span><span class='rparen'>)</span>
1290
+ <span class='cvar'>@@model_map</span> <span class='op'>||=</span> <span class='const'>IdentityMap</span><span class='op'>::</span><span class='const'>Class</span><span class='period'>.</span><span class='id new'>new</span>
1291
+ <span class='kw'>end</span></pre>
1292
+ </td>
1293
+ </tr>
1294
+ </table>
1295
+ </div>
1296
+
1297
+ <div class="method_details ">
1298
+ <p class="signature " id="model_to_name-class_method">
1299
+
1300
+ + (<tt>Symbol</tt>) <strong>model_to_name</strong>(model) <span class="extras">(private)</span>
1301
+
1302
+
1303
+
1304
+ </p><div class="docstring">
1305
+ <div class="discussion">
1306
+
1307
+ <p>Find the registered name of a given class @<a href="http://Class">param</a>
1308
+ model</p>
1309
+
1310
+
1311
+ </div>
1312
+ </div>
1313
+ <div class="tags">
1314
+
1315
+ <h3>Returns:</h3>
1316
+ <ul class="return">
1317
+
1318
+ <li>
1319
+
1320
+
1321
+ <span class='type'>(<tt>Symbol</tt>)</span>
1322
+
1323
+
1324
+
1325
+ </li>
1326
+
1327
+ </ul>
1328
+
1329
+ </div><table class="source_code">
1330
+ <tr>
1331
+ <td>
1332
+ <pre class="lines">
1333
+
1334
+
1335
+ 228
1336
+ 229
1337
+ 230</pre>
1338
+ </td>
1339
+ <td>
1340
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 228</span>
1341
+
1342
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id model_to_name'>model_to_name</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1343
+ <span class='id model_map'>model_map</span><span class='period'>.</span><span class='id id_for'>id_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1344
+ <span class='kw'>end</span></pre>
1345
+ </td>
1346
+ </tr>
1347
+ </table>
1348
+ </div>
1349
+
1350
+ <div class="method_details ">
1351
+ <p class="signature " id="name_to_model-class_method">
1352
+
1353
+ + (<tt>Class</tt>) <strong>name_to_model</strong>(name) <span class="extras">(private)</span>
1354
+
1355
+
1356
+
1357
+ </p><div class="docstring">
1358
+ <div class="discussion">
1359
+
1360
+ <p>Find the model class for a registered name registered name are used when
1361
+ doing session.model</p>
1362
+
1363
+
1364
+ </div>
1365
+ </div>
1366
+ <div class="tags">
1367
+ <h3>Parameters:</h3>
1368
+ <ul class="param">
1369
+
1370
+ <li>
1371
+
1372
+ <span class='name'>name</span>
1373
+
1374
+
1375
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>)</span>
1376
+
1377
+
1378
+
1379
+ </li>
1380
+
1381
+ </ul>
1382
+
1383
+ <h3>Returns:</h3>
1384
+ <ul class="return">
1385
+
1386
+ <li>
1387
+
1388
+
1389
+ <span class='type'>(<tt>Class</tt>)</span>
1390
+
1391
+
1392
+
1393
+ </li>
1394
+
1395
+ </ul>
1396
+
1397
+ </div><table class="source_code">
1398
+ <tr>
1399
+ <td>
1400
+ <pre class="lines">
1401
+
1402
+
1403
+ 221
1404
+ 222
1405
+ 223</pre>
1406
+ </td>
1407
+ <td>
1408
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 221</span>
1409
+
1410
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id name_to_model'>name_to_model</span><span class='lparen'>(</span><span class='id name'>name</span><span class='rparen'>)</span>
1411
+ <span class='id model_map'>model_map</span><span class='period'>.</span><span class='id object_for'>object_for</span><span class='lparen'>(</span><span class='id name'>name</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rparen'>)</span>
1412
+ <span class='kw'>end</span></pre>
1413
+ </td>
1414
+ </tr>
1415
+ </table>
1416
+ </div>
1417
+
1418
+ <div class="method_details ">
1419
+ <p class="signature " id="pack_uuid-class_method">
1420
+
1421
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>pack_uuid</strong>(uuid)
1422
+
1423
+
1424
+
1425
+ </p><div class="docstring">
1426
+ <div class="discussion">
1427
+
1428
+ <p>Pack if needed an uuid to its store representation This method is need to
1429
+ lookup an uuid by name</p>
1430
+
1431
+
1432
+ </div>
1433
+ </div>
1434
+ <div class="tags">
1435
+ <h3>Parameters:</h3>
1436
+ <ul class="param">
1437
+
1438
+ <li>
1439
+
1440
+ <span class='name'>uuid</span>
1441
+
1442
+
1443
+ <span class='type'>(<tt>String</tt>)</span>
1444
+
1445
+
1446
+
1447
+ </li>
1448
+
1449
+ </ul>
1450
+
1451
+ <h3>Returns:</h3>
1452
+ <ul class="return">
1453
+
1454
+ <li>
1455
+
1456
+
1457
+ <span class='type'>(<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>)</span>
1458
+
1459
+
1460
+
1461
+ </li>
1462
+
1463
+ </ul>
1464
+
1465
+ </div><table class="source_code">
1466
+ <tr>
1467
+ <td>
1468
+ <pre class="lines">
1469
+
1470
+
1471
+ 153
1472
+ 154
1473
+ 155</pre>
1474
+ </td>
1475
+ <td>
1476
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 153</span>
1477
+
1478
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id pack_uuid'>pack_uuid</span><span class='lparen'>(</span><span class='id uuid'>uuid</span><span class='rparen'>)</span>
1479
+ <span class='id uuid'>uuid</span>
1480
+ <span class='kw'>end</span></pre>
1481
+ </td>
1482
+ </tr>
1483
+ </table>
1484
+ </div>
1485
+
1486
+ <div class="method_details ">
1487
+ <p class="signature " id="persistor_class_for-class_method">
1488
+
1489
+ + (<tt>Class</tt>) <strong>persistor_class_for</strong>(object) <span class="extras">(private)</span>
1490
+
1491
+
1492
+
1493
+ </p><div class="docstring">
1494
+ <div class="discussion">
1495
+
1496
+
1497
+ </div>
1498
+ </div>
1499
+ <div class="tags">
1500
+ <h3>Parameters:</h3>
1501
+ <ul class="param">
1502
+
1503
+ <li>
1504
+
1505
+ <span class='name'>object</span>
1506
+
1507
+
1508
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>, <tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>)</span>
1509
+
1510
+
1511
+
1512
+ </li>
1513
+
1514
+ </ul>
1515
+
1516
+ <h3>Returns:</h3>
1517
+ <ul class="return">
1518
+
1519
+ <li>
1520
+
1521
+
1522
+ <span class='type'>(<tt>Class</tt>)</span>
1523
+
1524
+
1525
+
1526
+ </li>
1527
+
1528
+ </ul>
1529
+
1530
+ </div><table class="source_code">
1531
+ <tr>
1532
+ <td>
1533
+ <pre class="lines">
1534
+
1535
+
1536
+ 294
1537
+ 295
1538
+ 296
1539
+ 297
1540
+ 298
1541
+ 299
1542
+ 300
1543
+ 301
1544
+ 302
1545
+ 303</pre>
1546
+ </td>
1547
+ <td>
1548
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 294</span>
1549
+
1550
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id persistor_class_for'>persistor_class_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1551
+ <span class='id model'>model</span> <span class='op'>=</span> <span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1552
+
1553
+ <span class='id persistor'>persistor</span> <span class='op'>=</span> <span class='id persistor_class_map'>persistor_class_map</span><span class='period'>.</span><span class='id object_for'>object_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1554
+ <span class='kw'>unless</span> <span class='id persistor'>persistor</span>
1555
+ <span class='id persistor'>persistor</span> <span class='op'>=</span> <span class='id find_or_create_persistor_for'>find_or_create_persistor_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1556
+ <span class='id persistor_class_map'>persistor_class_map</span><span class='period'>.</span><span class='id map_id_object'>map_id_object</span><span class='lparen'>(</span><span class='id model'>model</span><span class='comma'>,</span> <span class='id persistor'>persistor</span><span class='rparen'>)</span>
1557
+ <span class='kw'>end</span>
1558
+ <span class='id persistor'>persistor</span>
1559
+ <span class='kw'>end</span></pre>
1560
+ </td>
1561
+ </tr>
1562
+ </table>
1563
+ </div>
1564
+
1565
+ <div class="method_details ">
1566
+ <p class="signature " id="persistor_class_map-class_method">
1567
+
1568
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>persistor_class_map</strong> <span class="extras">(private)</span>
1569
+
1570
+
1571
+
1572
+ </p><table class="source_code">
1573
+ <tr>
1574
+ <td>
1575
+ <pre class="lines">
1576
+
1577
+
1578
+ 305
1579
+ 306
1580
+ 307</pre>
1581
+ </td>
1582
+ <td>
1583
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 305</span>
1584
+
1585
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id persistor_class_map'>persistor_class_map</span><span class='lparen'>(</span><span class='rparen'>)</span>
1586
+ <span class='ivar'>@persistor_class_map</span> <span class='op'>||=</span> <span class='const'>IdentityMap</span><span class='op'>::</span><span class='const'>Class</span><span class='period'>.</span><span class='id new'>new</span>
1587
+ <span class='kw'>end</span></pre>
1588
+ </td>
1589
+ </tr>
1590
+ </table>
1591
+ </div>
1592
+
1593
+ <div class="method_details ">
1594
+ <p class="signature " id="persistor_name_for-class_method">
1595
+
1596
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>persistor_name_for</strong>(object) <span class="extras">(private)</span>
1597
+
1598
+
1599
+
1600
+ </p><table class="source_code">
1601
+ <tr>
1602
+ <td>
1603
+ <pre class="lines">
1604
+
1605
+
1606
+ 283
1607
+ 284
1608
+ 285
1609
+ 286</pre>
1610
+ </td>
1611
+ <td>
1612
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 283</span>
1613
+
1614
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id persistor_name_for'>persistor_name_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1615
+ <span class='id model'>model</span> <span class='op'>=</span> <span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1616
+ <span class='id model_to_name'>model_to_name</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
1617
+ <span class='kw'>end</span></pre>
1618
+ </td>
1619
+ </tr>
1620
+ </table>
1621
+ </div>
1622
+
1623
+ <div class="method_details ">
1624
+ <p class="signature " id="register_model-class_method">
1625
+
1626
+ + (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>register_model</strong>(name, model) <span class="extras">(private)</span>
1627
+
1628
+
1629
+
1630
+ </p><div class="docstring">
1631
+ <div class="discussion">
1632
+
1633
+ <p>Register a model for a given name. This name will be looked up when calling
1634
+ session.&lt;name&gt; Persistors need to be registered.</p>
1635
+
1636
+
1637
+ </div>
1638
+ </div>
1639
+ <div class="tags">
1640
+ <h3>Parameters:</h3>
1641
+ <ul class="param">
1642
+
1643
+ <li>
1644
+
1645
+ <span class='name'>name</span>
1646
+
1647
+
1648
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>)</span>
1649
+
1650
+
1651
+
1652
+ </li>
1653
+
1654
+ <li>
1655
+
1656
+ <span class='name'>model</span>
1657
+
1658
+
1659
+ <span class='type'>(<tt>Class</tt>)</span>
1660
+
1661
+
1662
+
1663
+ </li>
1664
+
1665
+ </ul>
1666
+
1667
+
1668
+ </div><table class="source_code">
1669
+ <tr>
1670
+ <td>
1671
+ <pre class="lines">
1672
+
1673
+
1674
+ 237
1675
+ 238
1676
+ 239
1677
+ 240
1678
+ 241
1679
+ 242</pre>
1680
+ </td>
1681
+ <td>
1682
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 237</span>
1683
+
1684
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id register_model'>register_model</span><span class='lparen'>(</span><span class='id name'>name</span><span class='comma'>,</span> <span class='id model'>model</span><span class='rparen'>)</span>
1685
+ <span class='id name'>name</span> <span class='op'>=</span> <span class='id name'>name</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='period'>.</span><span class='id snakecase'>snakecase</span>
1686
+ <span class='comment'># skip if name already registered with the same object
1687
+ </span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='id model_map'>model_map</span><span class='period'>.</span><span class='id object_for'>object_for</span><span class='lparen'>(</span><span class='id name'>name</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id model'>model</span>
1688
+ <span class='id model_map'>model_map</span><span class='period'>.</span><span class='id map_id_object'>map_id_object</span><span class='lparen'>(</span><span class='id name'>name</span><span class='comma'>,</span> <span class='id model'>model</span><span class='rparen'>)</span>
1689
+ <span class='kw'>end</span></pre>
1690
+ </td>
1691
+ </tr>
1692
+ </table>
1693
+ </div>
1694
+
1695
+ <div class="method_details ">
1696
+ <p class="signature " id="unpack_uuid-class_method">
1697
+
1698
+ + (<tt>String</tt>) <strong>unpack_uuid</strong>(puuid)
1699
+
1700
+
1701
+
1702
+ </p><div class="docstring">
1703
+ <div class="discussion">
1704
+
1705
+ <p>Unpac if needed an uuid from its store representation</p>
1706
+
1707
+
1708
+ </div>
1709
+ </div>
1710
+ <div class="tags">
1711
+ <h3>Parameters:</h3>
1712
+ <ul class="param">
1713
+
1714
+ <li>
1715
+
1716
+ <span class='name'>puuid</span>
1717
+
1718
+
1719
+ <span class='type'>(<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>)</span>
1720
+
1721
+
1722
+
1723
+ </li>
1724
+
1725
+ </ul>
1726
+
1727
+ <h3>Returns:</h3>
1728
+ <ul class="return">
1729
+
1730
+ <li>
1731
+
1732
+
1733
+ <span class='type'>(<tt>String</tt>)</span>
1734
+
1735
+
1736
+
1737
+ </li>
1738
+
1739
+ </ul>
1740
+
1741
+ </div><table class="source_code">
1742
+ <tr>
1743
+ <td>
1744
+ <pre class="lines">
1745
+
1746
+
1747
+ 164
1748
+ 165
1749
+ 166</pre>
1750
+ </td>
1751
+ <td>
1752
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 164</span>
1753
+
1754
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id unpack_uuid'>unpack_uuid</span><span class='lparen'>(</span><span class='id puuid'>puuid</span><span class='rparen'>)</span>
1755
+ <span class='id puuid'>puuid</span>
1756
+ <span class='kw'>end</span></pre>
1757
+ </td>
1758
+ </tr>
1759
+ </table>
1760
+ </div>
1761
+
1762
+ </div>
1763
+
1764
+ <div id="instance_method_details" class="method_details_list">
1765
+ <h2>Instance Method Details</h2>
1766
+
1767
+
1768
+ <div class="method_details first">
1769
+ <p class="signature first" id="<<-instance_method">
1770
+
1771
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>&lt;&lt;</strong>(object)
1772
+
1773
+
1774
+
1775
+ </p><div class="docstring">
1776
+ <div class="discussion">
1777
+
1778
+ <p>Tell the session to be responsible of an object. The object will be saved
1779
+ at the end of the session.</p>
1780
+
1781
+
1782
+ </div>
1783
+ </div>
1784
+ <div class="tags">
1785
+
1786
+ <div class="examples">
1787
+ <h3>Examples:</h3>
1788
+
1789
+ <h4><div class='inline'></div></h4>
1790
+ <pre class="example code"><span class='id store'>store</span><span class='period'>.</span><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>
1791
+ <span class='id session'>session</span> <span class='op'>&lt;&lt;</span> <span class='const'>Plate</span><span class='period'>.</span><span class='id new'>new</span>
1792
+ <span class='kw'>end</span></pre>
1793
+
1794
+ </div>
1795
+ <h3>Parameters:</h3>
1796
+ <ul class="param">
1797
+
1798
+ <li>
1799
+
1800
+ <span class='name'>object</span>
1801
+
1802
+
1803
+ <span class='type'>(<tt>Persistable</tt>)</span>
1804
+
1805
+
1806
+
1807
+ &mdash;
1808
+ <div class='inline'>
1809
+ <p>the object to persist.</p>
1810
+ </div>
1811
+
1812
+ </li>
1813
+
1814
+ </ul>
1815
+
1816
+ <h3>Returns:</h3>
1817
+ <ul class="return">
1818
+
1819
+ <li>
1820
+
1821
+
1822
+ <span class='type'></span>
1823
+
1824
+
1825
+
1826
+
1827
+ <div class='inline'>
1828
+ <p>the session, to allow for chaining</p>
1829
+ </div>
1830
+
1831
+ </li>
1832
+
1833
+ </ul>
1834
+
1835
+ </div><table class="source_code">
1836
+ <tr>
1837
+ <td>
1838
+ <pre class="lines">
1839
+
1840
+
1841
+ 80
1842
+ 81
1843
+ 82
1844
+ 83</pre>
1845
+ </td>
1846
+ <td>
1847
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 80</span>
1848
+
1849
+ <span class='kw'>def</span> <span class='op'>&lt;&lt;</span> <span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1850
+ <span class='id manage_state'>manage_state</span><span class='lparen'>(</span><span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span><span class='rparen'>)</span>
1851
+ <span class='kw'>self</span>
1852
+ <span class='kw'>end</span></pre>
1853
+ </td>
1854
+ </tr>
1855
+ </table>
1856
+ </div>
1857
+
1858
+ <div class="method_details ">
1859
+ <p class="signature " id="delete-instance_method">
1860
+
1861
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>delete</strong>(object)
1862
+
1863
+
1864
+
1865
+ </p><div class="docstring">
1866
+ <div class="discussion">
1867
+
1868
+ <p>Mark an object as to be deleted. The corresponding object will be deleted
1869
+ at the end of the session. For most object you don't need to load it to
1870
+ delete it but some needs (to delete the appropriate children). The real
1871
+ delete is made by calling the #delete_in_real method.</p>
1872
+
1873
+
1874
+ </div>
1875
+ </div>
1876
+ <div class="tags">
1877
+
1878
+ <h3>Raises:</h3>
1879
+ <ul class="raise">
1880
+
1881
+ <li>
1882
+
1883
+
1884
+ <span class='type'>(<tt><span class='object_link'><a href="Session/UnmanagedObjectError.html" title="Lims::Core::Persistence::Session::UnmanagedObjectError (class)">UnmanagedObjectError</a></span></tt>)</span>
1885
+
1886
+
1887
+
1888
+ </li>
1889
+
1890
+ </ul>
1891
+
1892
+ </div><table class="source_code">
1893
+ <tr>
1894
+ <td>
1895
+ <pre class="lines">
1896
+
1897
+
1898
+ 143
1899
+ 144
1900
+ 145
1901
+ 146
1902
+ 147</pre>
1903
+ </td>
1904
+ <td>
1905
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 143</span>
1906
+
1907
+ <span class='kw'>def</span> <span class='id delete'>delete</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1908
+ <span class='id raise'>raise</span> <span class='const'>UnmanagedObjectError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>can't delete </span><span class='embexpr_beg'>#{</span><span class='id object'>object</span><span class='period'>.</span><span class='id inspect'>inspect</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id managed?'>managed?</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1909
+ <span class='id state'>state</span> <span class='op'>=</span> <span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1910
+ <span class='id state'>state</span><span class='period'>.</span><span class='id mark_for_deletion'>mark_for_deletion</span>
1911
+ <span class='kw'>end</span></pre>
1912
+ </td>
1913
+ </tr>
1914
+ </table>
1915
+ </div>
1916
+
1917
+ <div class="method_details ">
1918
+ <p class="signature " id="dirty_key_for-instance_method">
1919
+
1920
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>dirty_key_for</strong>(object)
1921
+
1922
+
1923
+
1924
+ </p><table class="source_code">
1925
+ <tr>
1926
+ <td>
1927
+ <pre class="lines">
1928
+
1929
+
1930
+ 181
1931
+ 182
1932
+ 183
1933
+ 184
1934
+ 185
1935
+ 186
1936
+ 187
1937
+ 188</pre>
1938
+ </td>
1939
+ <td>
1940
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 181</span>
1941
+
1942
+ <span class='kw'>def</span> <span class='id dirty_key_for'>dirty_key_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
1943
+ <span class='kw'>case</span> <span class='ivar'>@dirty_attribute_strategy</span>
1944
+ <span class='kw'>when</span> <span class='const'>Store</span><span class='op'>::</span><span class='const'>DIRTY_ATTRIBUTE_STRATEGY_DEEP_COPY</span> <span class='kw'>then</span> <span class='id object'>object</span>
1945
+ <span class='kw'>when</span> <span class='const'>Store</span><span class='op'>::</span><span class='const'>DIRTY_ATTRIBUTE_STRATEGY_SHA1</span> <span class='kw'>then</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA1</span><span class='period'>.</span><span class='id hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='const'>Oj</span><span class='period'>.</span><span class='id dump'>dump</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span><span class='rparen'>)</span>
1946
+ <span class='kw'>when</span> <span class='const'>Store</span><span class='op'>::</span><span class='const'>DIRTY_ATTRIBUTE_STRATEGY_MD5</span> <span class='kw'>then</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>MD5</span><span class='period'>.</span><span class='id hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='const'>Oj</span><span class='period'>.</span><span class='id dump'>dump</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span><span class='rparen'>)</span>
1947
+ <span class='kw'>when</span> <span class='const'>Store</span><span class='op'>::</span><span class='const'>DIRTY_ATTRIBUTE_STRATEGY_QUICK_HASH</span> <span class='kw'>then</span> <span class='id object'>object</span><span class='period'>.</span><span class='id hash'>hash</span>
1948
+ <span class='kw'>end</span>
1949
+ <span class='kw'>end</span></pre>
1950
+ </td>
1951
+ </tr>
1952
+ </table>
1953
+ </div>
1954
+
1955
+ <div class="method_details ">
1956
+ <p class="signature " id="filter-instance_method">
1957
+
1958
+ - (<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>) <strong>filter</strong>(persistor) <span class="extras">(private)</span>
1959
+
1960
+
1961
+
1962
+ </p><div class="docstring">
1963
+ <div class="discussion">
1964
+
1965
+ <p>Create a new persistor sharing the same internal parameters but with the
1966
+ "context" (datasest) of the new one. This can be used to "reset" a filtered
1967
+ persistor to the current session.</p>
1968
+
1969
+
1970
+ </div>
1971
+ </div>
1972
+ <div class="tags">
1973
+ <h3>Parameters:</h3>
1974
+ <ul class="param">
1975
+
1976
+ <li>
1977
+
1978
+ <span class='name'>persistor</span>
1979
+
1980
+
1981
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>)</span>
1982
+
1983
+
1984
+
1985
+ </li>
1986
+
1987
+ </ul>
1988
+
1989
+ <h3>Returns:</h3>
1990
+ <ul class="return">
1991
+
1992
+ <li>
1993
+
1994
+
1995
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>)</span>
1996
+
1997
+
1998
+
1999
+ </li>
2000
+
2001
+ </ul>
2002
+
2003
+ </div><table class="source_code">
2004
+ <tr>
2005
+ <td>
2006
+ <pre class="lines">
2007
+
2008
+
2009
+ 206
2010
+ 207
2011
+ 208
2012
+ 209
2013
+ 210
2014
+ 211
2015
+ 212
2016
+ 213
2017
+ 214
2018
+ 215</pre>
2019
+ </td>
2020
+ <td>
2021
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 206</span>
2022
+
2023
+ <span class='kw'>def</span> <span class='id filter'>filter</span><span class='lparen'>(</span><span class='id persistor'>persistor</span><span class='rparen'>)</span>
2024
+ <span class='comment'># If the persistor session is the current session, there is nothing to do
2025
+ </span> <span class='comment'># just return the object as it is.
2026
+ </span> <span class='kw'>return</span> <span class='id persistor'>persistor</span> <span class='kw'>if</span> <span class='id persistor'>persistor</span><span class='period'>.</span><span class='id instance_eval'>instance_eval</span> <span class='lbrace'>{</span><span class='ivar'>@session</span><span class='rbrace'>}</span> <span class='op'>==</span> <span class='kw'>self</span>
2027
+
2028
+ <span class='comment'># we need first to find the original persistor, ie the one that the user can call via
2029
+ </span> <span class='comment'># session.model
2030
+ </span> <span class='id original'>original</span> <span class='op'>=</span> <span class='id persistor_for'>persistor_for</span><span class='lparen'>(</span><span class='id persistor'>persistor</span><span class='period'>.</span><span class='id class'>class</span><span class='rparen'>)</span>
2031
+ <span class='id persistor'>persistor</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='id original'>original</span><span class='comma'>,</span> <span class='id persistor'>persistor</span><span class='period'>.</span><span class='id dataset'>dataset</span><span class='rparen'>)</span>
2032
+ <span class='kw'>end</span></pre>
2033
+ </td>
2034
+ </tr>
2035
+ </table>
2036
+ </div>
2037
+
2038
+ <div class="method_details ">
2039
+ <p class="signature " id="id_for-instance_method">
2040
+
2041
+ - (<tt>Id</tt><sup>?</sup>) <strong>id_for</strong>(object)
2042
+
2043
+
2044
+
2045
+ </p><div class="docstring">
2046
+ <div class="discussion">
2047
+
2048
+ <p>Returns the id of an object if exists.</p>
2049
+
2050
+
2051
+ </div>
2052
+ </div>
2053
+ <div class="tags">
2054
+ <h3>Parameters:</h3>
2055
+ <ul class="param">
2056
+
2057
+ <li>
2058
+
2059
+ <span class='name'>object</span>
2060
+
2061
+
2062
+ <span class='type'>(<tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>, <tt>Id</tt>)</span>
2063
+
2064
+
2065
+
2066
+ &mdash;
2067
+ <div class='inline'>
2068
+ <p>or id.</p>
2069
+ </div>
2070
+
2071
+ </li>
2072
+
2073
+ </ul>
2074
+
2075
+ <h3>Returns:</h3>
2076
+ <ul class="return">
2077
+
2078
+ <li>
2079
+
2080
+
2081
+ <span class='type'>(<tt>Id</tt>, <tt>nil</tt>)</span>
2082
+
2083
+
2084
+
2085
+ </li>
2086
+
2087
+ </ul>
2088
+
2089
+ </div><table class="source_code">
2090
+ <tr>
2091
+ <td>
2092
+ <pre class="lines">
2093
+
2094
+
2095
+ 103
2096
+ 104
2097
+ 105
2098
+ 106
2099
+ 107
2100
+ 108</pre>
2101
+ </td>
2102
+ <td>
2103
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 103</span>
2104
+
2105
+ <span class='kw'>def</span> <span class='id id_for'>id_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2106
+ <span class='kw'>case</span> <span class='id object'>object</span>
2107
+ <span class='kw'>when</span> <span class='const'>Resource</span> <span class='kw'>then</span> <span class='id persistor_for'>persistor_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span><span class='period'>.</span><span class='id id_for'>id_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2108
+ <span class='kw'>else</span> <span class='id object'>object</span> <span class='comment'># the object should be already an id
2109
+ </span> <span class='kw'>end</span>
2110
+ <span class='kw'>end</span></pre>
2111
+ </td>
2112
+ </tr>
2113
+ </table>
2114
+ </div>
2115
+
2116
+ <div class="method_details ">
2117
+ <p class="signature " id="id_for!-instance_method">
2118
+
2119
+ - (<tt>Id</tt>) <strong>id_for!</strong>(object)
2120
+
2121
+
2122
+
2123
+ </p><div class="docstring">
2124
+ <div class="discussion">
2125
+
2126
+ <p>Returns the id of an object and save it if necessary</p>
2127
+
2128
+
2129
+ </div>
2130
+ </div>
2131
+ <div class="tags">
2132
+ <h3>Parameters:</h3>
2133
+ <ul class="param">
2134
+
2135
+ <li>
2136
+
2137
+ <span class='name'>object</span>
2138
+
2139
+
2140
+ <span class='type'>(<tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>, <tt>Id</tt>)</span>
2141
+
2142
+
2143
+
2144
+ &mdash;
2145
+ <div class='inline'>
2146
+ <p>or id.</p>
2147
+ </div>
2148
+
2149
+ </li>
2150
+
2151
+ </ul>
2152
+
2153
+ <h3>Returns:</h3>
2154
+ <ul class="return">
2155
+
2156
+ <li>
2157
+
2158
+
2159
+ <span class='type'>(<tt>Id</tt>)</span>
2160
+
2161
+
2162
+
2163
+ </li>
2164
+
2165
+ </ul>
2166
+
2167
+ </div><table class="source_code">
2168
+ <tr>
2169
+ <td>
2170
+ <pre class="lines">
2171
+
2172
+
2173
+ 124
2174
+ 125
2175
+ 126
2176
+ 127</pre>
2177
+ </td>
2178
+ <td>
2179
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 124</span>
2180
+
2181
+ <span class='kw'>def</span> <span class='id id_for!'>id_for!</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2182
+ <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id object'>object</span>
2183
+ <span class='id id_for'>id_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id save'>save</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2184
+ <span class='kw'>end</span></pre>
2185
+ </td>
2186
+ </tr>
2187
+ </table>
2188
+ </div>
2189
+
2190
+ <div class="method_details ">
2191
+ <p class="signature " id="manage_state-instance_method">
2192
+
2193
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>manage_state</strong>(state)
2194
+
2195
+
2196
+
2197
+ </p><table class="source_code">
2198
+ <tr>
2199
+ <td>
2200
+ <pre class="lines">
2201
+
2202
+
2203
+ 85
2204
+ 86
2205
+ 87</pre>
2206
+ </td>
2207
+ <td>
2208
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 85</span>
2209
+
2210
+ <span class='kw'>def</span> <span class='id manage_state'>manage_state</span><span class='lparen'>(</span><span class='id state'>state</span><span class='rparen'>)</span>
2211
+ <span class='ivar'>@object_states</span> <span class='op'>&lt;&lt;</span> <span class='id state'>state</span>
2212
+ <span class='kw'>end</span></pre>
2213
+ </td>
2214
+ </tr>
2215
+ </table>
2216
+ </div>
2217
+
2218
+ <div class="method_details ">
2219
+ <p class="signature " id="managed?-instance_method">
2220
+
2221
+ - (<tt>Boolean</tt>) <strong>managed?</strong>(object)
2222
+
2223
+
2224
+
2225
+ </p><div class="docstring">
2226
+ <div class="discussion">
2227
+
2228
+ <p>Check if the session 'mananage' already this object. .i.e if it's been
2229
+ loaded or meant to be saved</p>
2230
+
2231
+
2232
+ </div>
2233
+ </div>
2234
+ <div class="tags">
2235
+ <h3>Parameters:</h3>
2236
+ <ul class="param">
2237
+
2238
+ <li>
2239
+
2240
+ <span class='name'>object</span>
2241
+
2242
+
2243
+ <span class='type'>(<tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>)</span>
2244
+
2245
+
2246
+
2247
+ </li>
2248
+
2249
+ </ul>
2250
+
2251
+ <h3>Returns:</h3>
2252
+ <ul class="return">
2253
+
2254
+ <li>
2255
+
2256
+
2257
+ <span class='type'>(<tt>Boolean</tt>)</span>
2258
+
2259
+
2260
+
2261
+ </li>
2262
+
2263
+ </ul>
2264
+
2265
+ </div><table class="source_code">
2266
+ <tr>
2267
+ <td>
2268
+ <pre class="lines">
2269
+
2270
+
2271
+ 133
2272
+ 134
2273
+ 135
2274
+ 136</pre>
2275
+ </td>
2276
+ <td>
2277
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 133</span>
2278
+
2279
+ <span class='kw'>def</span> <span class='id managed?'>managed?</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2280
+ <span class='id state'>state</span> <span class='op'>=</span> <span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2281
+ <span class='ivar'>@object_states</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='id state'>state</span><span class='rparen'>)</span>
2282
+ <span class='kw'>end</span></pre>
2283
+ </td>
2284
+ </tr>
2285
+ </table>
2286
+ </div>
2287
+
2288
+ <div class="method_details ">
2289
+ <p class="signature " id="pack_uuid-instance_method">
2290
+
2291
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>pack_uuid</strong>(uuid)
2292
+
2293
+
2294
+
2295
+ </p><table class="source_code">
2296
+ <tr>
2297
+ <td>
2298
+ <pre class="lines">
2299
+
2300
+
2301
+ 157
2302
+ 158
2303
+ 159</pre>
2304
+ </td>
2305
+ <td>
2306
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 157</span>
2307
+
2308
+ <span class='kw'>def</span> <span class='id pack_uuid'>pack_uuid</span><span class='lparen'>(</span><span class='id uuid'>uuid</span><span class='rparen'>)</span>
2309
+ <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id pack_uuid'>pack_uuid</span><span class='lparen'>(</span><span class='id uuid'>uuid</span><span class='rparen'>)</span>
2310
+ <span class='kw'>end</span></pre>
2311
+ </td>
2312
+ </tr>
2313
+ </table>
2314
+ </div>
2315
+
2316
+ <div class="method_details ">
2317
+ <p class="signature " id="persistor_for-instance_method">
2318
+
2319
+ - (<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt><sup>?</sup>) <strong>persistor_for</strong>(object)
2320
+
2321
+
2322
+
2323
+ </p><div class="docstring">
2324
+ <div class="discussion">
2325
+
2326
+ <p>Get the persistor corresponding to the object class</p>
2327
+
2328
+
2329
+ </div>
2330
+ </div>
2331
+ <div class="tags">
2332
+ <h3>Parameters:</h3>
2333
+ <ul class="param">
2334
+
2335
+ <li>
2336
+
2337
+ <span class='name'>object</span>
2338
+
2339
+
2340
+ <span class='type'>(<tt><span class='object_link'><a href="../Resource.html" title="Lims::Core::Resource (module)">Resource</a></span></tt>, <tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>)</span>
2341
+
2342
+
2343
+
2344
+ </li>
2345
+
2346
+ </ul>
2347
+
2348
+ <h3>Returns:</h3>
2349
+ <ul class="return">
2350
+
2351
+ <li>
2352
+
2353
+
2354
+ <span class='type'>(<tt><span class='object_link'><a href="Persistor.html" title="Lims::Core::Persistence::Persistor (class)">Persistor</a></span></tt>, <tt>nil</tt>)</span>
2355
+
2356
+
2357
+
2358
+ </li>
2359
+
2360
+ </ul>
2361
+
2362
+ </div><table class="source_code">
2363
+ <tr>
2364
+ <td>
2365
+ <pre class="lines">
2366
+
2367
+
2368
+ 351
2369
+ 352
2370
+ 353
2371
+ 354
2372
+ 355
2373
+ 356
2374
+ 357
2375
+ 358
2376
+ 359
2377
+ 360
2378
+ 361
2379
+ 362</pre>
2380
+ </td>
2381
+ <td>
2382
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 351</span>
2383
+
2384
+ <span class='kw'>def</span> <span class='id persistor_for'>persistor_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2385
+ <span class='kw'>if</span> <span class='id object'>object</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Persistor</span><span class='rparen'>)</span>
2386
+ <span class='kw'>return</span> <span class='id filter'>filter</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2387
+ <span class='kw'>end</span>
2388
+
2389
+ <span class='id model'>model</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id model_for'>model_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2390
+ <span class='ivar'>@persistor_map</span><span class='lbracket'>[</span><span class='id model'>model</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='kw'>begin</span>
2391
+ <span class='id persistor_class'>persistor_class</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id persistor_class_for'>persistor_class_for</span><span class='lparen'>(</span><span class='id model'>model</span><span class='rparen'>)</span>
2392
+ <span class='id raise'>raise</span> <span class='const'>NameError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>no persistor defined for </span><span class='embexpr_beg'>#{</span><span class='id object'>object</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id persistor_class'>persistor_class</span> <span class='op'>&amp;&amp;</span> <span class='id persistor_class'>persistor_class</span><span class='period'>.</span><span class='id ancestors'>ancestors</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='const'>Persistor</span><span class='rparen'>)</span>
2393
+ <span class='id persistor_class'>persistor_class</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
2394
+ <span class='kw'>end</span>
2395
+ <span class='kw'>end</span></pre>
2396
+ </td>
2397
+ </tr>
2398
+ </table>
2399
+ </div>
2400
+
2401
+ <div class="method_details ">
2402
+ <p class="signature " id="persistor_name_for-instance_method">
2403
+
2404
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>persistor_name_for</strong>(object) <span class="extras">(private)</span>
2405
+
2406
+
2407
+
2408
+ </p><table class="source_code">
2409
+ <tr>
2410
+ <td>
2411
+ <pre class="lines">
2412
+
2413
+
2414
+ 288
2415
+ 289
2416
+ 290</pre>
2417
+ </td>
2418
+ <td>
2419
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 288</span>
2420
+
2421
+ <span class='kw'>def</span> <span class='id persistor_name_for'>persistor_name_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2422
+ <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id persistor_name_for'>persistor_name_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2423
+ <span class='kw'>end</span></pre>
2424
+ </td>
2425
+ </tr>
2426
+ </table>
2427
+ </div>
2428
+
2429
+ <div class="method_details ">
2430
+ <p class="signature " id="save_all-instance_method">
2431
+
2432
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>save_all</strong> <span class="extras">(private)</span>
2433
+
2434
+
2435
+
2436
+ </p><div class="docstring">
2437
+ <div class="discussion">
2438
+
2439
+ <p>save all objects which needs to be</p>
2440
+
2441
+
2442
+ </div>
2443
+ </div>
2444
+ <div class="tags">
2445
+
2446
+
2447
+ </div><table class="source_code">
2448
+ <tr>
2449
+ <td>
2450
+ <pre class="lines">
2451
+
2452
+
2453
+ 192
2454
+ 193
2455
+ 194
2456
+ 195
2457
+ 196
2458
+ 197
2459
+ 198
2460
+ 199</pre>
2461
+ </td>
2462
+ <td>
2463
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 192</span>
2464
+
2465
+ <span class='kw'>def</span> <span class='id save_all'>save_all</span><span class='lparen'>(</span><span class='rparen'>)</span>
2466
+ <span class='ivar'>@store</span><span class='period'>.</span><span class='id transaction'>transaction</span> <span class='kw'>do</span>
2467
+ <span class='ivar'>@save_in_progress</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='comment'># allows saving
2468
+ </span> <span class='ivar'>@object_states</span><span class='period'>.</span><span class='id reset_status'>reset_status</span>
2469
+ <span class='ivar'>@object_states</span><span class='period'>.</span><span class='id save'>save</span>
2470
+ <span class='kw'>end</span>
2471
+ <span class='ivar'>@save_in_progress</span> <span class='op'>=</span> <span class='kw'>false</span>
2472
+ <span class='kw'>end</span></pre>
2473
+ </td>
2474
+ </tr>
2475
+ </table>
2476
+ </div>
2477
+
2478
+ <div class="method_details ">
2479
+ <p class="signature " id="serialize-instance_method">
2480
+
2481
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>serialize</strong>(object)
2482
+
2483
+
2484
+
2485
+ </p><div class="docstring">
2486
+ <div class="discussion">
2487
+
2488
+ <div class="note todo">
2489
+ <strong>TODO:</strong>
2490
+ <div class='inline'>
2491
+ <p>doc</p>
2492
+ </div>
2493
+ </div>
2494
+
2495
+
2496
+
2497
+ </div>
2498
+ </div>
2499
+ <div class="tags">
2500
+
2501
+
2502
+ </div><table class="source_code">
2503
+ <tr>
2504
+ <td>
2505
+ <pre class="lines">
2506
+
2507
+
2508
+ 173
2509
+ 174
2510
+ 175</pre>
2511
+ </td>
2512
+ <td>
2513
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 173</span>
2514
+
2515
+ <span class='kw'>def</span> <span class='id serialize'>serialize</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2516
+ <span class='id object'>object</span>
2517
+ <span class='kw'>end</span></pre>
2518
+ </td>
2519
+ </tr>
2520
+ </table>
2521
+ </div>
2522
+
2523
+ <div class="method_details ">
2524
+ <p class="signature " id="state_for-instance_method">
2525
+
2526
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>state_for</strong>(object)
2527
+
2528
+
2529
+
2530
+ </p><div class="docstring">
2531
+ <div class="discussion">
2532
+
2533
+ <div class="note todo">
2534
+ <strong>TODO:</strong>
2535
+ <div class='inline'></div>
2536
+ </div>
2537
+
2538
+
2539
+
2540
+ </div>
2541
+ </div>
2542
+ <div class="tags">
2543
+
2544
+
2545
+ </div><table class="source_code">
2546
+ <tr>
2547
+ <td>
2548
+ <pre class="lines">
2549
+
2550
+
2551
+ 111
2552
+ 112
2553
+ 113</pre>
2554
+ </td>
2555
+ <td>
2556
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 111</span>
2557
+
2558
+ <span class='kw'>def</span> <span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2559
+ <span class='kw'>return</span> <span class='id persistor_for'>persistor_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span><span class='period'>.</span><span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2560
+ <span class='kw'>end</span></pre>
2561
+ </td>
2562
+ </tr>
2563
+ </table>
2564
+ </div>
2565
+
2566
+ <div class="method_details ">
2567
+ <p class="signature " id="states_for-instance_method">
2568
+
2569
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>states_for</strong>(objects)
2570
+
2571
+
2572
+
2573
+ </p><table class="source_code">
2574
+ <tr>
2575
+ <td>
2576
+ <pre class="lines">
2577
+
2578
+
2579
+ 115
2580
+ 116
2581
+ 117</pre>
2582
+ </td>
2583
+ <td>
2584
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 115</span>
2585
+
2586
+ <span class='kw'>def</span> <span class='id states_for'>states_for</span><span class='lparen'>(</span><span class='id objects'>objects</span><span class='rparen'>)</span>
2587
+ <span class='id objects'>objects</span> <span class='op'>&amp;&amp;</span> <span class='id objects'>objects</span><span class='period'>.</span><span class='id map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id o'>o</span><span class='op'>|</span> <span class='id state_for'>state_for</span><span class='lparen'>(</span><span class='id o'>o</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2588
+ <span class='kw'>end</span></pre>
2589
+ </td>
2590
+ </tr>
2591
+ </table>
2592
+ </div>
2593
+
2594
+ <div class="method_details ">
2595
+ <p class="signature " id="unpack_uuid-instance_method">
2596
+
2597
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>unpack_uuid</strong>(uuid)
2598
+
2599
+
2600
+
2601
+ </p><table class="source_code">
2602
+ <tr>
2603
+ <td>
2604
+ <pre class="lines">
2605
+
2606
+
2607
+ 168
2608
+ 169
2609
+ 170</pre>
2610
+ </td>
2611
+ <td>
2612
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 168</span>
2613
+
2614
+ <span class='kw'>def</span> <span class='id unpack_uuid'>unpack_uuid</span><span class='lparen'>(</span><span class='id uuid'>uuid</span><span class='rparen'>)</span>
2615
+ <span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id unpack_uuid'>unpack_uuid</span><span class='lparen'>(</span><span class='id uuid'>uuid</span><span class='rparen'>)</span>
2616
+ <span class='kw'>end</span></pre>
2617
+ </td>
2618
+ </tr>
2619
+ </table>
2620
+ </div>
2621
+
2622
+ <div class="method_details ">
2623
+ <p class="signature " id="unserialize-instance_method">
2624
+
2625
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>unserialize</strong>(object)
2626
+
2627
+
2628
+
2629
+ </p><table class="source_code">
2630
+ <tr>
2631
+ <td>
2632
+ <pre class="lines">
2633
+
2634
+
2635
+ 177
2636
+ 178
2637
+ 179</pre>
2638
+ </td>
2639
+ <td>
2640
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 177</span>
2641
+
2642
+ <span class='kw'>def</span> <span class='id unserialize'>unserialize</span><span class='lparen'>(</span><span class='id object'>object</span><span class='rparen'>)</span>
2643
+ <span class='id object'>object</span>
2644
+ <span class='kw'>end</span></pre>
2645
+ </td>
2646
+ </tr>
2647
+ </table>
2648
+ </div>
2649
+
2650
+ <div class="method_details ">
2651
+ <p class="signature " id="with_session-instance_method">
2652
+
2653
+ - (<tt><span class='object_link'><a href="../../../Object.html" title="Object (class)">Object</a></span></tt>) <strong>with_session</strong>(*params) {|session| ... }
2654
+
2655
+
2656
+
2657
+ </p><div class="docstring">
2658
+ <div class="discussion">
2659
+
2660
+ <p>Execute a block and save every 'marked' object in a transaction at the End.</p>
2661
+
2662
+
2663
+ </div>
2664
+ </div>
2665
+ <div class="tags">
2666
+
2667
+ <h3>Yield Parameters:</h3>
2668
+ <ul class="yieldparam">
2669
+
2670
+ <li>
2671
+
2672
+ <span class='name'>session</span>
2673
+
2674
+
2675
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Lims::Core::Persistence::Session (class)">Session</a></span></tt>)</span>
2676
+
2677
+
2678
+
2679
+ &mdash;
2680
+ <div class='inline'>
2681
+ <p>the created session.</p>
2682
+ </div>
2683
+
2684
+ </li>
2685
+
2686
+ </ul>
2687
+ <h3>Returns:</h3>
2688
+ <ul class="return">
2689
+
2690
+ <li>
2691
+
2692
+
2693
+ <span class='type'></span>
2694
+
2695
+
2696
+
2697
+
2698
+ <div class='inline'>
2699
+ <p>the value of the block</p>
2700
+ </div>
2701
+
2702
+ </li>
2703
+
2704
+ </ul>
2705
+
2706
+ </div><table class="source_code">
2707
+ <tr>
2708
+ <td>
2709
+ <pre class="lines">
2710
+
2711
+
2712
+ 58
2713
+ 59
2714
+ 60
2715
+ 61
2716
+ 62
2717
+ 63
2718
+ 64
2719
+ 65
2720
+ 66
2721
+ 67
2722
+ 68
2723
+ 69</pre>
2724
+ </td>
2725
+ <td>
2726
+ <pre class="code"><span class="info file"># File 'lib/lims-core/persistence/session.rb', line 58</span>
2727
+
2728
+ <span class='kw'>def</span> <span class='id with_session'>with_session</span><span class='lparen'>(</span><span class='op'>*</span><span class='id params'>params</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id block'>block</span><span class='rparen'>)</span>
2729
+ <span class='kw'>return</span> <span class='id block'>block</span><span class='lbracket'>[</span><span class='kw'>self</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='ivar'>@in_session</span>
2730
+ <span class='kw'>begin</span>
2731
+ <span class='ivar'>@in_session</span> <span class='op'>=</span> <span class='kw'>true</span>
2732
+ <span class='id to_return'>to_return</span> <span class='op'>=</span> <span class='id block'>block</span><span class='lbracket'>[</span><span class='kw'>self</span><span class='rbracket'>]</span>
2733
+ <span class='ivar'>@in_session</span> <span class='op'>=</span> <span class='kw'>false</span>
2734
+ <span class='id save_all'>save_all</span>
2735
+ <span class='kw'>return</span> <span class='id to_return'>to_return</span>
2736
+ <span class='kw'>ensure</span>
2737
+ <span class='ivar'>@in_session</span> <span class='op'>=</span> <span class='kw'>false</span>
2738
+ <span class='kw'>end</span>
2739
+ <span class='kw'>end</span></pre>
2740
+ </td>
2741
+ </tr>
2742
+ </table>
2743
+ </div>
2744
+
2745
+ </div>
2746
+
2747
+ </div>
2748
+
2749
+
2750
+ </body>
2751
+ </html>