class CPEE::Properties::Get

Public Instance Methods

response() click to toggle source
# File lib/cpee/implementation_properties.rb, line 103
def response
  id = @a[0]
  opts = @a[1]
  doc = XML::Smart::open_unprotected(opts[:properties_empty])
  doc.register_namespace 'p', 'http://cpee.org/ns/properties/2.0'
  doc.find('/p:properties/p:state').first.text = CPEE::Persistence::extract_item(id,opts,'state')
  doc.find('/p:properties/p:state/@changed').first.value = CPEE::Persistence::extract_item(id,opts,'state/@changed')
  doc.find('/p:properties/p:status/p:id').first.text = CPEE::Persistence::extract_item(id,opts,'status/id')
  doc.find('/p:properties/p:status/p:message').first.text = CPEE::Persistence::extract_item(id,opts,'status/message')
  %w{dataelements endpoints attributes}.each do |item|
    des = doc.find("/p:properties/p:#{item}").first
    CPEE::Persistence::extract_list(id,opts,item).each{ |de| des.add(*de) }
  end
  des = doc.find("/p:properties/p:positions").first
  CPEE::Persistence::extract_set(id,opts,'positions').each do |de|
    node = des.add(*de)
    if pt = CPEE::Persistence::extract_item(id,opts,File.join('positions',de[0],'@passthrough'))
      node.attributes['passthrough'] = pt
    end
  end
  doc.find('/p:properties/p:dsl').first.text = CPEE::Persistence::extract_item(id,opts,'dsl')
  if val = CPEE::Persistence::extract_item(id,opts,'dslx') #{{{
    doc.find('/p:properties/p:dslx').first.add XML::Smart::string(val).root rescue nil
  end #}}}
  if val = CPEE::Persistence::extract_item(id,opts,'description') #{{{
    doc.find('/p:properties/p:description').first.add XML::Smart::string(val).root rescue nil
  end #}}}
  doc.find('/p:properties/p:transformation/p:description').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/description')
  doc.find('/p:properties/p:transformation/p:dataelements').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/dataelements')
  doc.find('/p:properties/p:transformation/p:endpoints').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/endpoints')
  doc.find('/p:properties/p:transformation/p:description/@type').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/description/@type')
  doc.find('/p:properties/p:transformation/p:dataelements/@type').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/dataelements/@type')
  doc.find('/p:properties/p:transformation/p:endpoints/@type').first.text = CPEE::Persistence::extract_item(id,opts,'transformation/endpoints/@type')
  Riddl::Parameter::Complex.new('properties','application/xml',doc.to_s)
end