Class: CPEE::Properties::PutPositions

Inherits:
Riddl::Implementation
  • Object
show all
Defined in:
lib/cpee/implementation_properties.rb

Overview

}}}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.set(id, opts, xml) ⇒ Object

{{{



545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
# File 'lib/cpee/implementation_properties.rb', line 545

def PutPositions::set(id,opts,xml)
  doc = XML::Smart::string(xml)
  content = {}
  newkeys = []
  doc.find("/*/*").map do |ele|
    val = { 'position' => ele.qname.name }
    val['passthrough'] = ele.attributes['passthrough'] if ele.attributes['passthrough']
    content[ele.text] ||= []
    content[ele.text] << val
    newkeys << ele.qname.name
  end
  oldkeys = CPEE::Persistence::extract_set(id,opts,'positions').to_h.keys
  del = oldkeys - newkeys
  del.each do |key|
    val = { 'position' => key }
    content['unmark'] ||= []
    content['unmark'] << val
  end
  CPEE::Persistence::set_item(id,opts,'position',content)
end

Instance Method Details

#responseObject



566
567
568
569
570
571
572
573
574
575
576
577
578
579
# File 'lib/cpee/implementation_properties.rb', line 566

def response
  id = @a[0]
  opts = @a[1]
  if opts[:statemachine].readonly? id
    @status = 423
  else
    begin
      PutPositions::set(id,opts,@p[0].value.read)
    rescue => e
      @status = 400
    end
  end
  nil
end