caruby-core 1.4.7 → 1.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. data/History.txt +11 -0
  2. data/README.md +1 -1
  3. data/lib/caruby/cli/command.rb +27 -3
  4. data/lib/caruby/csv/csv_mapper.rb +2 -0
  5. data/lib/caruby/csv/csvio.rb +187 -169
  6. data/lib/caruby/database.rb +33 -16
  7. data/lib/caruby/database/lazy_loader.rb +23 -23
  8. data/lib/caruby/database/persistable.rb +32 -18
  9. data/lib/caruby/database/persistence_service.rb +20 -7
  10. data/lib/caruby/database/reader.rb +22 -21
  11. data/lib/caruby/database/search_template_builder.rb +7 -9
  12. data/lib/caruby/database/sql_executor.rb +52 -27
  13. data/lib/caruby/database/store_template_builder.rb +18 -13
  14. data/lib/caruby/database/writer.rb +107 -44
  15. data/lib/caruby/domain/attribute_metadata.rb +35 -25
  16. data/lib/caruby/domain/java_attribute_metadata.rb +43 -20
  17. data/lib/caruby/domain/merge.rb +9 -5
  18. data/lib/caruby/domain/reference_visitor.rb +4 -3
  19. data/lib/caruby/domain/resource_attributes.rb +52 -12
  20. data/lib/caruby/domain/resource_dependency.rb +129 -42
  21. data/lib/caruby/domain/resource_introspection.rb +1 -1
  22. data/lib/caruby/domain/resource_inverse.rb +20 -3
  23. data/lib/caruby/domain/resource_metadata.rb +20 -4
  24. data/lib/caruby/domain/resource_module.rb +190 -124
  25. data/lib/caruby/import/java.rb +39 -19
  26. data/lib/caruby/migration/migratable.rb +31 -6
  27. data/lib/caruby/migration/migrator.rb +126 -40
  28. data/lib/caruby/migration/uniquify.rb +0 -1
  29. data/lib/caruby/resource.rb +28 -5
  30. data/lib/caruby/util/attribute_path.rb +0 -2
  31. data/lib/caruby/util/class.rb +8 -5
  32. data/lib/caruby/util/collection.rb +5 -3
  33. data/lib/caruby/util/domain_extent.rb +0 -3
  34. data/lib/caruby/util/options.rb +10 -9
  35. data/lib/caruby/util/person.rb +41 -12
  36. data/lib/caruby/util/pretty_print.rb +1 -1
  37. data/lib/caruby/util/validation.rb +0 -28
  38. data/lib/caruby/version.rb +1 -1
  39. data/test/lib/caruby/import/java_test.rb +26 -9
  40. data/test/lib/caruby/migration/test_case.rb +103 -0
  41. data/test/lib/caruby/test_case.rb +231 -0
  42. data/test/lib/caruby/util/class_test.rb +2 -2
  43. data/test/lib/caruby/util/visitor_test.rb +3 -2
  44. data/test/lib/examples/galena/clinical_trials/migration/participant_test.rb +28 -0
  45. data/test/lib/examples/galena/clinical_trials/migration/test_case.rb +40 -0
  46. metadata +195 -170
  47. data/lib/caruby/domain/attribute_initializer.rb +0 -16
  48. data/test/lib/caruby/util/validation_test.rb +0 -14
