class SOSHelper::GetObservation
GetObservation
just focus on two things:
filter conditions into hash send the conditions to specific @request
Public Class Methods
new(args={})
click to toggle source
# File lib/observation.rb, line 29 def initialize(args={}) @request = args[:request] @xml = ObservationRequest.dup @request_body = nil @tp = [] @body = "" end
Public Instance Methods
body(body=nil)
click to toggle source
# File lib/observation.rb, line 44 def body(body=nil) @body = body end
condition()
click to toggle source
# File lib/observation.rb, line 62 def condition @condition ||= Factory.new() end
filter(custom={})
click to toggle source
filter() => no argument to return @condtion filter({:condition => “value”}) => extend @condition
# File lib/observation.rb, line 50 def filter(custom={}) raise ArgumentError, 'Filters need to be hash' unless custom.is_a? Hash return condition.to_s if custom == {} condition.merge! custom p condition self end
inspect()
click to toggle source
# File lib/observation.rb, line 58 def inspect "<GetObservation 0x#{self.__id__} @condition= #{condition}>" end
observedProperty=(list)
click to toggle source
# File lib/observation.rb, line 74 def observedProperty=(list) filter({observedProperty: list}) end
offering=(list)
click to toggle source
# File lib/observation.rb, line 66 def offering=(list) filter({offering: list}) end
procedure=(list)
click to toggle source
# File lib/observation.rb, line 70 def procedure=(list) filter({procedure: list}) end
randomID()
click to toggle source
# File lib/observation.rb, line 78 def randomID tp = "tp_" + rand(100000000).to_s (unique? tp) ? tp : randomID end
send(body=nil, &block)
click to toggle source
Without preset Conditions is Okay
# File lib/observation.rb, line 38 def send(body=nil, &block) raise RuntimeError, 'Need to set request' if @request.nil? @body = condition.transform @xml if body.nil? @request.post(@body, &block) if block_given? end
temporalFilter=(id=randomID, range)
click to toggle source
# File lib/observation.rb, line 87 def temporalFilter=(id=randomID, range) @tp << randomID filter({ temporalFilter: { during: { valueReference: "phenomenonTime", timePeriod: { attributes: { id: id }, range: range } } } }) end
unique?(tp)
click to toggle source
# File lib/observation.rb, line 83 def unique?(tp) not @tp.include? tp end