caruby-core 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/History.txt +4 -0
  2. data/LEGAL +5 -0
  3. data/LICENSE +22 -0
  4. data/README.md +51 -0
  5. data/doc/website/css/site.css +1 -5
  6. data/doc/website/images/avatar.png +0 -0
  7. data/doc/website/images/favicon.ico +0 -0
  8. data/doc/website/images/logo.png +0 -0
  9. data/doc/website/index.html +82 -0
  10. data/doc/website/install.html +87 -0
  11. data/doc/website/quick_start.html +87 -0
  12. data/doc/website/tissue.html +85 -0
  13. data/doc/website/uom.html +10 -0
  14. data/lib/caruby.rb +3 -0
  15. data/lib/caruby/active_support/README.txt +2 -0
  16. data/lib/caruby/active_support/core_ext/string.rb +7 -0
  17. data/lib/caruby/active_support/core_ext/string/inflections.rb +167 -0
  18. data/lib/caruby/active_support/inflections.rb +55 -0
  19. data/lib/caruby/active_support/inflector.rb +398 -0
  20. data/lib/caruby/cli/application.rb +36 -0
  21. data/lib/caruby/cli/command.rb +169 -0
  22. data/lib/caruby/csv/csv_mapper.rb +157 -0
  23. data/lib/caruby/csv/csvio.rb +185 -0
  24. data/lib/caruby/database.rb +252 -0
  25. data/lib/caruby/database/fetched_matcher.rb +66 -0
  26. data/lib/caruby/database/persistable.rb +432 -0
  27. data/lib/caruby/database/persistence_service.rb +162 -0
  28. data/lib/caruby/database/reader.rb +599 -0
  29. data/lib/caruby/database/saved_merger.rb +131 -0
  30. data/lib/caruby/database/search_template_builder.rb +59 -0
  31. data/lib/caruby/database/sql_executor.rb +75 -0
  32. data/lib/caruby/database/store_template_builder.rb +200 -0
  33. data/lib/caruby/database/writer.rb +469 -0
  34. data/lib/caruby/domain/annotatable.rb +25 -0
  35. data/lib/caruby/domain/annotation.rb +23 -0
  36. data/lib/caruby/domain/attribute_metadata.rb +447 -0
  37. data/lib/caruby/domain/java_attribute_metadata.rb +160 -0
  38. data/lib/caruby/domain/merge.rb +91 -0
  39. data/lib/caruby/domain/properties.rb +95 -0
  40. data/lib/caruby/domain/reference_visitor.rb +289 -0
  41. data/lib/caruby/domain/resource_attributes.rb +528 -0
  42. data/lib/caruby/domain/resource_dependency.rb +205 -0
  43. data/lib/caruby/domain/resource_introspection.rb +159 -0
  44. data/lib/caruby/domain/resource_metadata.rb +117 -0
  45. data/lib/caruby/domain/resource_module.rb +285 -0
  46. data/lib/caruby/domain/uniquify.rb +38 -0
  47. data/lib/caruby/import/annotatable_class.rb +28 -0
  48. data/lib/caruby/import/annotation_class.rb +27 -0
  49. data/lib/caruby/import/annotation_module.rb +67 -0
  50. data/lib/caruby/import/java.rb +338 -0
  51. data/lib/caruby/migration/migratable.rb +167 -0
  52. data/lib/caruby/migration/migrator.rb +533 -0
  53. data/lib/caruby/migration/resource.rb +8 -0
  54. data/lib/caruby/migration/resource_module.rb +11 -0
  55. data/lib/caruby/migration/uniquify.rb +20 -0
  56. data/lib/caruby/resource.rb +969 -0
  57. data/lib/caruby/util/attribute_path.rb +46 -0
  58. data/lib/caruby/util/cache.rb +53 -0
  59. data/lib/caruby/util/class.rb +99 -0
  60. data/lib/caruby/util/collection.rb +1053 -0
  61. data/lib/caruby/util/controlled_value.rb +35 -0
  62. data/lib/caruby/util/coordinate.rb +75 -0
  63. data/lib/caruby/util/domain_extent.rb +49 -0
  64. data/lib/caruby/util/file_separator.rb +65 -0
  65. data/lib/caruby/util/inflector.rb +20 -0
  66. data/lib/caruby/util/log.rb +95 -0
  67. data/lib/caruby/util/math.rb +12 -0
  68. data/lib/caruby/util/merge.rb +59 -0
  69. data/lib/caruby/util/module.rb +34 -0
  70. data/lib/caruby/util/options.rb +92 -0
  71. data/lib/caruby/util/partial_order.rb +36 -0
  72. data/lib/caruby/util/person.rb +119 -0
  73. data/lib/caruby/util/pretty_print.rb +184 -0
  74. data/lib/caruby/util/properties.rb +112 -0
  75. data/lib/caruby/util/stopwatch.rb +66 -0
  76. data/lib/caruby/util/topological_sync_enumerator.rb +53 -0
  77. data/lib/caruby/util/transitive_closure.rb +45 -0
  78. data/lib/caruby/util/tree.rb +48 -0
  79. data/lib/caruby/util/trie.rb +37 -0
  80. data/lib/caruby/util/uniquifier.rb +30 -0
  81. data/lib/caruby/util/validation.rb +48 -0
  82. data/lib/caruby/util/version.rb +56 -0
  83. data/lib/caruby/util/visitor.rb +351 -0
  84. data/lib/caruby/util/weak_hash.rb +36 -0
  85. data/lib/caruby/version.rb +3 -0
  86. metadata +186 -0
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ === 1.4.1 / 2010-11-23
2
+
3
+ * Initial public release
4
+
data/LEGAL ADDED
@@ -0,0 +1,5 @@
1
+ LEGAL NOTICE INFORMATION
2
+ ------------------------
3
+
4
+ All the files in this distribution are covered under either the MIT
5
+ license (see the file LICENSE).
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2010 Oregon Health & Science University Knight Cancer Institute
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ caRuby: Simplifying caBIG(TM)
2
+ =============================
3
+
4
+ **Home**: [http://caruby.rubyforge.com](http://caruby.rubyforge.com)
5
+ **Git**: [http://github.com/caruby/core](http://github.com/caruby/core)
6
+ **Author**: OHSU Knight Cancer Institute
7
+ **Copyright**: 2010
8
+ **License**: MIT License
9
+ **Latest Version**: 1.4.1
10
+ **Release Date**: November 23rd 2010
11
+
12
+ Synopsis
13
+ --------
14
+
15
+ caRuby presents a JRuby facade that simplifies interaction with caBIG applications.
16
+
17
+ Feature List
18
+ ------------
19
+
20
+ 1. caCORE API wrapper.
21
+
22
+ 2. Resolves persistence dependencies.
23
+
24
+ 3. Enforces inverse association integrity.
25
+
26
+ 4. Run-time declaration of defaults.
27
+
28
+ 5. Client-side create validation.
29
+
30
+ Installing
31
+ ----------
32
+ caRuby is installed automatically when an application gem, e.g. caruby-tissue,
33
+ is installed.
34
+
35
+ Usage
36
+ -----
37
+
38
+ See the project [http://caruby.rubyforge.com](Home) Page for usage examples.
39
+
40
+ Changelog
41
+ ---------
42
+
43
+ - **November 23, 2010**: 1.4.1 release
44
+ - Initial public release
45
+
46
+ Copyright
47
+ ---------
48
+
49
+ caRuby © 2010 by [Oregon Health & Science University](mailto:loneyf@ohsu.edu).
50
+ caRuby is licensed under the MIT license. Please see the LICENSE and LEGAL
51
+ files for more information.
@@ -0,0 +1 @@
1
+
- ---------------------------------------------- */
1
- ---------------------------------------------- */
2
- ---------------------------------------------- */
3
- ---------------------------------------------- */
4
- ----------------------------------------------- */
Binary file
Binary file
Binary file
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
6
+ <meta name="author" content="Fred Loney, OHSU" />
7
+ <meta name="keywords" content="caRuby, caBIG, caSmall, Ruby, JRuby" />
8
+ <meta name="description" content="caRuby landing page." />
9
+ <meta name="robots" content="all" />
10
+ <title>caRuby: caBIG Simplified</title>
11
+
12
+ <!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
13
+ <script type="text/javascript"></script>
14
+
15
+ <style type="text/css" title="currentStyle" media="screen">
16
+ @import "/css/site.css";
17
+ </style>
18
+ <link rel='stylesheet' href='css/site.css' type='text/css' media="screen, projection">
19
+ <link rel="Shortcut Icon" href="images/favicon.ico" />
20
+ </head>
21
+
22
+ <body id="caruby">
23
+
24
+ <div id="container">
25
+ <div id="head">
26
+ <h1><a href="index.html">caRuby:</a></h1>
27
+ <h2><a href="http://cabig.nci.nih.gov">caBIG&reg;</a> Simplified</h2>
28
+ <ul>
29
+ <li><span class="currentPage">Home</li>
30
+ <li><a href='quick_start.html'><em>Quick Start</em></a></li>
31
+ <li><a href='http://caruby.tenderapp.com/'>Help</a></li>
32
+ <li><a href='http://github.com/caruby'>Source</a></li>
33
+ <li><a href='/about.html'>About</a></li>
34
+ </ul>
35
+ <img src="images/logo.png"/>
36
+ </div>
37
+
38
+ <div id="features">
39
+ <h3>Features</h3>
40
+ <ul>
41
+ <li><a href="/api.html">API</a></li>
42
+ <li><a href="/tissue.html">Tissue</a></li>
43
+ <li><a href="/migrator.html">Migrator</a></li>
44
+ <li><a href="/casmall.html">caSmall</a></li>
45
+ </ul>
46
+ </div>
47
+
48
+ <div id="supportingText">
49
+ <h3>Overview</h3>
50
+ <p>
51
+ caRuby simplifies interaction with <a href="http://cabig.nci.nih.gov">caBIG&reg;</a> application
52
+ services. caRuby presents a <a href="http://jruby.org">JRuby</a> caBIG fa&ccedil;ade that
53
+ supports the following uses:
54
+ <ul>
55
+ <li>Migration from legacy systems</li>
56
+ <li>Incremental update from source applications</li>
57
+ <li>Extract from a caBIG database</li>
58
+ <li>Utility administrative tasks</li>
59
+ <li>Workflow data transformations</li>
60
+ <li>Lightweight web services</li>
61
+ <li>Site-specific user interfaces</li>
62
+ </ul>
63
+ </p>
64
+ <h3>Getting Started</h3>
65
+ <p>
66
+ <ol>
67
+ <li>Peruse the <strong>Features</strong> to see what caRuby offers.</li>
68
+ <li>Follow the <a href='/quick_start.html'>Quick Start</a> instructions to install caRuby.</li>
69
+ <li>Consult the <a href='/faq.html'>FAQ</a> for usage tips.</li>
70
+ <li>Visit caRuby <a href='http://caruby.tenderapp.com/'>Support</a> if you run into a problem.</li>
71
+ <li><a href='/contribute.html'>Contribute</a> a solution if you're feeling ambitious!</li>
72
+ <li><a href='mailto:caruby.org@gmail.com'>Let us know</a> what you think.</li>
73
+ </ol>
74
+ </p>
75
+
76
+ <div id="footer">
77
+ </div>
78
+ </div>
79
+ </div>
80
+
81
+ </body>
82
+ </html>
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
6
+ <meta name="author" content="Fred Loney, OHSU" />
7
+ <meta name="keywords" content="caRuby" />
8
+ <meta name="description" content="caRuby Quick Start page." />
9
+ <meta name="robots" content="all" />
10
+ <title>caRuby: Installation</title>
11
+
12
+ <!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
13
+ <script type="text/javascript"></script>
14
+
15
+ <style type="text/css" title="currentStyle" media="screen">
16
+ @import "/css/site.css";
17
+ </style>
18
+ <link rel='stylesheet' href='css/site.css' type='text/css' media="screen, projection">
19
+ <link rel="Shortcut Icon" href="images/favicon.ico" />
20
+ </head>
21
+
22
+ <body id="quick_start">
23
+
24
+ <div id="container">
25
+ <div id="head">
26
+ <h1><a href="index.html">caRuby:</a></h1>
27
+ <h2><a href="http://cabig.nci.nih.gov">caBIG&reg;</a> Simplified</h2>
28
+ <ul>
29
+ <li><a href="/index.html">Home</a></li>
30
+ <li><span class="currentPage"><em>Quick Start</em></li>
31
+ <li><a href='http://caruby.tenderapp.com/'>Help</a></li>
32
+ <li><a href='http://github.com/caruby'>Source</a></li>
33
+ <li><a href='/about.html'>About</a></li>
34
+ </ul>
35
+ <img src="images/logo.png"/>
36
+ </div>
37
+
38
+ <div id="features">
39
+ <h3>Features</h3>
40
+ <ul>
41
+ <li><a href="/api.html">API</a></li>
42
+ <li><a href="/tissue.html">Tissue</a></li>
43
+ <li><a href="/migrator.html">Migrator</a></li>
44
+ <li><a href="/casmall.html">caSmall</a></li>
45
+ </ul>
46
+ </div>
47
+
48
+ <div id="supportingText">
49
+ <p>
50
+ Each caRuby <a href="/components.html">component</a> is packaged as a standard Ruby <a href="http://docs.rubygems.org/shelf/index">gem</a>.
51
+ Once you've installed <a href="http://jruby.org">JRuby</a> and the target caBIG application API, installing a caRuby gem is done with a one-line
52
+ command. caRuby runs on any on any workstation or server that supports the target caBIG application Java API.
53
+ Set up a caRuby environment as follows:
54
+ <ol>
55
+ <li>Install the target caBIG application Java API client.
56
+ Consult the caBIG application Technical Guide for details, available from the caBIG application
57
+ <a href="https://cabig-kc.nci.nih.gov/MediaWiki/index.php/Knowledge_Center_Index">Knowledge Center</a>.
58
+ </li>
59
+ <li>Install <a href="http://jruby.org">JRuby</a>.</li>
60
+ <li>Open a command console and enter the following:
61
+ <pre>
62
+ gem install rubygems
63
+ </pre>
64
+ </li>
65
+ </ol>
66
+ </p>
67
+ <p>
68
+ The preceding steps set up a standard JRuby environment. Now the desired caRuby gem is installed using the <code>gem install</code> command, e.g.:
69
+ <pre>
70
+ gem install caruby-tissue
71
+ </pre>
72
+ </p>
73
+ <p>
74
+ and updated using the <code>gem update</code> command, e.g.:
75
+ <pre>
76
+ gem update caruby-tissue
77
+ </pre>
78
+ </p>
79
+ <p>The caRuby gem is now ready for use. Consult the gem <a href="/documentation.html">documentation</a> for usage and examples.
80
+ </p>
81
+ <div id="footer">
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ </body>
87
+ </html>
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
6
+ <meta name="author" content="Fred Loney, OHSU" />
7
+ <meta name="keywords" content="caRuby" />
8
+ <meta name="description" content="caRuby Quick Start page." />
9
+ <meta name="robots" content="all" />
10
+ <title>caRuby: Quick Start</title>
11
+
12
+ <!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
13
+ <script type="text/javascript"></script>
14
+
15
+ <style type="text/css" title="currentStyle" media="screen">
16
+ @import "/css/site.css";
17
+ </style>
18
+ <link rel='stylesheet' href='css/site.css' type='text/css' media="screen, projection">
19
+ <link rel="Shortcut Icon" href="images/favicon.ico" />
20
+ </head>
21
+
22
+ <body id="quick_start">
23
+
24
+ <div id="container">
25
+ <div id="head">
26
+ <h1><a href="index.html">caRuby:</a></h1>
27
+ <h2><a href="http://cabig.nci.nih.gov">caBIG&reg;</a> Simplified</h2>
28
+ <ul>
29
+ <li><a href="/index.html">Home</a></li>
30
+ <li><span class="currentPage"><em>Quick Start</em></li>
31
+ <li><a href='http://caruby.tenderapp.com/'>Help</a></li>
32
+ <li><a href='http://github.com/caruby'>Source</a></li>
33
+ <li><a href='/about.html'>About</a></li>
34
+ </ul>
35
+ <img src="images/logo.png"/>
36
+ </div>
37
+
38
+ <div id="features">
39
+ <h3>Features</h3>
40
+ <ul>
41
+ <li><a href="/api.html">API</a></li>
42
+ <li><a href="/tissue.html">Tissue</a></li>
43
+ <li><a href="/migrator.html">Migrator</a></li>
44
+ <li><a href="/casmall.html">caSmall</a></li>
45
+ </ul>
46
+ </div>
47
+
48
+ <div id="supportingText">
49
+ <p>
50
+ Each caRuby <a href="/components.html">component</a> is packaged as a standard Ruby <a href="http://docs.rubygems.org/shelf/index">gem</a>.
51
+ Once you've installed <a href="http://jruby.org">JRuby</a> and the target caBIG application API, installing a caRuby gem is done with a one-line
52
+ command. caRuby runs on any on any workstation or server that supports the target caBIG application Java API.
53
+ Set up a caRuby environment as follows:
54
+ <ol>
55
+ <li>Install the target caBIG application Java API client.
56
+ Consult the caBIG application Technical Guide for details, available from the caBIG application
57
+ <a href="https://cabig-kc.nci.nih.gov/MediaWiki/index.php/Knowledge_Center_Index">Knowledge Center</a>.
58
+ </li>
59
+ <li>Install <a href="http://jruby.org">JRuby</a>.</li>
60
+ <li>Open a command console and enter the following:
61
+ <pre>
62
+ gem install rubygems
63
+ </pre>
64
+ </li>
65
+ </ol>
66
+ </p>
67
+ <p>
68
+ The preceding steps set up a standard JRuby environment. Now the desired caRuby gem is installed using the <code>gem install</code> command, e.g.:
69
+ <pre>
70
+ gem install caruby-tissue
71
+ </pre>
72
+ </p>
73
+ <p>
74
+ and updated using the <code>gem update</code> command, e.g.:
75
+ <pre>
76
+ gem update caruby-tissue
77
+ </pre>
78
+ </p>
79
+ <p>The caRuby gem is now ready for use. Consult the gem <a href="/documentation.html">documentation</a> for usage and examples.
80
+ </p>
81
+ <div id="footer">
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ </body>
87
+ </html>
@@ -0,0 +1,85 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
6
+ <meta name="author" content="Fred Loney, OHSU" />
7
+ <meta name="keywords" content="caRuby, caTissue" />
8
+ <meta name="description" content="caRuby Tissue page." />
9
+ <meta name="robots" content="all" />
10
+ <title>caRuby: Quick Start</title>
11
+
12
+ <!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
13
+ <script type="text/javascript"></script>
14
+
15
+ <style type="text/css" title="currentStyle" media="screen">
16
+ @import "/css/site.css";
17
+ </style>
18
+ <link rel='stylesheet' href='css/site.css' type='text/css' media="screen, projection">
19
+ <link rel="Shortcut Icon" href="images/favicon.ico" />
20
+ </head>
21
+
22
+ <body id="tissue">
23
+
24
+ <div id="container">
25
+ <div id="head">
26
+ <h1><a href="index.html">caRuby:</a></h1>
27
+ <h2>Tissue</h2>
28
+ <ul>
29
+ <li><a href='quick_start.html'><em>Quick Start</em></a></li>
30
+ <li><a href='faq.html'>FAQ</a></li>
31
+ <li><a href='http://caruby.tenderapp.com/'>Help</a></li>
32
+ <li><a href='contribute.html'>Contribute</a></li>
33
+ <li><a href='about.html'>About</a></li>
34
+ </ul>
35
+ <img src="images/logo.png"/>
36
+ </div>
37
+
38
+ <div id="supportingText">
39
+ <p>
40
+ The caRuby Tissue component applies the caRuby facade to the
41
+ <a href="https://cabig-kc.nci.nih.gov/Biospecimen/KC/index.php/CaTissue_Suite">caTissue</a>
42
+ application. This offers the following features:
43
+ <ul>
44
+ <li>flexible server interaction</li>
45
+ <li>data migration and extraction</li>
46
+ <li>a foundation for a <a href="casmall.html">caSmall</a> framework</li>
47
+ </ul>
48
+ </p>
49
+ <p>
50
+ Since the caRuby Tissue component is built on the caTissue API, all of the caTissue business logic applies.
51
+ In addition, caRuby augments the API as follows:
52
+ <ul>
53
+ <li>supplies default attribute values</li>
54
+ <li>validates mandatory attributes before submission to caTissue</li>
55
+ <li>validates additional attributes which are permitted by the caTissue API but corrupt the database</li>
56
+ <li>migrates an input CSV record to a caTissue object based on one simple configuration file</li>
57
+ <li>validates migration input diagnosis and tissue site permissible values</li>
58
+ <li>optionally maps diagnosis and tissue site migration input values to caTissue permissible values</li>
59
+ <li>determines how to save the caTissue object based on the caTissue object model</li>
60
+ <li>finds referenced objects based on secondary keys and alternative search strategies</li>
61
+ <li>creates whatever needs to be created in the required order based on the data model associations</li>
62
+ <li>works around caCORE and caTissue bugs and traps</li>
63
+ <li>provides helper methods for common tasks, e.g. aliquoting</li>
64
+ </ul>
65
+ </p>
66
+ <p>
67
+ The sole configuration is the migration mapping file and a small caTissue server access properties file.
68
+ The defaults and other metadata are defined in Ruby declarations rather than a configuration.
69
+ These declarations express basic model characteristics, and are expected to be stable and sufficient for most uses.
70
+ They can, however, be modified in small Ruby shim files.
71
+ Special-purpose migration code can be added in the shim files as well, as described in the
72
+ <a href='shims.html'>Shims</a> description.
73
+ </p>
74
+ <p>
75
+ There is almost no class-specific caRuby business logic code similar to that found in caTissue.
76
+ Rather, there are basic design patterns driven by the model characteristics defined in the Ruby declarations.
77
+ </p>
78
+ <div id="footer">
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ </body>
84
+ </html>
85
+