Sha256: 97c80fa1a787acbcdc9db564906c3c12af7c87334c9fb75770c4dff1374c38d2

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

require 'delegate'
module Rfm
  module Metadata
  
    class Datum   #< DelegateClass(Field)
    
      def get_mapped_name(name, resultset)
      	(resultset && resultset.layout && resultset.layout.field_mapping[name]) || name
      end
      
			def main_callback(cursor)
				resultset = cursor.top.object
				name = get_mapped_name(@attributes['name'].to_s, resultset)
				field = resultset.field_meta[name]
				data = @attributes['data']
				cursor.parent.object[name.downcase] = field.coerce(data)
			end
			
			def portal_callback(cursor)
				resultset = cursor.top.object
				table, name = @attributes['name'].to_s.split('::')
				#puts ['DATUM_portal_callback_01', table, name].join(', ')
				name = get_mapped_name(name, resultset)
				field = resultset.portal_meta[table.downcase][name.downcase]
				data = @attributes['data']
				#puts ['DATUM_portal_callback_02', resultset.class, table, name, field, data].join(', ')
				#(y resultset.portal_meta) unless field
				cursor.parent.object[name.downcase] = field.coerce(data)
			end
      
      # Should return value only.
			def handler_callback(cursor)
				record = cursor.parent.object
				resultset = cursor.top.object

				name = get_mapped_name(@attributes['name'].to_s, resultset)
				field = resultset.field_meta[name]
				data = @attributes['data']
				#puts ["\nDATUM", name, record.class, resultset.class, data]
				record[name] = field.coerce(data)
			end
      
    end # Field
  end # Metadata
end # Rfm

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ginjo-rfm-3.0.4 lib/rfm/metadata/datum.rb
ginjo-rfm-3.0.1 lib/rfm/metadata/datum.rb
ginjo-rfm-3.0.0 lib/rfm/metadata/datum.rb