caruby-tissue 1.5.4 → 1.5.5

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 (78) hide show
  1. data/History.md +4 -0
  2. data/examples/galena/README.md +2 -11
  3. data/examples/galena/conf/migration/filter_defaults.yaml +1 -0
  4. data/examples/galena/conf/migration/filter_values.yaml +13 -0
  5. data/examples/galena/lib/galena/tissue/migration/filter_shims.rb +3 -15
  6. data/examples/galena/lib/galena/tissue/migration/frozen_shims.rb +3 -6
  7. data/examples/galena/lib/galena/tissue/seed/defaults.rb +2 -2
  8. data/lib/catissue/annotation/annotatable_class.rb +10 -8
  9. data/lib/catissue/annotation/annotation_class.rb +6 -3
  10. data/lib/catissue/annotation/annotation_module.rb +7 -2
  11. data/lib/catissue/cli/command.rb +11 -4
  12. data/lib/catissue/cli/migrate.rb +5 -16
  13. data/lib/catissue/database/annotation/annotation_service.rb +2 -2
  14. data/lib/catissue/database/annotation/entity_facade.rb +6 -11
  15. data/lib/catissue/database/annotation/record_entry_integrator.rb +4 -4
  16. data/lib/catissue/database/controlled_values.rb +2 -3
  17. data/lib/catissue/database.rb +64 -35
  18. data/lib/catissue/domain/abstract_specimen.rb +24 -26
  19. data/lib/catissue/domain/abstract_specimen_collection_group.rb +1 -1
  20. data/lib/catissue/domain/capacity.rb +1 -1
  21. data/lib/catissue/domain/collection_protocol.rb +12 -9
  22. data/lib/catissue/domain/collection_protocol_event.rb +9 -11
  23. data/lib/catissue/domain/collection_protocol_registration.rb +5 -5
  24. data/lib/catissue/domain/container.rb +3 -4
  25. data/lib/catissue/domain/container_type.rb +11 -12
  26. data/lib/catissue/domain/disposal_event_parameters.rb +1 -1
  27. data/lib/catissue/domain/new_specimen_array_order_item.rb +6 -5
  28. data/lib/catissue/domain/order_details.rb +4 -0
  29. data/lib/catissue/domain/participant.rb +17 -17
  30. data/lib/catissue/domain/participant_medical_identifier.rb +2 -3
  31. data/lib/catissue/domain/site.rb +7 -9
  32. data/lib/catissue/domain/specimen/pathology/prostate_specimen_gleason_score.rb +2 -3
  33. data/lib/catissue/domain/specimen/pathology/prostate_specimen_pathology_annotation.rb +4 -3
  34. data/lib/catissue/domain/specimen/pathology/specimen_additional_finding.rb +5 -7
  35. data/lib/catissue/domain/specimen/pathology/specimen_base_solid_tissue_pathology_annotation.rb +11 -11
  36. data/lib/catissue/domain/specimen/pathology/specimen_details.rb +2 -4
  37. data/lib/catissue/domain/specimen/pathology/specimen_histologic_grade.rb +2 -4
  38. data/lib/catissue/domain/specimen/pathology/specimen_histologic_type.rb +6 -6
  39. data/lib/catissue/domain/specimen/pathology/specimen_histologic_variant_type.rb +2 -4
  40. data/lib/catissue/domain/specimen/pathology/specimen_invasion.rb +2 -4
  41. data/lib/catissue/domain/specimen.rb +35 -45
  42. data/lib/catissue/domain/specimen_array.rb +1 -1
  43. data/lib/catissue/domain/specimen_collection_group/pathology/base_pathology_annotation.rb +4 -4
  44. data/lib/catissue/domain/specimen_collection_group/pathology/base_solid_tissue_pathology_annotation.rb +4 -4
  45. data/lib/catissue/domain/specimen_collection_group.rb +40 -46
  46. data/lib/catissue/domain/specimen_protocol.rb +4 -6
  47. data/lib/catissue/domain/specimen_requirement.rb +13 -16
  48. data/lib/catissue/domain/storage_container.rb +5 -2
  49. data/lib/catissue/domain/storage_type.rb +1 -1
  50. data/lib/catissue/domain/user.rb +16 -7
  51. data/lib/catissue/extract/command.rb +1 -1
  52. data/lib/catissue/extract/delta.rb +7 -15
  53. data/lib/catissue/migration/migratable.rb +106 -8
  54. data/lib/catissue/migration/migrator.rb +20 -12
  55. data/lib/catissue/migration/shims.rb +3 -3
  56. data/lib/catissue/util/collectible.rb +2 -2
  57. data/lib/catissue/util/collectible_event_parameters.rb +2 -2
  58. data/lib/catissue/util/position.rb +3 -3
  59. data/lib/catissue/version.rb +1 -1
  60. data/test/lib/catissue/domain/address_test.rb +3 -2
  61. data/test/lib/catissue/domain/participant_test.rb +11 -0
  62. data/test/lib/catissue/domain/specimen_collection_group_test.rb +62 -12
  63. data/test/lib/catissue/domain/specimen_test.rb +0 -1
  64. data/test/lib/catissue/test_case.rb +2 -2
  65. data/test/lib/examples/galena/tissue/migration/seedify.rb +5 -5
  66. data/test/lib/examples/galena/tissue/migration/test_case.rb +9 -5
  67. metadata +8 -17
  68. data/conf/extract/simple_fields.yaml +0 -4
  69. data/conf/migration/filter_fields.yaml +0 -7
  70. data/conf/migration/filter_migration.yaml +0 -9
  71. data/conf/migration/frozen_fields.yaml +0 -11
  72. data/conf/migration/frozen_migration.yaml +0 -9
  73. data/conf/migration/general_fields.yaml +0 -44
  74. data/conf/migration/general_migration.yaml +0 -9
  75. data/conf/migration/simple_fields.yaml +0 -30
  76. data/conf/migration/simple_migration.yaml +0 -7
  77. data/conf/migration/small_fields.yaml +0 -24
  78. data/conf/migration/small_migration.yaml +0 -9
