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