; ; NOSA HEADER START ; ; The contents of this file are subject to the terms of the NASA Open ; Source Agreement (NOSA), Version 1.3 only (the "Agreement"). You may ; not use this file except in compliance with the Agreement. ; ; You can obtain a copy of the agreement at ; docs/NASA_Open_Source_Agreement_1.3.txt ; or ; http://sscweb.gsfc.nasa.gov/WebServices/NASA_Open_Source_Agreement_1.3.txt. ; ; See the Agreement for the specific language governing permissions ; and limitations under the Agreement. ; ; When distributing Covered Code, include this NOSA HEADER in each ; file and include the Agreement file at ; docs/NASA_Open_Source_Agreement_1.3.txt. If applicable, add the ; following below this NOSA HEADER, with the fields enclosed by ; brackets "[]" replaced with your own identifying information: ; Portions Copyright [yyyy] [name of copyright owner] ; ; NOSA HEADER END ; ; Copyright (c) 2014 United States Government as represented by the ; National Aeronautics and Space Administration. No copyright is claimed ; in the United States under Title 17, U.S.Code. All Other Rights Reserved. ; ;

;+ ; This class is an IDL representation of the LocationFilter ; element from the ; <a href=“http://sscweb.gsfc.nasa.gov/“>Satellite Situation Center</a> ; (SSC) XML schema. ; ; Note: SSC’s filtering features do not support CDF output so this ; class is not required until this IDL library supports requests ; for text output. ; ; @copyright Copyright (c) 2014 United States Government as represented ; by the National Aeronautics and Space Administration. No ; copyright is claimed in the United States under Title 17, ; U.S.Code. All Other Rights Reserved. ; ; @author B. Harris ;-

;+ ; Creates an SpdfLocationFilter object. ; ; @keyword minimum {in} {optional} {type=boolean} ; specifies that the minimum value that should be ; included in the results. ; @keyword maximum {in} {optional} {type=boolean} ; specifies that the maximum value that should be ; included in the results. ; @keyword lowerLimit {in} {optional} {type=double} ; specifies that the lower limit of values that should ; be included in the results. ; @keyword upperLimit {in} {optional} {type=double} ; specifies that the upper limit of values that should ; be included in the results. ; @returns reference to an SpdfLocationFilter object. ;- function SpdfLocationFilter::init, minimum=minimum, minimum = minimum, maximum = maximum, lowerLimit=lowerLimit, lowerLimit = lowerLimit, upperLimit = upperLimit compile_opt idl2

if keyword_set(minimum) then begin

    self.minimum = minimum
endif else begin

    self.minimum = 0b
endelse

if keyword_set(maximum) then begin

    self.maximum = maximum
endif else begin

    self.maximum = 0b
endelse

if keyword_set(lowerLimit) then begin

    self.lowerLimit = lowerLimit
endif else begin

    self.lowerLimit = !values.d_nan
endelse

if keyword_set(upperLimit) then begin

    self.upperLimit = upperLimit
endif else begin

    self.upperLimit = !values.d_nan
endelse

self.spdfTime = obj_new('SpdfTimeInterval', $
                    '2014-01-01T00:00:00.000Z', $
                    '2014-01-02T00:00:00.000Z')

return, self

end

;+ ; Performs cleanup operations when this object is destroyed. ;- pro SpdfLocationFilter::cleanup compile_opt idl2

end

;+ ; Gets the Minimum value. ; ; @returns Minimum value. ;- function SpdfLocationFilter::getMinimum compile_opt idl2

return, self.minimum

end

;+ ; Gets the Maximum value. ; ; @returns Maximum value. ;- function SpdfLocationFilter::getMaximum compile_opt idl2

return, self.maximum

end

;+ ; Gets the LowerLimit value. ; ; @returns LowerLimit value. ;- function SpdfLocationFilter::getLowerLimit compile_opt idl2

return, self.lowerLimit

end

;+ ; Gets the UpperLimit value. ; ; @returns UpperLimit value. ;- function SpdfLocationFilter::getUpperLimit compile_opt idl2

return, self.upperLimit

end

;+ ; Creates an LocationFilter element using the given XML DOM document ; with the values of this object. ; ; @param doc {in} {type=IDLffXMLDOMDocument} ; document in which to create the DataRequest element. ; @param subClassName {in} {type=string} ; name of sub-class. ; @returns a reference to a new IDLffXMLDOMElement representation of ; this object. ;- function SpdfLocationFilter::createDomElement, doc, doc, subClassName compile_opt idl2

locationFilterElement = doc->createElement(subClassName)

minElement = doc->createElement('Minimum')
ovoid = locationFilterElement->appendChild(minElement)
if self.minimum eq 1b then begin

    minText = 'true'
endif else begin

    minText = 'false'
endelse
minNode = doc->createTextNode(minText)
ovoid = minElement->appendChild(minNode)

maxElement = doc->createElement('Maximum')
ovoid = locationFilterElement->appendChild(maxElement)
if self.maximum eq 1b then begin

    maxText = 'true'
endif else begin

    maxText = 'false'
endelse
maxNode = doc->createTextNode(maxText)
ovoid = maxElement->appendChild(maxNode)

if finite(self.lowerLimit) then begin

    lowerLimitElement = doc->createElement('LowerLimit')
    ovoid = locationFilterElement->appendChild(lowerLimitElement)
    lowerLimitNode = $
        doc->createTextNode( $
            string(self.lowerLimit, format='(%"%e")'))
    ovoid = lowerLimitElement->appendChild(lowerLimitNode)
endif

if finite(self.upperLimit) then begin

    upperLimitElement = doc->createElement('UpperLimit')
    ovoid = locationFilterElement->appendChild(upperLimitElement)
    upperLimitNode = $
        doc->createTextNode( $
            string(self.upperLimit, format='(%"%e")'))
    ovoid = upperLimitElement->appendChild(upperLimitNode)
endif

return, locationFilterElement

end

;+ ; Defines the SpdfLocationFilter class. ; ; @field minimum specifies that the minimum value should be included ; in the results. ; @field maximum specifies that the maximum value should be included ; in the results. ; @field lowerLimit specifies that the lower limit of values that ; should be included in the results. ; @field upperLimit specifies that the upper limit of values that ; should be included in the results. ; @field spdfTime constant object used to call “static” methods of ; SpdfTimeInterval class. ;- pro SpdfLocationFilter__define compile_opt idl2 struct = { SpdfLocationFilter, $

    minimum:0b, $
    maximum:0b, $
    lowerLimit:0d, $
    upperLimit:0d, $
    spdfTime:obj_new() $
}

end