data/History.md CHANGED
@@ -1,6 +1,10 @@
1
1
  This history lists major release themes. See the GitHub Commits (https://github.com/caruby/tissue)
2
2
  for change details.
3
3
 
4
+ 1.5.5 / 2011-09-22
5
+ ------------------
6
+ * Use migration value filter option.
7
+
4
8
  1.5.4 / 2011-08-16
5
9
  ------------------
6
10
  * Fixed case sensitive DB bug. Bug # 7.
@@ -39,14 +39,6 @@ Each example has a field mapping configuration in the `conf/migration` directory
39
39
  For example, the `simple.csv` input file is migrated into caTissue using the
40
40
  `simple_migration.yaml` configuration file.
41
41
 
42
- You can browse the source repository [example files](https://github.com/caruby/tissue/tree/master/examples/galena), where:
43
-
44
- * `conf/migration` has the mapping configuration files
45
-
46
- * `data` has the sample data
47
-
48
- * `lib/galena/tissue/migration` has the shim code
49
-
50
42
  Migrate the Galena `simple` example as follows:
51
43
 
52
44
  1. Open a console in the copied Galena example location.
@@ -81,9 +73,9 @@ features of the caRuby Migration utility as follows:
81
73
 
82
74
  `crtmigrate --target TissueSpecimen --mapping conf/migration/general_fields.yaml data/general.csv`
83
75
 
84
- * <tt>filter</tt> - a smattering of custom Ruby shim code to convert input values to caTissue values and reject an incomplete migration
76
+ * <tt>filter</tt> - custom default, value filter, and shim code to convert input values to caTissue values and reject an incomplete migration
85
77
 
86
- `crtmigrate --target TissueSpecimen --mapping conf/migration/filter_fields.yaml --shims lib/galena/tissue/migration/filter_shims.rb --bad bad.csv data/filter.csv`
78
+ `crtmigrate --target TissueSpecimen --mapping conf/migration/filter_fields.yaml --defaults conf/migration/filter_defaults.yaml --filters conf/migration/filter_values.yaml --shims lib/galena/tissue/migration/filter_shims.rb --bad bad.csv data/filter.csv`
87
79
 
88
80
  * <tt>frozen</tt> - storage locations
89
81
 
@@ -119,4 +111,3 @@ The following input fields are included in the examples:
119
111
  * <tt>Gleason</tt>: Specimen primary gleason score
120
112
  * <tt>Grade</tt>: Specimen histologic WHO grade
121
113
 
122
- The fields listed are those used in the examples. caTissue supports any caTissue domain object.
@@ -0,0 +1 @@
1
+ TissueSpecimen.specimen_type: Fixed Tissue
@@ -0,0 +1,13 @@
1
+ # This value filter configuration file demonstrates how to transform an input field value
2
+ # to a caTissue value. The specimen type input field is a string which can be TRUE, FALSE
3
+ # or missing. If the input value matches the case-insensitive regular expression /TRUE/i,
4
+ # then the input value is transformed to the caTissue value 'Frozen Tissue'. A missing
5
+ # input value is set to 'Fixed Tissue' by the filter_defaults.yaml configuration.
6
+ #
7
+ # A straight-forward value => value mapping would be expressed as:
8
+ # 'TRUE' : 'Frozen Tissue'
9
+ # 'FALSE' : 'Fixed Tissue'
10
+ #
11
+ TissueSpecimen.specimen_type:
12
+ !ruby/regexp '/TRUE/i' : 'Frozen Tissue'
13
+ !ruby/regexp '/FALSE/i' : 'Fixed Tissue'
@@ -1,40 +1,28 @@
1
1
  require 'uom'
2
2
 
3
3
  module CaTissue
4
- # Declare the classes modified for migration.
4
+ # Declares the classes modified for migration.
5
5
  shims Participant, TissueSpecimen, SpecimenCollectionGroup
6
6
 
7
7
  class Participant
8
8
  # Extracts the Participant first name from the +Initials+ input field.
9
9
  def migrate_first_name(value, row)
10
- # The first initial is the first "name".
11
10
  value[0, 1]
12
11
  end
13
12
 
14
13
  # Extracts the Participant last name from the +Initials+ input field.
15
- #
16
- # @param [String] value the input initials field
17
- # @param @param [{Symbol => Object}] row the input row field => value hash
18
14
  def migrate_last_name(value, row)
19
- # The last initial is the last "name".
20
15
  value[-1, 1]
21
16
  end
22
17
  end
23
18
 
24
19
  class TissueSpecimen
25
20
  # Transforms the +Frozen?+ flag input field to the caTissue specimen type +Frozen Tissue+ value.
26
- #
27
- # @param [String] value the input specimen type field
28
- # @param @param [{Symbol => Object}] row the input row field => value hash
29
21
  def migrate_specimen_type(value, row)
30
22
  value =~ /TRUE/i ? 'Frozen Tissue' : 'Fixed Tissue'
31
23
  end
32
-
33
24
  # Parses the source field as a UOM::Measurement if it is a string.
34
25
  # Otherwises, returns the source value.
35
- #
36
- # @param [String, Numeric] value the input quantity field
37
- # @param @param [{Symbol => Object}] row the input row field => value hash
38
26
  def migrate_initial_quantity(value, row)
39
27
  # if value is not a string, then use it as is
40
28
  return value unless value.is_a?(String)
@@ -45,9 +33,9 @@ module CaTissue
45
33
  end
46
34
 
47
35
  class SpecimenCollectionGroup
48
- # @return [Boolean] whether this SCG has a SPN
36
+ # Returns whether this SCG has a SPN.
49
37
  def migration_valid?
50
- not surgical_pathology_number.nil?
38
+ surgical_pathology_number
51
39
  end
52
40
  end
53
41
  end
@@ -2,18 +2,15 @@
2
2
  require File.join(File.dirname(__FILE__), '..', 'seed', 'defaults')
3
3
 
4
4
  module CaTissue
5
- # Declare the classes modified for migration.
5
+ # Declares the classes modified for migration.
6
6
  shims TissueSpecimen, CollectionProtocolRegistration, StorageContainer
7
7
 
8
8
  class StorageContainer
9
9
  # Creates the migrated box in the database, if necessary.
10
10
  #
11
- # @param [{Symbol => Object}] row the input row field => value hash
12
- # @param [<Resource>] migrated the migrated instances
11
+ # @param (see CaRuby::Migratable#migrate)
13
12
  def migrate(row, migrated)
14
13
  super
15
- # Fetch the box from the database, if it exists.
16
- # Otherwise, create the box.
17
14
  find or create_galena_box
18
15
  end
19
16
 
@@ -34,7 +31,7 @@ module CaTissue
34
31
  # Add the box to the first open slot in the first unfilled rack in the freezer.
35
32
  frz << self
36
33
  logger.debug { "Placed the tissue box #{self} in freezer #{frz}." }
37
- logger.debug { "Creating the tissue box #{self} in the database..." }
34
+ logger.debug { "Creating the tissue box #{self}..." }
38
35
  create
39
36
  end
40
37
  end
@@ -16,8 +16,8 @@ module Galena
16
16
 
17
17
  # Pre-defined Galena example administrative objects. If the Galena example is already set up
18
18
  # in the caTissue database, then the default object secondary key attributes can be used as a
19
- # +CaRuby::Persistable.find+ template to retrieve the existing objects. Otherwise, the Defaults
20
- # attributes can be created by calling +CaRuby::Persistable.create+.
19
+ # {CaRuby::Persistable#find} template to retrieve the existing objects. Otherwise, the Defaults
20
+ # attributes can be created by calling {CaRuby::Persistable#create}.
21
21
  #
22
22
  # In a real-world use case, the administrative objects are typically built in the UI before-hand.
23
23
  # In that case, it is only necessary to define the object secondary key rather than content, e.g.:
@@ -11,12 +11,12 @@ module CaTissue
11
11
  # annotation objects, or nil if this is not a primary annotation class
12
12
  attr_reader :entity_id
13
13
 
14
- # @return [Class] the {Annotation::DEIntegration} proxy class (nil for 1.1 caTissue)
14
+ # @return [Class] the {DEIntegration} proxy class (nil for 1.1 caTissue)
15
15
  def de_integration_proxy_class
16
16
  @de_integration_proxy_class or (superclass.de_integration_proxy_class if superclass < Annotatable)
17
17
  end
18
18
 
19
- # Adds +CaRuby::Domain::Metadata+ and {AnnotatableClass} functionality to the given class.
19
+ # Adds {CaRuby::Domain::Metadata} and {AnnotatableClass} functionality to the given class.
20
20
  #
21
21
  # @param [Class] the domain class to extend
22
22
  def self.extend_class(klass)
@@ -61,7 +61,7 @@ module CaTissue
61
61
  annotation_defined?(symbol)
62
62
  end
63
63
 
64
- # Refines the +CaRuby::Domain::Attributes.toxic_attributes+ to exclude annotation attributes.
64
+ # Refines the {CaRuby::Domain::Attributes#toxic_attributes} to exclude annotation attributes.
65
65
  #
66
66
  # @return [<Symbol>] the non-annotation unfetched attributes
67
67
  def toxic_attributes
@@ -90,7 +90,7 @@ module CaTissue
90
90
  end
91
91
  end
92
92
 
93
- # Filters +CaRuby::Domain::Attributes.loadable_attributes+ to exclude the {#annotation_attributes}
93
+ # Filters {CaRuby::Domain::Attributes#loadable_attributes} to exclude the {#annotation_attributes}
94
94
  # since annotation lazy-loading is not supported.
95
95
  #
96
96
  # @return (see CaRuby::Domain::Attributes#loadable_attributes)
@@ -164,17 +164,19 @@ module CaTissue
164
164
  #
165
165
  # @param [String] name the name of the annotation module
166
166
  # @param [{Symbol => Object}] opts the annotation options
167
- # @option opts [String] :package the package name (default the decapitalized camelized name)
168
- # @option opts [String] :service the service name (default the decapitalized underscore name)
167
+ # @option opts [String] :package the package name (default is the lower-case underscore name)
168
+ # @option opts [String] :service the service name (default is the lower-case underscore name)
169
+ # @option opts [String] :group the DE group short name (default is the package)
169
170
  def add_annotation(name, opts={})
170
171
  # the module symbol
171
172
  mod_sym = name.camelize.to_sym
172
173
  # the module spec defaults
173
- pkg = opts[:package] ||= name.camelize(:lower)
174
+ pkg = opts[:package] ||= name.underscore
174
175
  svc = opts[:service] ||= name.underscore
176
+ grp = opts[:group] ||= pkg
175
177
  # add the annotation entry
176
178
  @ann_spec_hash[mod_sym] = opts
177
- logger.info("Added #{qp} annotation #{name} with module #{mod_sym}, package #{pkg} and service #{svc}.")
179
+ logger.info("Added #{qp} annotation #{name} with module #{mod_sym}, package #{pkg}, service #{svc} and group #{grp}.")
178
180
  end
179
181
 
180
182
  # @return [Boolean] whether this annotatable class's annotations are loaded
@@ -13,6 +13,8 @@ module CaTissue
13
13
  # @return [Intger, nil] the container id, or nil if this is not a primary annotation
14
14
  attr_reader :container_id
15
15
 
16
+ # @param [Class] klass the {Annotation} class to enable
17
+ # @param [Module] mod the {AnnotationModule} which scopes the class
16
18
  def self.extend_class(klass, mod)
17
19
  # Enable the class meta-data.
18
20
  klass.extend(CaRuby::Domain::Metadata)
@@ -32,8 +34,9 @@ module CaTissue
32
34
 
33
35
  # Adds metadata to this annotation class.
34
36
  #
35
- # @param [Module] mod the annotation module
37
+ # @param (see AnnotationClass.extend_class)
36
38
  def add_annotation_metadata(mod)
39
+ @domain_module = mod
37
40
  alias_attribute(:annotation_module, :domain_module)
38
41
  efcd = Annotation::EntityFacade.instance
39
42
  @entity_id = efcd.annotation_entity_id(self, false)
@@ -52,7 +55,7 @@ module CaTissue
52
55
  @ann_attrs ||= domain_attributes.compose { |attr_md| attr_md.type < Annotation }
53
56
  end
54
57
 
55
- # Filters +CaRuby::Domain::Attributes.loadable_attributes+ to exclude all references,
58
+ # Filters {CaRuby::Domain::Attributes#loadable_attributes} to exclude all references,
56
59
  # since annotation lazy-loading is not supported.
57
60
  #
58
61
  # @return [Array] an empty array
@@ -73,7 +76,7 @@ module CaTissue
73
76
  not ref.nil?
74
77
  end
75
78
 
76
- # @return [Boolean] whether this annotation is neither a {#primary?} nor a {#secondary?} annotation
79
+ # @return [Boolean] whether this annotation is neither a {#primary?} nor a #{secondary} annotation
77
80
  def tertiary_annotation
78
81
  not (primary? or secondary?)
79
82
  end
@@ -11,11 +11,14 @@ module CaTissue
11
11
 
12
12
  # @return [ProxyClass] the annotation proxy class
13
13
  attr_reader :proxy
14
+
15
+ # @return [String] the group short name
16
+ attr_reader :group
14
17
 
15
18
  # @return [Class] the hook-annotation association class, or nil for 1.1.x caTissue
16
19
  attr_reader :record_entry_class
17
20
 
18
- # @return [Symbol] the {Annotation::ProxyClass} hook writer method, or nil for 1.1.x caTissue
21
+ # @return [Symbol] the {#de_integration_proxy_class} hook writer method, or nil for 1.1.x caTissue
19
22
  attr_reader :record_entry_hook_writer
20
23
 
21
24
  # @param [AnnotationModule] mod the annotation module to build
@@ -23,6 +26,7 @@ module CaTissue
23
26
  # @param [{Symbol => Object}] the options
24
27
  # @option opts [String] :package the DE package name
25
28
  # @option opts [String] :service the DE service name
29
+ # @option opts [String] :group the DE group short name
26
30
  # @option opts [String] :record_entry the record entry name class for post-1.1.x caTissue
27
31
  def self.extend_module(mod, hook, opts)
28
32
  mod.extend(self)
@@ -37,6 +41,7 @@ module CaTissue
37
41
  logger.debug { "Building #{hook.qp} annotation #{qp}..." }
38
42
  pkg = opts[:package]
39
43
  @svc_nm = opts[:service]
44
+ @group = opts[:group]
40
45
  # Enable the resource metadata aspect.
41
46
  md_proc = Proc.new { |klass| AnnotationClass.extend_class(klass, self) }
42
47
  CaRuby::Domain::Importer.extend_module(self, :mixin => Annotation, :metadata => md_proc, :package => pkg)
@@ -75,7 +80,7 @@ module CaTissue
75
80
  # a record entry class.
76
81
  #
77
82
  # @param [String] the record entry class name specified in the
78
- # {CaTissue::AnntatableClass#add_annotation_attribute} +:record_entry+ option
83
+ # {CaTissue::AnnotatableClass#add_annotation} +:record_entry+ option
79
84
  def import_record_entry_class(klass, hook)
80
85
  @record_entry_class = const_get(klass.name.demodulize.to_sym)
81
86
  @record_entry_hook_writer = "#{hook.name.demodulize.underscore}=".to_sym
@@ -6,7 +6,7 @@ begin
6
6
  rescue Exception => e
7
7
  logger.error("caTissue client load was unsuccessful - #{e}:\n#{e.backtrace.qp}")
8
8
  puts "caTissue client load was unsuccessful - #{e}."
9
- puts "See the log at #+CaRuby::Log.instance.file+ for more information."
9
+ puts "See the log at #{CaRuby::Log.instance.file} for more information."
10
10
  exit 1
11
11
  end
12
12
 
@@ -15,9 +15,16 @@ require 'catissue/version'
15
15
 
16
16
  module CaTissue
17
17
  module CLI
18
- # Augments +CaRuby::CLI::Command+ with caTissue-specific command line option handlers.
18
+ # Augments {CaRuby::CLI::Command} with caTissue-specific command line option handlers.
19
19
  class Command < CaRuby::CLI::Command
20
- # @see +CaRuby::CLI::Command.initialize+
20
+ #
21
+ # Built-in options include those specified in +CaRuby::CLI::Command.initialize+
22
+ # as well as the following:
23
+ # * --version : print the version of caRuby Tissue as well as the supported caTissue releases and exit
24
+ #
25
+ # @param [(<Symbol>, <String, Class>)] specs the arguments and options
26
+ # described in +CaRuby::CLI::Command.initialize+
27
+ # @see {CaRuby::CLI::Command#initialize}
21
28
  def initialize(specs=[])
22
29
  specs << VERSION_OPT
23
30
  super
@@ -29,7 +36,7 @@ module CaTissue
29
36
 
30
37
  # If the version option is set, then prints the version and exits.
31
38
  # Otherwise, extracts the connection command line options, adds them
32
- # to {CaTissue.access_properties}, and yields to the executor block.
39
+ # to the CaTissue access properties, and yields to the executor block.
33
40
  #
34
41
  # @param [{Symbol => Object}] opts the command line argument and option symbol => value hash
35
42
  def handle_options(opts)
@@ -15,18 +15,18 @@ module CaTissue
15
15
  SPECS = [
16
16
  [:input, "input", "Source file to migrate"],
17
17
  [:target, "-t", "--target CLASS", "Migration target class"],
18
- [:mapping, "-m", "--mapping FILE", "The input field => caTissue attribute mapping file"],
19
- [:defaults, "-d", "--defaults FILE", "The caTissue attribute => default value mapping file"],
20
- [:shims, "-s", "--shims FILE[,FILE...]", Array, "Migration customization shim files to load"],
18
+ [:mapping, "-m", "--mapping FILE[,FILE...]", Array, "The input field => caTissue attribute mapping file(s)"],
19
+ [:filters, "--filters FILE[,FILE...]", Array, "The input value => caTissue value mapping file(s)"],
20
+ [:defaults, "-d", "--defaults FILE[,FILE...]", Array, "The caTissue attribute default value file(s)"],
21
+ [:shims, "-s", "--shims FILE[,FILE...]", Array, "Migration customization shim file(s) to load"],
21
22
  [:bad, "-b", "--bad FILE", "Write each invalid record to the given file and continue migration"],
22
23
  [:unique, "-u", "--unique", "Make the migrated objects unique for testing"],
23
24
  [:offset, "-o", "--offset N", Integer, "Number of input records to skip before starting the migration"]
24
25
  ]
25
26
 
26
- # Creates a {CaTissue::CLI::Migrate} command with the given standard command line specifications
27
+ # Creates a {Migrate} command with the given standard command line specifications
27
28
  # as well as the {SPECS} command line specifications.
28
29
  #
29
- # @param (see CaRuby::CLI::Command#initialize)
30
30
  # @yield [opts] optional migrator factory
31
31
  # @yieldparam [{Symbol => Object}] the {CaTissue::Migrator#initialize} creation options
32
32
  # @see CaRuby::Command#run
@@ -46,17 +46,6 @@ module CaTissue
46
46
  migrator = block_given? ? yield(opts) : CaTissue::Migrator.new(opts)
47
47
  migrator.migrate_to_database
48
48
  end
49
-
50
- def validate(opts)
51
- tgt = opts[:target]
52
- if tgt.nil? then raise ArgumentError.new("Missing required migration target class option") end
53
- begin
54
- opts[:target] = CaTissue.const_get(tgt)
55
- rescue Exception
56
- logger.fatal("Could not load CaTissue class #{tgt} - #{$!}.\n#{$@.qp}")
57
- raise MigrationError.new("Could not load migration target class #{tgt}")
58
- end
59
- end
60
49
  end
61
50
  end
62
51
  end
@@ -19,7 +19,7 @@ module CaTissue
19
19
  @intgtr = integrator
20
20
  end
21
21
 
22
- # Augments the +CaRuby::PersistenceService+ create method to handle caTissue annotation
22
+ # Augments the {CaRuby::PersistenceService} create method to handle caTissue annotation
23
23
  # service peculiarities, e.g.:
24
24
  # * assigns the identifier, since assignment is not done automatically as is the case with the
25
25
  # default application service
@@ -27,7 +27,7 @@ module CaTissue
27
27
  # * Save all referenced annotation objects
28
28
  #
29
29
  # This method can only be called on primary annotation objects. A _primary_ annotation
30
- # is a top-level annotation which has a reference to the domain hook entity which is
30
+ # is a top-level annotation which has a reference to the {Annotation#hook} which is
31
31
  # being annotated.
32
32
  #
33
33
  # @param [Annotation] annotation the annotation object to create
@@ -75,7 +75,7 @@ module CaTissue
75
75
  # classes. Use alternative SQL instead.
76
76
  #
77
77
  # @param [Integer] eid the referencing entity id
78
- # @param [String] eid the association property name
78
+ # @param [String] name the association property name
79
79
  # @return [Integer] the referenced {Annotation} class entity id
80
80
  def associated_entity_id(eid, name)
81
81
  # The caTissue role is capitalized.
@@ -145,7 +145,7 @@ module CaTissue
145
145
 
146
146
  private
147
147
 
148
- CORE_PKG_REGEX = /^edu.wustl.catissuecore.domain/
148
+ CORE_PKG = 'edu.wustl.catissuecore.domain'
149
149
 
150
150
  CORE_GROUP = 'caTissueCore'
151
151
 
@@ -160,7 +160,7 @@ module CaTissue
160
160
  # @param (see #recursive_annotation_entity_id)
161
161
  # @return (see #recursive_annotation_entity_id)
162
162
  def nonrecursive_annotation_entity_id(klass)
163
- # The entity group and entity name.
163
+ # The entity group and name.
164
164
  grp, name = split_annotation_entity_class_name(klass)
165
165
  # Dive into some obscure SQL.
166
166
  result = @executor.execute { |dbh| dbh.select_one(ANN_ENTITY_ID_SQL, grp, name) }
@@ -175,13 +175,8 @@ module CaTissue
175
175
  # the Java package and base class name
176
176
  pkg, base = Java.split_class_name(jname)
177
177
  # A wustl domain class is in the core group.
178
- if pkg =~ CORE_PKG_REGEX then
179
- [CORE_GROUP, jname]
180
- elsif pkg.nil? or pkg['.'] then
181
- raise AnnotationError.new("Entity group for Java class #{jname} could not be determined.")
182
- else
183
- [pkg, base]
184
- end
178
+ # Others are in an annotation module with a designated group.
179
+ pkg == CORE_PKG ? [CORE_GROUP, jname] : [klass.annotation_module.group, base]
185
180
  end
186
181
 
187
182
  # @param (see #annotation_entity_id)
@@ -213,7 +208,7 @@ module CaTissue
213
208
  end
214
209
 
215
210
  # @param (see #recursive_associated_entity_id)
216
- # @return [Integer, nil] the directly associated entity id, if any
211
+ # @return @return [Integer, nil] the directly associated entity id, if any
217
212
  def nonrecursive_associated_entity_id(eid, role)
218
213
  logger.debug { "Finding entity id #{eid} #{role} associated entity id..." }
219
214
  result = @executor.execute { |dbh| dbh.select_one(ASSN_ENTITY_ID_SQL, eid, role) }
@@ -16,8 +16,9 @@ module CaTissue
16
16
  # by creating a record entry hook proxy. Even though the record entry class
17
17
  # includes Java properties for each primary annotation in the annotation
18
18
  # Java package, the record entry instance only references a single annotation.
19
- # The record entry database table +dyextn_abstract_record_entry+ has foreign
20
- # key to a ABSTRACT_FORM_CONTEXT_ID a separate record entry is created for each annotation.
19
+ # The record entry database table +dyextn_abstract_record_entry+ has a foreign
20
+ # key reference to the +ABSTRACT_FORM_CONTEXT_ID+. A separate record entry is
21
+ # created for each annotation.
21
22
  #
22
23
  # @param [Annotatable] hook the hook entity
23
24
  # @param [Annotation] annotation the annotation entity
@@ -29,8 +30,7 @@ module CaTissue
29
30
  private
30
31
 
31
32
  # @param (see #associate)
32
- # @return [Object] yet another association record which associates the hook to the
33
- # annotation in the {REC_ENTRY_PKG}
33
+ # @return [Object] yet another association record which associates the hook to the annotation
34
34
  def create_record_entry(hook, annotation)
35
35
  # the DE integration record entry class
36
36
  klass = hook.class.de_integration_proxy_class