caruby-core 1.4.1 → 1.4.2
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.
- data/History.txt +4 -0
- data/LICENSE +1 -1
- data/README.md +4 -4
- data/lib/caruby/cli/command.rb +26 -21
- data/lib/caruby/database/persistable.rb +13 -1
- data/lib/caruby/database/reader.rb +1 -1
- data/lib/caruby/database/writer.rb +1 -1
- data/lib/caruby/domain/attribute_metadata.rb +5 -0
- data/lib/caruby/domain/resource_attributes.rb +4 -26
- data/lib/caruby/domain/resource_dependency.rb +1 -1
- data/lib/caruby/domain/resource_introspection.rb +8 -0
- data/lib/caruby/migration/migratable.rb +6 -1
- data/lib/caruby/migration/migrator.rb +6 -5
- data/lib/caruby/resource.rb +15 -3
- data/lib/caruby/util/visitor.rb +2 -2
- data/lib/caruby/version.rb +1 -1
- metadata +6 -15
- data/doc/website/css/site.css +0 -6
- data/doc/website/images/avatar.png +0 -0
- data/doc/website/images/favicon.ico +0 -0
- data/doc/website/images/logo.png +0 -0
- data/doc/website/index.html +0 -82
- data/doc/website/install.html +0 -87
- data/doc/website/quick_start.html +0 -87
- data/doc/website/tissue.html +0 -85
- data/doc/website/uom.html +0 -10
    
        data/History.txt
    CHANGED
    
    
    
        data/LICENSE
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            caRuby: Simplifying caBIG(TM)
         | 
| 2 2 | 
             
            =============================
         | 
| 3 3 |  | 
| 4 | 
            -
            **Home**: | 
