Sha256: 162ca7dccb1142b3e29b97e82b3bb421ba9491a23a25942dcc6e3f62ea02bacb
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
module OData class Association attr_reader :name, :namespace, :relationship, :from_role, :to_role def initialize(nav_prop_element, edmx) @edmx = edmx # Get the edm namespace because it varies by version edm_ns = @edmx.xpath("edmx:Edmx/edmx:DataServices/*", "edmx" => "http://schemas.microsoft.com/ado/2007/06/edmx").first.namespaces['xmlns'].to_s @edmx_namespaces = { "edmx" => "http://schemas.microsoft.com/ado/2007/06/edmx", "edm" => edm_ns } parse_nav_prop(nav_prop_element) end private def parse_nav_prop(element) @relationship = element['Relationship'] relationship_parts = @relationship.split('.') @name = relationship_parts.pop @namespace = relationship_parts.join('.') @from_role = role_hash(@name, element['FromRole']) @to_role = role_hash(@name, element['ToRole']) end def role_hash(association_name, role_name) # Find the end role based on the assocation name role_xpath = "/edmx:Edmx/edmx:DataServices/edm:Schema[@Namespace='#{@namespace}']/edm:Association[@Name='#{association_name}']/edm:End[@Role='#{role_name}']" role_element = @edmx.xpath(role_xpath, @edmx_namespaces).first { role_name => { :edmx_type => "#{role_element['Type']}", :multiplicity => "#{role_element['Multiplicity']}" }} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby_odata-0.1.0 | lib/ruby_odata/association.rb |