caruby-core 1.4.7 → 1.4.9

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