@@ -0,0 +1,231 @@
1
+ $:.unshift '../caruby/lib'
2
+
3
+ # open the logger
4
+ LOG_FILE = 'test/results/log/catissue.log' unless defined?(LOG_FILE)
5
+ require 'caruby/util/log' and
6
+ CaRuby::Log.instance.open(LOG_FILE, :shift_age => 10, :shift_size => 1048576, :debug => true)
7
+
8
+ require 'caruby'
9
+
10
+ module CaRuby
11
+ module TestCase
12
+ attr_reader :database
13
+
14
+ def setup(database=nil)
15
+ super()
16
+ logger.info("Testing #{name}...")
17
+ @database = database
18
+ end
19
+
20
+ def teardown
21
+ super
22
+ @database.close if @database
23
+ logger.info("Test #{name} completed.")
24
+ end
25
+
26
+ def defaults
27
+ @defaults ||= CaTissueTest.defaults.uniquify
28
+ end
29
+
30
+ # Tests the domain object +add_defaults_local+ method.
31
+ # Subclasses are responsible for setting every attribute that is a pre-condition for default value initialization.
32
+ def verify_defaults(subject)
33
+ subject.add_defaults
34
+ msg = "#{subject.qp} with default attributes fails validation"
35
+ assert_nothing_raised(ValidationError, msg) { subject.validate }
36
+ end
37
+
38
+ # Tests saving the subject. Calls {Database#save} on the subject and verifies that subject and its
39
+ # references were persisted.
40
+ #
41
+ # @param [Resource] subject the object to save
42
+ def verify_save(subject)
43
+ logger.debug{ "Verifying #{subject.qp} save with content:\n#{dump(subject)}" }
44
+ # capture the save operation time
45
+ @database.clear
46
+ st = Stopwatch.measure { @database.open { |db| db.save(subject) } }.elapsed
47
+ # the database execution time
48
+ dt = @database.execution_time
49
+ logger.debug { "#{subject.qp} save took #{'%.2f' % st} seconds, of which #{'%.2f' % dt} were database operations." }
50
+ verify_saved(subject)
51
+ end
52
+
53
+ # Verifies that the given subject and its references were persisted.
54
+ #
55
+ # @param [Resource] subject the saved object to verify
56
+ def verify_saved(subject)
57
+ logger.debug { "Verifying saved content of #{subject}..." }
58
+ subject.dependent? ? verify_saved_dependent(subject) : verify_saved_independent(subject)
59
+ logger.debug { "Verified saved content of #{subject}." }
60
+ end
61
+
62
+ # Tests a query on the given template.
63
+ # The block given to this method is called on the query result.
64
+ def verify_query(template, *path) # :yields: result
65
+ yield database.query(template, *path)
66
+ end
67
+
68
+ # Returns the Ruby date as determined by setting a Java Date property.
69
+ def date(year, month, day)
70
+ jdate = java.util.Calendar.instance
71
+ jdate.clear
72
+ jdate.set(year, month - 1, day)
73
+ jdate.time.to_ruby_date
74
+ end
75
+
76
+ private
77
+
78
+ def dump(obj)
79
+ @database.lazy_loader.suspend { obj.dump }
80
+ end
81
+
82
+ # @param (see #mock_storable_template)
83
+ # @return (see #mock_storable_template)
84
+ def mock_create_template(obj)
85
+ mock_storable_template(obj) { |ref| ref.class.creatable_domain_attributes }
86
+ end
87
+
88
+ # @param (see #mock_storable_template)
89
+ # @return (see #mock_storable_template)
90
+ def mock_update_template(obj)
91
+ mock_storable_template(obj) { |ref| ref.class.updatable_domain_attributes }
92
+ end
93
+
94
+ # @param [Resource] obj the domain object to "save"
95
+ # @return [Resource] the template to use in the save operation
96
+ # @yield [ref] the storable attributes
97
+ # @yieldparam [Resource] ref the domain object to "save"
98
+ def mock_storable_template(obj, &selector)
99
+ # add fake identifiers to prerequisite references
100
+ obj.class.storable_prerequisite_attributes.each do |attr|
101
+ obj.send(attr).enumerate { |ref| ref.identifier = 1 }
102
+ end
103
+ # the template builder
104
+ bldr = CaRuby::StoreTemplateBuilder.new(@database, &selector)
105
+ # the save template
106
+ bldr.build_template(obj)
107
+ end
108
+
109
+ def verify_saved_dependent(dependent)
110
+ verify_dependency(dependent)
111
+ verify_saved_content(dependent)
112
+ end
113
+
114
+ def verify_dependency(dependent)
115
+ return if dependent.class.owner_attribute.nil?
116
+ # kludge for annotation proxy nonsense (cf. Annotation#owner)
117
+ ownr = Annotation === dependent ? (dependent.hook or dependent.owner) : dependent.owner
118
+ assert_not_nil(ownr, "Owner missing for dependent: #{dependent}")
119
+ attribute = ownr.class.dependent_attribute(dependent.class)
120
+ assert_not_nil(attribute, "Dependent attribute missing for #{dependent} owner #{ownr}")
121
+ # a dependent collection reference must be refetched
122
+ if ownr.class.collection_attribute?(attribute) then
123
+ verify_saved_dependent_collection_member(dependent, ownr, attribute)
124
+ else
125
+ assert_not_nil(dependent.identifier, "Stored dependent #{dependent} identifier is not set")
126
+ end
127
+ end
128
+
129
+ # Verifies that the given dependent has an identifier and that the given owner dependent attribute value
130
+ # contains the dependent.
131
+ #
132
+ # JRuby alert - Set include? incorrectly returns false in the OHSU PSR samples_test test_save_grade
133
+ # call to this method. Work around by using Set detect rather than include?.
134
+ def verify_saved_dependent_collection_member(dependent, owner, attribute)
135
+ deps = owner.send(attribute)
136
+ assert(deps.detect { |dep| dep == dependent }, "Owner #{owner.qp} #{attribute} value #{deps.pp_s} does not contain #{dependent}")
137
+ assert_not_nil(dependent.identifier, "Identifier not set for stored owner #{owner.qp} #{attribute} dependent collection member #{dependent}")
138
+ end
139
+
140
+ # Verifies the subject stored content.
141
+ def verify_saved_independent(subject)
142
+ subject_id = subject.identifier
143
+ assert_not_nil(subject_id, "#{subject.class.qp} identifier not set")
144
+ verify_saved_content(subject)
145
+ end
146
+
147
+ # Verifies that the given subject matches the database content. Does not verify subject unless it has
148
+ # a secondary key.
149
+ def verify_saved_content(subject)
150
+ attrs = subject.class.secondary_key_attributes
151
+ return if attrs.empty?
152
+ rqd = attrs & subject.class.mandatory_attributes
153
+ missing = rqd.reject { |attr| subject.send(attr) }
154
+ assert(missing.empty?, "#{subject} is missing values for secondary key attributes #{missing.to_series}")
155
+ # make a secondary key search template
156
+ vh = attrs.to_compact_hash do |attr|
157
+ v = subject.send(attr)
158
+ Resource === v ? v.copy : v
159
+ end
160
+ tmpl = subject.class.new(vh)
161
+ # find the template in the database
162
+ logger.debug { "Verifying #{subject.qp} by finding and comparing template #{tmpl.pp_s}..." }
163
+ assert_not_nil(tmpl.find, "#{subject} not found in database")
164
+ # compare the subject to the fetched template
165
+ verify_that_saved_matches_fetched(subject, tmpl)
166
+ end
167
+
168
+ # Verifies that the given expected domain object has the same content as actual,
169
+ # and that the dependents match.
170
+ #
171
+ # caTissue alert - caTissue mutilates an unspecified specimen type available quantity, e.g.
172
+ # changing a Specimen with specimen type 'Not Specified' from available quantity 1, initial
173
+ # quantity 1 to available quantity 0, initial quantity 3 results in available quantity 2
174
+ # in database. The update is necessary when creating the Specimen with available quantity 0,
175
+ # initial quantity 3 to work around a different caTissue bug. Thus, the bug work-around
176
+ # is broken by a different caTissue bug.
177
+ #
178
+ # @param [Resource] expected the saved value
179
+ # @param [Resource] actual the fetched value
180
+ def verify_that_saved_matches_fetched(expected, actual)
181
+ expected.class.saved_nondomain_attributes.each do |attr|
182
+ # TODO - available_quantity broken for spc type Not Specified
183
+ # compare attributes that are fetched and set on create
184
+ attr_md = expected.class.attribute_metadata(attr)
185
+ if verify_saved_attribute?(attr_md) then
186
+ eval = expected.database.lazy_loader.suspend { expected.send(attr) }
187
+ next if eval.nil_or_empty?
188
+ aval = actual.send(attr)
189
+ if eval.nil? then
190
+ assert_nil(aval, "#{expected.qp} was saved without a #{attr} value, but was stored in the database with value #{actual.qp}")
191
+ else
192
+ assert_not_nil(aval, "#{expected.qp} was saved with #{attr} value #{eval.qp}, but this value was not found in the database.")
193
+ if attr == :available_quantity and expected.specimen_type == 'Not Specified' and eval != aval then
194
+ logger.warn("Skipped broken caTissue unspecified specimen type available comparison.")
195
+ else
196
+ assert(CaRuby::Resource.value_equal?(eval, aval), "#{expected.qp} was saved with #{attr} value #{eval.qp} that does not match the database value #{aval.qp}")
197
+ end
198
+ end
199
+ end
200
+ end
201
+ verify_dependents_match(expected, actual)
202
+ end
203
+
204
+ # @param [AttributeMetadata] attr_md the saved attribute to check
205
+ # @return whether the attribute is fetched, creatable and not volatile
206
+ def verify_saved_attribute?(attr_md)
207
+ attr_md.fetched? and attr_md.creatable? and not attr_md.volatile?
208
+ end
209
+
210
+ # Verifies that each expected dependent matches an actual dependent and has the same content.
211
+ def verify_dependents_match(expected, actual)
212
+ expected.class.dependent_attributes.each do |attr|
213
+ edeps = expected.database.lazy_loader.suspend { expected.send(attr) }
214
+ next if edeps.nil_or_empty?
215
+ adeps = actual.send(attr)
216
+ logger.debug { "Verifying #{expected.qp} dependent #{attr} #{edeps.qp} against #{actual.qp} #{adeps.qp}..." } unless edeps.nil_or_empty?
217
+ if edeps.collection? then
218
+ edeps.each do |edep|
219
+ adep = edep.match_in_owner_scope(adeps)
220
+ assert_not_nil(adep, "#{expected} #{attr} dependent #{edep} not found in fetched #{adeps.pp_s}")
221
+ verify_that_saved_matches_fetched(edep, adep)
222
+ end
223
+ else
224
+ edep = edeps; adep = adeps;
225
+ assert_not_nil(adep, "#{expected} #{attr} dependent #{edep} not found in database")
226
+ verify_that_saved_matches_fetched(edep, adep)
227
+ end
228
+ end
229
+ end
230
+ end
231
+ end
@@ -24,8 +24,8 @@ class ClassTest < Test::Unit::TestCase
24
24
  class Person
