lims-core 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
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>