| 5 | 
            -
            **Git**:          [http://github.com/caruby/core](http://github.com/caruby/core) | 
| 4 | 
            +
            **Home**:         [http://caruby.rubyforge.org](http://caruby.rubyforge.org)    
         | 
| 5 | 
            +
            **Git**:          [http://github.com/caruby/core](http://github.com/caruby/core)       
         | 
| 6 6 | 
             
            **Author**:       OHSU Knight Cancer Institute    
         | 
| 7 7 | 
             
            **Copyright**:    2010    
         | 
| 8 8 | 
             
            **License**:      MIT License    
         | 
| @@ -35,7 +35,7 @@ is installed. | |
| 35 35 | 
             
            Usage
         | 
| 36 36 | 
             
            -----
         | 
| 37 37 |  | 
| 38 | 
            -
            See the project [http://caruby.rubyforge. | 
| 38 | 
            +
            See the project [Home](http://caruby.rubyforge.org) Page for usage examples. 
         | 
| 39 39 |  | 
| 40 40 | 
             
            Changelog
         | 
| 41 41 | 
             
            ---------
         | 
| @@ -46,6 +46,6 @@ Changelog | |
| 46 46 | 
             
            Copyright
         | 
| 47 47 | 
             
            ---------
         | 
| 48 48 |  | 
| 49 | 
            -
            caRuby © 2010 by [Oregon Health & Science University]( | 
| 49 | 
            +
            caRuby © 2010 by [Oregon Health & Science University](http://www.ohsu.edu/xd/health/services/cancer/index.cfm).
         | 
| 50 50 | 
             
            caRuby is licensed under the MIT license. Please see the LICENSE and LEGAL
         | 
| 51 51 | 
             
            files for more information.
         | 
    
        data/lib/caruby/cli/command.rb
    CHANGED
    
    | @@ -42,29 +42,43 @@ module CaRuby | |
| 42 42 | 
             
                  #
         | 
| 43 43 | 
             
                  # @param [(<Symbol>, <String, Class>)] specs the arguments and options
         | 
| 44 44 | 
             
                  #   described above
         | 
| 45 | 
            -
                  # @yield  | 
| 46 | 
            -
                  # @yieldparam  | 
| 45 | 
            +
                  # @yield (see #run)
         | 
| 46 | 
            +
                  # @yieldparam (see #run)
         | 
| 47 47 | 
             
                  def initialize(specs=[], &executor)
         | 
| 48 | 
            -
                    unless block_given? then
         | 
| 49 | 
            -
                      raise ArgumentError.new("Command #{self.class} is missing the required execution block" )
         | 
| 50 | 
            -
                    end
         | 
| 51 48 | 
             
                    @executor = executor
         | 
| 52 49 | 
             
                    @opt_specs, @arg_specs = specs.partition { |spec| spec[1][0, 1] == '-' }
         | 
| 53 50 | 
             
                    @opt_specs.concat(DEF_OPTS)
         | 
| 54 51 | 
             
                    super($0)
         | 
| 55 52 | 
             
                  end
         | 
| 56 53 |  | 
| 57 | 
            -
                  # Runs this command by calling the  | 
| 54 | 
            +
                  # Runs this command by calling the block given to this method, if provided,
         | 
| 55 | 
            +
                  # otherwise the block given to {#initialize}
         | 
| 58 56 | 
             
                  # option or argument symbol => value hash.
         | 
| 57 | 
            +
                  # @yield [hash] the command execution block
         | 
| 58 | 
            +
                  # @yieldparam [{Symbol => Object}] hash the argument and option symbol => value hash
         | 
| 59 59 | 
             
                  def run
         | 
| 60 60 | 
             
                    # the option => value hash
         | 
| 61 | 
            -
                     | 
| 61 | 
            +
                    opts = get_opts
         | 
| 62 62 | 
             
                    # this base class's options
         | 
| 63 | 
            -
                     | 
| 63 | 
            +
                    handle_options(opts)
         | 
| 64 64 | 
             
                    # add the argument => value hash
         | 
| 65 | 
            -
                     | 
| 65 | 
            +
                    opts.merge!(get_args)
         | 
| 66 66 | 
             
                    # call the block
         | 
| 67 | 
            -
                     | 
| 67 | 
            +
                    block_given? ? yield(opts) : call_executor(opts)
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
              
         | 
| 70 | 
            +
                  private
         | 
| 71 | 
            +
                  
         | 
| 72 | 
            +
                  DEF_OPTS = [
         | 
| 73 | 
            +
                    [:help, "--help", "Displays this help message"],
         | 
| 74 | 
            +
                    [:file, "--file FILE", "Configuration file containing other options"],
         | 
| 75 | 
            +
                    [:log, "--log FILE", "Log file"],
         | 
| 76 | 
            +
                    [:debug, "--debug", "Displays debug log messages"],
         | 
| 77 | 
            +
                  ]
         | 
| 78 | 
            +
                  
         | 
| 79 | 
            +
                  def call_executor(opts)
         | 
| 80 | 
            +
                     if @executor.nil? then raise CommandError.new("Command #{self} does not have an execution block") end
         | 
| 81 | 
            +
                     @executor.call(opts)
         | 
| 68 82 | 
             
                  end
         | 
| 69 83 |  | 
| 70 84 | 
             
                  # Collects the command line options.
         | 
| @@ -104,15 +118,6 @@ module CaRuby | |
| 104 118 | 
             
                    end
         | 
| 105 119 | 
             
                    args
         | 
| 106 120 | 
             
                  end
         | 
| 107 | 
            -
              
         | 
| 108 | 
            -
                  private
         | 
| 109 | 
            -
                  
         | 
| 110 | 
            -
                  DEF_OPTS = [
         | 
| 111 | 
            -
                    [:help, "--help", "Displays this help message"],
         | 
| 112 | 
            -
                    [:file, "--file FILE", "Configuration file containing other options"],
         | 
| 113 | 
            -
                    [:log, "--log FILE", "Log file"],
         | 
| 114 | 
            -
                    [:debug, "--debug", "Displays debug log messages"],
         | 
| 115 | 
            -
                  ]
         | 
| 116 121 |  | 
| 117 122 | 
             
                  # @param [OptionParser] parser the option parser
         | 
| 118 123 | 
             
                  # @return [{Symbol => Object}] the option => value hash
         | 
| @@ -129,7 +134,7 @@ module CaRuby | |
| 129 134 | 
             
                  # Processes the built-in options.
         | 
| 130 135 | 
             
                  #
         | 
| 131 136 | 
             
                  # @param [{Symbol => Object}] the option => value hash
         | 
| 132 | 
            -
                  def  | 
| 137 | 
            +
                  def handle_options(opts)
         | 
| 133 138 | 
             
                    # if help, then print usage and exit
         | 
| 134 139 | 
             
                    if opts[:help] then halt end
         | 
| 135 140 |  | 
| @@ -139,7 +144,7 @@ module CaRuby | |
| 139 144 | 
             
                    if log then
         | 
| 140 145 | 
             
                      CaRuby::Log.instance.open(log, :debug => debug)
         | 
| 141 146 | 
             
                    elsif debug then
         | 
| 142 | 
            -
                       | 
| 147 | 
            +
                      logger.level = Logger::DEBUG
         | 
| 143 148 | 
             
                    end
         | 
| 144 149 |  | 
| 145 150 | 
             
                    # if there is a file option, then load additional options from the file
         | 
| @@ -118,7 +118,8 @@ module CaRuby | |
| 118 118 | 
             
                def changed_attributes
         | 
| 119 119 | 
             
                  if @snapshot then
         | 
| 120 120 | 
             
                    ovh = value_hash(self.class.updatable_attributes)
         | 
| 121 | 
            -
                    @snapshot.diff(ovh). | 
| 121 | 
            +
                    diff = @snapshot.diff(ovh) { |attr, v, ov| Resource.value_equal?(v, ov) }
         | 
| 122 | 
            +
                    diff.keys
         | 
| 122 123 | 
             
                  else
         | 
| 123 124 | 
             
                    self.class.updatable_attributes
         | 
| 124 125 | 
             
                  end
         | 
| @@ -284,6 +285,17 @@ module CaRuby | |
| 284 285 | 
             
                def snapshot_equal_content?
         | 
| 285 286 | 
             
                  vh = @snapshot
         | 
| 286 287 | 
             
                  ovh = value_hash(self.class.updatable_attributes)
         | 
| 288 | 
            +
                  
         | 
| 289 | 
            +
                  
         | 
| 290 | 
            +
                  # KLUDGE TODO - fix
         | 
| 291 | 
            +
                  # In Galena frozen migration example, SpecimenPosition snapshot doesn't include identifier; work around this here
         | 
| 292 | 
            +
                  if ovh[:identifier] and not @snapshot[:identifier] then
         | 
| 293 | 
            +
                    @snapshot[:identifier] = ovh[:identifier]
         | 
| 294 | 
            +
                  end
         | 
| 295 | 
            +
                  # END OF KLUDGE
         | 
| 296 | 
            +
                  
         | 
| 297 | 
            +
                  
         | 
| 298 | 
            +
                  
         | 
| 287 299 | 
             
                  if vh.size < ovh.size then
         | 
| 288 300 | 
             
                    attr, oval = ovh.detect { |a, v| not vh.has_key?(a) }
         | 
| 289 301 | 
             
                    logger.debug { "#{qp} is missing snapshot #{attr} compared to the current value #{oval.qp}." }
         | 
| @@ -131,7 +131,7 @@ module CaRuby | |
| 131 131 | 
             
                  # Raises DatabaseError if obj could not be created.
         | 
| 132 132 | 
             
                  # The return value is undefined.
         | 
| 133 133 | 
             
                  def ensure_exists(obj)
         | 
| 134 | 
            -
                    raise ArgumentError.new("Database ensure_exists is missing a domain object argument | 
| 134 | 
            +
                    raise ArgumentError.new("Database ensure_exists is missing a domain object argument") if obj.nil_or_empty?
         | 
| 135 135 | 
             
                    obj.enumerate { |ref| find(ref, :create) unless ref.identifier }
         | 
| 136 136 | 
             
                  end
         | 
| 137 137 |  | 
| @@ -77,6 +77,11 @@ module CaRuby | |
| 77 77 | 
             
                def inverse
         | 
| 78 78 | 
             
                  @inv_md.to_sym if @inv_md
         | 
| 79 79 | 
             
                end
         | 
| 80 | 
            +
                
         | 
| 81 | 
            +
                # @return [Boolean] whether this attribute does not have an inverse
         | 
| 82 | 
            +
                def unidirectional?
         | 
| 83 | 
            +
                  inverse.nil?
         | 
| 84 | 
            +
                end
         | 
| 80 85 |  | 
| 81 86 | 
             
                # Creates a new declarer attribute which restricts this attribute {#type} to the given type.
         | 
| 82 87 | 
             
                #
         | 
| @@ -125,6 +125,10 @@ module CaRuby | |
| 125 125 | 
             
                def logical_dependent_attributes
         | 
| 126 126 | 
             
                  @log_dep_attrs ||= dependent_attributes.compose { |attr_md| attr_md.logical? }
         | 
| 127 127 | 
             
                end
         | 
| 128 | 
            +
                
         | 
| 129 | 
            +
                def unidirectional_dependent_attributes
         | 
| 130 | 
            +
                  @uni_dep_attrs ||= dependent_attributes.compose { |attr_md| attr_md.unidirectional? }
         | 
| 131 | 
            +
                end
         | 
| 128 132 |  | 
| 129 133 | 
             
                # @return [<Symbol>] the auto-generated attributes
         | 
| 130 134 | 
             
                # @see AttributeMetadata#autogenerated?
         | 
| @@ -234,17 +238,6 @@ module CaRuby | |
| 234 238 | 
             
                def storable_prerequisite_attributes
         | 
| 235 239 | 
             
                  @stbl_prereq_dom_attrs ||= attribute_filter { |attr_md| attr_md.storable_prerequisite? }
         | 
| 236 240 | 
             
                end
         | 
| 237 | 
            -
                
         | 
| 238 | 
            -
                # Returns the domain attributes which are copied to create a storable template.
         | 
| 239 | 
            -
                # The default is the {#nondomain_attributes}. An individual Resource class can
         | 
| 240 | 
            -
                # override this to provide special reference attributes which must be set in
         | 
| 241 | 
            -
                # a save operation.
         | 
| 242 | 
            -
                #
         | 
| 243 | 
            -
                # @param [Symbol] attribute the refernce attribute of the domain object being copied
         | 
| 244 | 
            -
                def storable_copy_attributes(attribute)
         | 
| 245 | 
            -
                  attrs = @stbl_cp_attrs[attribute] if @stbl_cp_attrs
         | 
| 246 | 
            -
                  attrs || Array::EMPTY_ARRAY
         | 
| 247 | 
            -
                end
         | 
| 248 241 |  | 
| 249 242 | 
             
                # @return [<Symbol>] the attributes which are populated from the database
         | 
| 250 243 | 
             
                # @see AttributeMetadata#fetched?
         | 
| @@ -430,13 +423,6 @@ module CaRuby | |
| 430 423 | 
             
                def add_mandatory_attributes(*attributes)
         | 
| 431 424 | 
             
                  attributes.each { |attr| @local_mndty_attrs << standard_attribute(attr) }
         | 
| 432 425 | 
             
                end
         | 
| 433 | 
            -
                
         | 
| 434 | 
            -
                # @param [Symbol] ref_attr the reference attribute of the domain object being copied
         | 
| 435 | 
            -
                # @param [<Symbol>] copy_attrs  the domain attributes to copy
         | 
| 436 | 
            -
                def add_storable_copy_attributes(ref_attr, copy_attrs)
         | 
| 437 | 
            -
                  @stbl_cp_attrs ||= {}
         | 
| 438 | 
            -
                  @stbl_cp_attrs[ref_attr] = copy_attrs
         | 
| 439 | 
            -
                end
         | 
| 440 426 |  | 
| 441 427 | 
             
                # Marks the given attribute with flags supported by {AttributeMetadata#qualify}.
         | 
| 442 428 | 
             
                def qualify_attribute(attribute, *flags)
         | 
| @@ -483,14 +469,6 @@ module CaRuby | |
| 483 469 | 
             
                  attribute_metadata_hash.each_value(&block)
         | 
| 484 470 | 
             
                end
         | 
| 485 471 |  | 
| 486 | 
            -
                # Makes a new synthetic attribute for each _method_ => _original_ hash entry.
         | 
| 487 | 
            -
                #
         | 
| 488 | 
            -
                # @param (see Class#offset_attr_accessor)
         | 
| 489 | 
            -
                def offset_attribute(hash, offset=nil)
         | 
| 490 | 
            -
                  offset_attr_accessor(hash, offset)
         | 
| 491 | 
            -
                  hash.each { |attr, original| add_attribute(attr, attribute_metadata(original).type) }
         | 
| 492 | 
            -
                end
         | 
| 493 | 
            -
             | 
| 494 472 | 
             
                # Collects the {AttributeMetadata#fetched_dependent?} and {AttributeMetadata#fetched_independent?}
         | 
| 495 473 | 
             
                # standard domain attributes.
         | 
| 496 474 | 
             
                #
         | 
| @@ -106,7 +106,7 @@ module CaRuby | |
| 106 106 | 
             
                def add_owner(klass, attribute=nil, inverse=nil)
         | 
| 107 107 | 
             
                  logger.debug { "Adding #{qp} owner #{klass.qp}..." }
         | 
| 108 108 | 
             
                  if @owner_attr_hash then
         | 
| 109 | 
            -
                    raise MetadataError.new("Can't add #{qp} owner #{klass.qp} after dependencies have been accessed | 
| 109 | 
            +
                    raise MetadataError.new("Can't add #{qp} owner #{klass.qp} after dependencies have been accessed")
         | 
| 110 110 | 
             
                  end
         | 
| 111 111 | 
             
                  @local_owner_attr_hash ||= {}
         | 
| 112 112 | 
             
                  @local_owner_attr_hash[klass] = attribute ||= detect_owner_attribute(klass, inverse)
         | 
| @@ -129,6 +129,14 @@ module CaRuby | |
| 129 129 | 
             
                  add_alias(aliaz, attribute)
         | 
| 130 130 | 
             
                end
         | 
| 131 131 |  | 
| 132 | 
            +
                # Makes a new synthetic attribute for each _method_ => _original_ hash entry.
         | 
| 133 | 
            +
                #
         | 
| 134 | 
            +
                # @param (see Class#offset_attr_accessor)
         | 
| 135 | 
            +
                def offset_attribute(hash, offset=nil)
         | 
| 136 | 
            +
                  offset_attr_accessor(hash, offset)
         | 
| 137 | 
            +
                  hash.each { |attr, original| add_attribute(attr, attribute_metadata(original).type) }
         | 
| 138 | 
            +
                end
         | 
| 139 | 
            +
             | 
| 132 140 | 
             
                # Modifies the given attribute writer method if necessary to update the given inverse_attr value.
         | 
| 133 141 | 
             
                # This method is called on dependent and attributes qualified as inversible.
         | 
| 134 142 | 
             
                #
         | 
| @@ -102,7 +102,8 @@ module CaRuby | |
| 102 102 | 
             
                # for the _attribute_ to modify.
         | 
| 103 103 | 
             
                #
         | 
| 104 104 | 
             
                # The migratable reference attributes consist of the non-collection
         | 
| 105 | 
            -
                # {ResourceAttributes#saved_independent_attributes}  | 
| 105 | 
            +
                # {ResourceAttributes#saved_independent_attributes} and 
         | 
| 106 | 
            +
                # {ResourceAttributes#unidirectional_dependent_attributes} which don't already have a value.
         | 
| 106 107 | 
             
                # For each such migratable attribute, if there is a single instance of the attribute
         | 
| 107 108 | 
             
                # type in the given migrated domain objects, then the attribute is set to that
         | 
| 108 109 | 
             
                # migrated instance.
         | 
| @@ -121,6 +122,10 @@ module CaRuby | |
| 121 122 | 
             
                    ref = migratable__reference_value(attr, migrated) 
         | 
| 122 123 | 
             
                    migratable__set_reference(attr, ref, row, mth_hash) if ref
         | 
| 123 124 | 
             
                  end
         | 
| 125 | 
            +
                  self.class.unidirectional_dependent_attributes.each do |attr|
         | 
| 126 | 
            +
                    ref = migratable__reference_value(attr, migrated) 
         | 
| 127 | 
            +
                    migratable__set_reference(attr, ref, row, mth_hash) if ref
         | 
| 128 | 
            +
                  end
         | 
| 124 129 | 
             
                end
         | 
| 125 130 |  | 
| 126 131 | 
             
                private
         | 
| @@ -27,11 +27,12 @@ module CaRuby | |
| 27 27 | 
             
                # Creates a new Migrator.
         | 
| 28 28 | 
             
                #
         | 
| 29 29 | 
             
                # @param [{Symbol => Object}] opts the migration options
         | 
| 30 | 
            -
                # @option opts [String] :database  | 
| 30 | 
            +
                # @option opts [String] :database required application {CaRuby::Database}
         | 
| 31 31 | 
             
                # @option opts [String] :target required target domain class
         | 
| 32 | 
            +
                # @option opts [String] :mapping required input field => caTissue attribute mapping file
         | 
| 32 33 | 
             
                # @option opts [String] :input required source file to migrate
         | 
| 33 34 | 
             
                # @option opts [String] :shims optional array of shim files to load
         | 
| 34 | 
            -
                # @option opts [String] :bad  | 
| 35 | 
            +
                # @option opts [String] :bad optional invalid record file
         | 
| 35 36 | 
             
                # @option opts [String] :offset zero-based starting source record number to process (default 0)
         | 
| 36 37 | 
             
                def initialize(opts)
         | 
| 37 38 | 
             
                  parse_options(opts)
         | 
| @@ -57,7 +58,7 @@ module CaRuby | |
| 57 58 | 
             
                # @yield [target] operation performed on the migration target
         | 
| 58 59 | 
             
                # @yieldparam [Resource] target the migrated target domain object
         | 
| 59 60 | 
             
                def migrate(&block)
         | 
| 60 | 
            -
                  raise MigrationError.new(" | 
| 61 | 
            +
                  raise MigrationError.new("The caRuby Migrator migrate block is missing") unless block_given?
         | 
| 61 62 | 
             
                  migrate_rows(&block)
         | 
| 62 63 | 
             
                end
         | 
| 63 64 |  | 
| @@ -307,7 +308,7 @@ module CaRuby | |
| 307 308 | 
             
                        logger.warn("Migration not performed on record #{rec_no}.")
         | 
| 308 309 | 
             
                        @loader.reject(row)
         | 
| 309 310 | 
             
                      else
         | 
| 310 | 
            -
                        raise MigrationError.new("Migration not performed on record #{rec_no} | 
| 311 | 
            +
                        raise MigrationError.new("Migration not performed on record #{rec_no}")
         | 
| 311 312 | 
             
                      end
         | 
| 312 313 | 
             
                    end
         | 
| 313 314 | 
             
                    rec_cnt += 1
         | 
| @@ -437,7 +438,7 @@ module CaRuby | |
| 437 438 | 
             
                # @return [Resource, nil] obj if the save is successful, nil otherwise
         | 
| 438 439 | 
             
                def save(obj, database)
         | 
| 439 440 | 
             
                  logger.debug { "Migrator saving #{obj}..." }
         | 
| 440 | 
            -
                  database. | 
| 441 | 
            +
                  database.save(obj)
         | 
| 441 442 | 
             
                  logger.debug { "Migrator saved #{obj}." }
         | 
| 442 443 | 
             
                end
         | 
| 443 444 |  | 
    
        data/lib/caruby/resource.rb
    CHANGED
    
    | @@ -84,6 +84,11 @@ module CaRuby | |
| 84 84 | 
             
                  @validated = true
         | 
| 85 85 | 
             
                  self
         | 
| 86 86 | 
             
                end
         | 
| 87 | 
            +
                
         | 
| 88 | 
            +
                # @return [Boolean] whether this domain object has {#searchable_attributes}
         | 
| 89 | 
            +
                def searchable?
         | 
| 90 | 
            +
                  not searchable_attributes.nil?
         | 
| 91 | 
            +
                end
         | 
| 87 92 |  | 
| 88 93 | 
             
                # Returns the attributes to use for a search using this domain object as a template, determined
         | 
| 89 94 | 
             
                # as follows:
         | 
| @@ -338,14 +343,21 @@ module CaRuby | |
| 338 343 | 
             
                  match_in(others) or others.detect { |other| match_without_owner_attribute(other) }
         | 
| 339 344 | 
             
                end
         | 
| 340 345 |  | 
| 346 | 
            +
                # Returns whether the other domain object matches this domain object on a secondary
         | 
| 347 | 
            +
                # key without owner attributes. Defaults are added to this object in order to pick up
         | 
| 348 | 
            +
                # potential secondary key values.
         | 
| 349 | 
            +
                # 
         | 
| 341 350 | 
             
                # @param [<Resource>] other the domain object to match against
         | 
| 342 | 
            -
                # @return [Boolean] whether the other domain object matches this domain object on a | 
| 343 | 
            -
                #   key without owner attributes
         | 
| 351 | 
            +
                # @return [Boolean] whether the other domain object matches this domain object on a
         | 
| 352 | 
            +
                #   secondary key without owner attributes
         | 
| 344 353 | 
             
                def match_without_owner_attribute(other)
         | 
| 345 354 | 
             
                  oattrs = self.class.owner_attributes
         | 
| 346 355 | 
             
                  return if oattrs.empty?
         | 
| 356 | 
            +
                  # add defaults to pick up potential secondary key value
         | 
| 357 | 
            +
                  add_defaults_local
         | 
| 358 | 
            +
                  # match on the secondary key
         | 
| 347 359 | 
             
                  self.class.secondary_key_attributes.all? do |attr|
         | 
| 348 | 
            -
                    matches_attribute_value?(other, attr, send(attr))
         | 
| 360 | 
            +
                    oattrs.include?(attr) or matches_attribute_value?(other, attr, send(attr))
         | 
| 349 361 | 
             
                  end
         | 
| 350 362 | 
             
                end
         | 
| 351 363 |  | 
    
        data/lib/caruby/util/visitor.rb
    CHANGED
    
    | @@ -306,7 +306,7 @@ class Visitor | |
| 306 306 | 
             
                def visit(*nodes)
         | 
| 307 307 | 
             
                  if nodes.size == 1 then
         | 
| 308 308 | 
             
                    nodes = nodes.first
         | 
| 309 | 
            -
                    raise ArgumentError.new("Sync visitor requires a pair of entry nodes | 
| 309 | 
            +
                    raise ArgumentError.new("Sync visitor requires a pair of entry nodes") unless nodes.size == 2
         | 
| 310 310 | 
             
                  end
         | 
| 311 311 | 
             
                  super(nodes)
         | 
| 312 312 | 
             
                end
         | 
| @@ -318,7 +318,7 @@ class Visitor | |
| 318 318 | 
             
                def to_enum(*nodes)
         | 
| 319 319 | 
             
                  if nodes.size == 1 then
         | 
| 320 320 | 
             
                    nodes = nodes.first
         | 
| 321 | 
            -
                    raise ArgumentError.new("Sync visitor requires a pair of entry nodes | 
| 321 | 
            +
                    raise ArgumentError.new("Sync visitor requires a pair of entry nodes") unless nodes.size == 2
         | 
| 322 322 | 
             
                  end
         | 
| 323 323 | 
             
                  super(nodes)
         | 
| 324 324 | 
             
                end
         | 
    
        data/lib/caruby/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -6,23 +6,14 @@ executables: [] | |
| 6 6 |  | 
| 7 7 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 8 8 | 
             
              prerelease: false
         | 
| 9 | 
            -
              version: 1.4. | 
| 9 | 
            +
              version: 1.4.2
         | 
| 10 10 | 
             
              segments: 
         | 
| 11 11 | 
             
              - 1
         | 
| 12 12 | 
             
              - 4
         | 
| 13 | 
            -
              -  | 
| 13 | 
            +
              - 2
         | 
| 14 14 | 
             
            post_install_message: 
         | 
| 15 | 
            -
            date: 2010- | 
| 15 | 
            +
            date: 2010-11-30 08:00:00 +00:00
         | 
| 16 16 | 
             
            files: 
         | 
| 17 | 
            -
            - doc/website/index.html
         | 
| 18 | 
            -
            - doc/website/install.html
         | 
| 19 | 
            -
            - doc/website/quick_start.html
         | 
| 20 | 
            -
            - doc/website/tissue.html
         | 
| 21 | 
            -
            - doc/website/uom.html
         | 
| 22 | 
            -
            - doc/website/css/site.css
         | 
| 23 | 
            -
            - doc/website/images/avatar.png
         | 
| 24 | 
            -
            - doc/website/images/favicon.ico
         | 
| 25 | 
            -
            - doc/website/images/logo.png
         | 
| 26 17 | 
             
            - lib/caruby.rb
         | 
| 27 18 | 
             
            - lib/caruby/database.rb
         | 
| 28 19 | 
             
            - lib/caruby/resource.rb
         | 
| @@ -106,13 +97,13 @@ signing_key: | |
| 106 97 | 
             
            cert_chain: []
         | 
| 107 98 |  | 
| 108 99 | 
             
            name: caruby-core
         | 
| 109 | 
            -
            has_rdoc:  | 
| 100 | 
            +
            has_rdoc: yard
         | 
| 110 101 | 
             
            platform: ruby
         | 
| 111 102 | 
             
            summary: Ruby facade for caBIG applications.
         | 
| 112 103 | 
             
            default_executable: 
         | 
| 113 104 | 
             
            bindir: bin
         | 
| 114 | 
            -
            licenses:  | 
| 115 | 
            -
             | 
| 105 | 
            +
            licenses: 
         | 
| 106 | 
            +
            - MIT
         | 
| 116 107 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 117 108 | 
             
              none: false
         | 
| 118 109 | 
             
              requirements: 
         | 
    
        data/doc/website/css/site.css
    DELETED
    
    
| Binary file | 
| Binary file | 
    
        data/doc/website/images/logo.png
    DELETED
    
    | Binary file | 
    
        data/doc/website/index.html
    DELETED
    
    | @@ -1,82 +0,0 @@ | |
| 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®</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®</a> application
         | 
| 52 | 
            -
                  services. caRuby presents a <a href="http://jruby.org">JRuby</a> caBIG faç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>
         | 
    
        data/doc/website/install.html
    DELETED
    
    | @@ -1,87 +0,0 @@ | |
| 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®</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>
         | 
| @@ -1,87 +0,0 @@ | |
| 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®</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>
         | 
    
        data/doc/website/tissue.html
    DELETED
    
    | @@ -1,85 +0,0 @@ | |
| 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 | 
            -
             | 
    
        data/doc/website/uom.html
    DELETED
    
    | @@ -1,10 +0,0 @@ | |
| 1 | 
            -
            UOM implements Units of Measurement based on the
         | 
| 2 | 
            -
            <a href=http://physics.nist.gov/Pubs/SP330/sp330.pdf>International System of Units (SI)</a>.
         | 
| 3 | 
            -
            The base SI units, metric scalar factors and all possible combinations of these units are supported out of the box.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Common alternative non-metric measurement systems, e.g. US Customary units, are supported with conversions between
         | 
| 6 | 
            -
            these units and the SI units. Additional units can be defined with conversion to an existing unit. UOM infers
         | 
| 7 | 
            -
            full conversion capability between units of the same dimension from the minimal number of conversion definitions.
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            Arithmetic operations between UOM Measurement objects converts the measurement units and scalar factors as necessary,
         | 
| 10 | 
            -
            including unit products, quotients and powers of arbitrary complexity.
         |