25
25
  attr_reader :social_security_number
26
26
  attr_accessor :postal_code
27
- define_attribute_alias(:ssn, :social_security_number)
28
- define_attribute_alias(:zip_code, :postal_code)
27
+ alias_attribute(:ssn, :social_security_number)
28
+ alias_attribute(:zip_code, :postal_code)
29
29
  end
30
30
 
31
31
  def test_attribute_alias
@@ -1,6 +1,7 @@
1
1
  $:.unshift 'lib'
2
2
 
3
- require 'generator'
3
+ # JRuby alert - SyncEnumerator moved from generator to REXML in JRuby 1.5
4
+ require 'rexml/document'
4
5
  require "test/unit"
5
6
  require 'caruby/util/collection'
6
7
  require 'caruby/util/visitor'
@@ -101,7 +102,7 @@ class VistorTest < Test::Unit::TestCase
101
102
  child = Node.new(2, p1)
102
103
  p2 = Node.new(3)
103
104
  p2.children << child
104
- result = CaRuby::Visitor.new { |pair| SyncEnumerator.new(pair.first.children, pair.last.children).to_a }.to_enum([p1, p2]).map { |pair| [pair.first.value, pair.last.value] }
105
+ result = CaRuby::Visitor.new { |pair| REXML::SyncEnumerator.new(pair.first.children, pair.last.children).to_a }.to_enum([p1, p2]).map { |pair| [pair.first.value, pair.last.value] }
105
106
  assert_equal([[1, 3], [2, 2]], result.to_a, "Collection visit result incorrect")
106
107
  end
107
108
 
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), 'test_case')
2
+
3
+ # Tests the ClinicalTrials example migration.
4
+ module Galena
5
+ module ClinicalTrials
6
+ class ParticipantMigrationTest < Test::Unit::TestCase
7
+ include MigrationTestCase
8
+
9
+ def test_target
10
+ verify_target(:participant, :target => ClinicalTrials::Participant) do |pnt|
11
+ assert_not_nil(pnt.ssn, "Missing SSN")
12
+ end
13
+ end
14
+
15
+ def test_filter
16
+ verify_target(:participant, :target => ClinicalTrials::Participant, :input => FILTER_DATA, :shims => [FILTER_SHIMS]) do |pnt|
17
+ assert_not_nil(pnt.ssn, "Missing SSN")
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ FILTER_DATA = 'examples/galena/data/filter.csv'
24
+
25
+ FILTER_SHIMS = 'examples/galena/lib/galena/migration/filter_shims.rb'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,40 @@
1
+ $:.unshift 'examples/clinical_trials/lib'
2
+
3
+ require 'test/lib/caruby/migration/test_case'
4
+ require 'clinical_trials'
5
+
6
+ # Tests the ClinicalTrials example migration.
7
+ module Galena
8
+ module ClinicalTrials
9
+ module MigrationTestCase
10
+ include CaRuby::MigrationTestCase
11
+
12
+ # The migration input data directory.
13
+ FIXTURES = 'examples/galena/data'
14
+
15
+ # The migration input data directory.
16
+ SHIMS = 'examples/galena/lib/galena/migration'
17
+
18
+ # The migration configuration directory.
19
+ CONFIGS = 'examples/galena/conf/migration'
20
+
21
+ def setup
22
+ super(FIXTURES)
23
+ end
24
+
25
+ # Adds the +:target+, +:mapping+ and +:shims+ to the options and delegates
26
+ # to the superclass.
27
+ #
28
+ # @see {CaTissue::MigrationTestCase#create_migrator}
29
+ def create_migrator(fixture, opts={})
30
+ opts[:mapping] ||= File.join(CONFIGS, "#{fixture}_fields.yaml")
31
+ shims = File.join(SHIMS, "#{fixture}_shims.rb")
32
+ if File.exists?(shims) then
33
+ sopt = opts[:shims] ||= []
34
+ sopt << shims
35
+ end
36
+ super
37
+ end
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,62 +1,79 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caruby-core
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.4.7
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 4
9
+ - 9
10
+ version: 1.4.9
6
11
  platform: ruby
7
12
  authors:
8
- - OHSU
13
+ - OHSU
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-03-04 00:00:00 -08:00
18
+ date: 2011-05-09 00:00:00 -07:00
14
19
  default_executable:
15
20
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: dbi
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
25
- type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: dbd-jdbc
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
36
- type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: fastercsv
40
- prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
47
- type: :runtime
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: uom
51
- prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
58
- type: :runtime
59
- version_requirements: *id004
21
+ - !ruby/object:Gem::Dependency
22
+ name: dbi
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: dbd-jdbc
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: fastercsv
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: uom
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :runtime
76
+ version_requirements: *id004
60
77
  description: " caRuby is a JRuby facade for interaction with caBIG applications.\n"
61
78
  email: caruby.org@gmail.com
62
79
  executables: []
@@ -66,142 +83,150 @@ extensions: []
66
83
  extra_rdoc_files: []
67
84
 
68
85
  files:
69
- - lib/caruby.rb
70
- - lib/caruby/database.rb
71
- - lib/caruby/resource.rb
72
- - lib/caruby/version.rb
73
- - lib/caruby/active_support/inflections.rb
74
- - lib/caruby/active_support/inflector.rb
75
- - lib/caruby/active_support/README.txt
76
- - lib/caruby/active_support/core_ext/string.rb
77
- - lib/caruby/active_support/core_ext/string/inflections.rb
78
- - lib/caruby/cli/application.rb
79
- - lib/caruby/cli/command.rb
80
- - lib/caruby/csv/csv_mapper.rb
81
- - lib/caruby/csv/csvio.rb
82
- - lib/caruby/database/fetched_matcher.rb
83
- - lib/caruby/database/lazy_loader.rb
84
- - lib/caruby/database/persistable.rb
85
- - lib/caruby/database/persistence_service.rb
86
- - lib/caruby/database/persistifier.rb
87
- - lib/caruby/database/reader.rb
88
- - lib/caruby/database/saved_matcher.rb
89
- - lib/caruby/database/search_template_builder.rb
90
- - lib/caruby/database/sql_executor.rb
91
- - lib/caruby/database/store_template_builder.rb
92
- - lib/caruby/database/writer.rb
93
- - lib/caruby/domain/attribute_initializer.rb
94
- - lib/caruby/domain/attribute_metadata.rb
95
- - lib/caruby/domain/id_alias.rb
96
- - lib/caruby/domain/inversible.rb
97
- - lib/caruby/domain/java_attribute_metadata.rb
98
- - lib/caruby/domain/merge.rb
99
- - lib/caruby/domain/properties.rb
100
- - lib/caruby/domain/reference_visitor.rb
101
- - lib/caruby/domain/resource_attributes.rb
102
- - lib/caruby/domain/resource_dependency.rb
103
- - lib/caruby/domain/resource_introspection.rb
104
- - lib/caruby/domain/resource_inverse.rb
105
- - lib/caruby/domain/resource_metadata.rb
106
- - lib/caruby/domain/resource_module.rb
107
- - lib/caruby/domain/uniquify.rb
108
- - lib/caruby/import/java.rb
109
- - lib/caruby/migration/migratable.rb
110
- - lib/caruby/migration/migrator.rb
111
- - lib/caruby/migration/resource_module.rb
112
- - lib/caruby/migration/uniquify.rb
113
- - lib/caruby/util/attribute_path.rb
114
- - lib/caruby/util/cache.rb
115
- - lib/caruby/util/class.rb
116
- - lib/caruby/util/collection.rb
117
- - lib/caruby/util/controlled_value.rb
118
- - lib/caruby/util/coordinate.rb
119
- - lib/caruby/util/domain_extent.rb
120
- - lib/caruby/util/file_separator.rb
121
- - lib/caruby/util/inflector.rb
122
- - lib/caruby/util/log.rb
123
- - lib/caruby/util/math.rb
124
- - lib/caruby/util/merge.rb
125
- - lib/caruby/util/module.rb
126
- - lib/caruby/util/options.rb
127
- - lib/caruby/util/partial_order.rb
128
- - lib/caruby/util/person.rb
129
- - lib/caruby/util/pretty_print.rb
130
- - lib/caruby/util/properties.rb
131
- - lib/caruby/util/roman.rb
132
- - lib/caruby/util/stopwatch.rb
133
- - lib/caruby/util/topological_sync_enumerator.rb
134
- - lib/caruby/util/transitive_closure.rb
135
- - lib/caruby/util/tree.rb
136
- - lib/caruby/util/trie.rb
137
- - lib/caruby/util/uniquifier.rb
138
- - lib/caruby/util/validation.rb
139
- - lib/caruby/util/version.rb
140
- - lib/caruby/util/visitor.rb
141
- - lib/caruby/util/weak_hash.rb
142
- - lib/caruby/yard/resource_metadata_handler.rb
143
- - test/lib/caruby/csv/csv_mapper_test.rb
144
- - test/lib/caruby/csv/csvio_test.rb
145
- - test/lib/caruby/database/persistable_test.rb
146
- - test/lib/caruby/domain/domain_test.rb
147
- - test/lib/caruby/domain/inversible_test.rb
148
- - test/lib/caruby/domain/reference_visitor_test.rb
149
- - test/lib/caruby/import/java_test.rb
150
- - test/lib/caruby/util/cache_test.rb
151
- - test/lib/caruby/util/class_test.rb
152
- - test/lib/caruby/util/collection_test.rb
153
- - test/lib/caruby/util/command_test.rb
154
- - test/lib/caruby/util/controlled_value_test.rb
155
- - test/lib/caruby/util/domain_extent_test.rb
156
- - test/lib/caruby/util/file_separator_test.rb
157
- - test/lib/caruby/util/inflector_test.rb
158
- - test/lib/caruby/util/lazy_hash_test.rb
159
- - test/lib/caruby/util/merge_test.rb
160
- - test/lib/caruby/util/module_test.rb
161
- - test/lib/caruby/util/options_test.rb
162
- - test/lib/caruby/util/partial_order_test.rb
163
- - test/lib/caruby/util/person_test.rb
164
- - test/lib/caruby/util/pretty_print_test.rb
165
- - test/lib/caruby/util/properties_test.rb
166
- - test/lib/caruby/util/roman_test.rb
167
- - test/lib/caruby/util/stopwatch_test.rb
168
- - test/lib/caruby/util/topological_sync_enumerator_test.rb
169
- - test/lib/caruby/util/transitive_closure_test.rb
170
- - test/lib/caruby/util/tree_test.rb
171
- - test/lib/caruby/util/trie_test.rb
172
- - test/lib/caruby/util/validation_test.rb
173
- - test/lib/caruby/util/version_test.rb
174
- - test/lib/caruby/util/visitor_test.rb
175
- - test/lib/caruby/util/weak_hash_test.rb
176
- - History.txt
177
- - LEGAL
178
- - LICENSE
179
- - README.md
180
- has_rdoc: true
181
- homepage: http://rubyforge.org/projects/caruby
86
+ - lib/caruby/active_support/core_ext/string/inflections.rb
87
+ - lib/caruby/active_support/core_ext/string.rb
88
+ - lib/caruby/active_support/inflections.rb
89
+ - lib/caruby/active_support/inflector.rb
90
+ - lib/caruby/active_support/README.txt
91
+ - lib/caruby/cli/application.rb
92
+ - lib/caruby/cli/command.rb
93
+ - lib/caruby/csv/csv_mapper.rb
94
+ - lib/caruby/csv/csvio.rb
95
+ - lib/caruby/database/fetched_matcher.rb
96
+ - lib/caruby/database/lazy_loader.rb
97
+ - lib/caruby/database/persistable.rb
98
+ - lib/caruby/database/persistence_service.rb
99
+ - lib/caruby/database/persistifier.rb
100
+ - lib/caruby/database/reader.rb
101
+ - lib/caruby/database/saved_matcher.rb
102
+ - lib/caruby/database/search_template_builder.rb
103
+ - lib/caruby/database/sql_executor.rb
104
+ - lib/caruby/database/store_template_builder.rb
105
+ - lib/caruby/database/writer.rb
106
+ - lib/caruby/database.rb
107
+ - lib/caruby/domain/attribute_metadata.rb
108
+ - lib/caruby/domain/id_alias.rb
109
+ - lib/caruby/domain/inversible.rb
110
+ - lib/caruby/domain/java_attribute_metadata.rb
111
+ - lib/caruby/domain/merge.rb
112
+ - lib/caruby/domain/properties.rb
113
+ - lib/caruby/domain/reference_visitor.rb
114
+ - lib/caruby/domain/resource_attributes.rb
115
+ - lib/caruby/domain/resource_dependency.rb
116
+ - lib/caruby/domain/resource_introspection.rb
117
+ - lib/caruby/domain/resource_inverse.rb
118
+ - lib/caruby/domain/resource_metadata.rb
119
+ - lib/caruby/domain/resource_module.rb
120
+ - lib/caruby/domain/uniquify.rb
121
+ - lib/caruby/import/java.rb
122
+ - lib/caruby/migration/migratable.rb
123
+ - lib/caruby/migration/migrator.rb
124
+ - lib/caruby/migration/resource_module.rb
125
+ - lib/caruby/migration/uniquify.rb
126
+ - lib/caruby/resource.rb
127
+ - lib/caruby/util/attribute_path.rb
128
+ - lib/caruby/util/cache.rb
129
+ - lib/caruby/util/class.rb
130
+ - lib/caruby/util/collection.rb
131
+ - lib/caruby/util/controlled_value.rb
132
+ - lib/caruby/util/coordinate.rb
133
+ - lib/caruby/util/domain_extent.rb
134
+ - lib/caruby/util/file_separator.rb
135
+ - lib/caruby/util/inflector.rb
136
+ - lib/caruby/util/log.rb
137
+ - lib/caruby/util/math.rb
138
+ - lib/caruby/util/merge.rb
139
+ - lib/caruby/util/module.rb
140
+ - lib/caruby/util/options.rb
141
+ - lib/caruby/util/partial_order.rb
142
+ - lib/caruby/util/person.rb
143
+ - lib/caruby/util/pretty_print.rb
144
+ - lib/caruby/util/properties.rb
145
+ - lib/caruby/util/roman.rb
146
+ - lib/caruby/util/stopwatch.rb
147
+ - lib/caruby/util/topological_sync_enumerator.rb
148
+ - lib/caruby/util/transitive_closure.rb
149
+ - lib/caruby/util/tree.rb
150
+ - lib/caruby/util/trie.rb
151
+ - lib/caruby/util/uniquifier.rb
152
+ - lib/caruby/util/validation.rb
153
+ - lib/caruby/util/version.rb
154
+ - lib/caruby/util/visitor.rb
155
+ - lib/caruby/util/weak_hash.rb
156
+ - lib/caruby/version.rb
157
+ - lib/caruby/yard/resource_metadata_handler.rb
158
+ - lib/caruby.rb
159
+ - test/lib/caruby/csv/csv_mapper_test.rb
160
+ - test/lib/caruby/csv/csvio_test.rb
161
+ - test/lib/caruby/database/persistable_test.rb
162
+ - test/lib/caruby/domain/domain_test.rb
163
+ - test/lib/caruby/domain/inversible_test.rb
164
+ - test/lib/caruby/domain/reference_visitor_test.rb
165
+ - test/lib/caruby/import/java_test.rb
166
+ - test/lib/caruby/migration/test_case.rb
167
+ - test/lib/caruby/test_case.rb
168
+ - test/lib/caruby/util/cache_test.rb
169
+ - test/lib/caruby/util/class_test.rb
170
+ - test/lib/caruby/util/collection_test.rb
171
+ - test/lib/caruby/util/command_test.rb
172
+ - test/lib/caruby/util/controlled_value_test.rb
173
+ - test/lib/caruby/util/domain_extent_test.rb
174
+ - test/lib/caruby/util/file_separator_test.rb
175
+ - test/lib/caruby/util/inflector_test.rb
176
+ - test/lib/caruby/util/lazy_hash_test.rb
177
+ - test/lib/caruby/util/merge_test.rb
178
+ - test/lib/caruby/util/module_test.rb
179
+ - test/lib/caruby/util/options_test.rb
180
+ - test/lib/caruby/util/partial_order_test.rb
181
+ - test/lib/caruby/util/person_test.rb
182
+ - test/lib/caruby/util/pretty_print_test.rb
183
+ - test/lib/caruby/util/properties_test.rb
184
+ - test/lib/caruby/util/roman_test.rb
185
+ - test/lib/caruby/util/stopwatch_test.rb
186
+ - test/lib/caruby/util/topological_sync_enumerator_test.rb
187
+ - test/lib/caruby/util/transitive_closure_test.rb
188
+ - test/lib/caruby/util/tree_test.rb
189
+ - test/lib/caruby/util/trie_test.rb
190
+ - test/lib/caruby/util/version_test.rb
191
+ - test/lib/caruby/util/visitor_test.rb
192
+ - test/lib/caruby/util/weak_hash_test.rb
193
+ - test/lib/examples/galena/clinical_trials/migration/participant_test.rb
194
+ - test/lib/examples/galena/clinical_trials/migration/test_case.rb
195
+ - History.txt
196
+ - LEGAL
197
+ - LICENSE
198
+ - README.md
199
+ has_rdoc: yard
200
+ homepage: http://caruby.rubyforge.org
182
201
  licenses:
183
- - MIT
202
+ - MIT
184
203
  post_install_message:
185
204
  rdoc_options: []
186
205
 
187
206
  require_paths:
188
- - lib
207
+ - lib
189
208
  required_ruby_version: !ruby/object:Gem::Requirement
190
209
  none: false
191
210
  requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: "0"
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ hash: 3
214
+ segments:
215
+ - 0
216
+ version: "0"
195
217
  required_rubygems_version: !ruby/object:Gem::Requirement
196
218
  none: false
197
219
  requirements:
198
- - - ">="
199
- - !ruby/object:Gem::Version
200
- version: "0"
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ hash: 3
223
+ segments:
224
+ - 0
225
+ version: "0"
201
226
  requirements: []
202
227
 
203
228
  rubyforge_project: caruby
204
- rubygems_version: 1.5.3
229
+ rubygems_version: 1.3.7
205
230
  signing_key:
206
231
  specification_version: 3
207
232
  summary: Ruby facade for caBIG applications.