; ; 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) 2013 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 BFieldTraceOptions ; element from the ; <a href=“http://sscweb.gsfc.nasa.gov/“>Satellite Situation Center</a> ; (SSC) XML schema. ; ; @copyright Copyright (c) 2013 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 SpdfBFieldTraceOptions object. ; ; @keyword coordinateSystem {in} {optional} {type=string} ; {default=‘Gse’} ; specifies the coordinate system is to be included in ; the output. ; @keyword hemisphere {in} {optional} {type=string} {default=‘North’} ; specifies the hemisphere to be included in the output. ; @keyword footpointLatitude {in} {optional} {type=boolean} ; {default=false} ; specifies whether the footpoint latitude value is to ; be included in the output. ; @keyword footpointLongitude {in} {optional} {type=boolean} ; {default=false} ; specifies whether the footpoint longitude value is to ; be included in the output. ; @keyword fieldLineLength {in} {optional} {type=boolean} ; {default=false} ; specifies whether the field line length value is to be ; included in the output. ; @returns reference to an SpdfBFieldTraceOptions object. ;- function SpdfBFieldTraceOptions::init, coordinateSystem=coordinateSystem, coordinateSystem = coordinateSystem, hemisphere = hemisphere, footpointLatitude=footpointLatitude, footpointLatitude = footpointLatitude, footpointLongitude = footpointLongitude, $ fieldLineLength = fieldLineLength compile_opt idl2

if keyword_set(coordinateSystem) then begin

    self.coordinateSystem = coordinateSystem
endif else begin

    self.coordinateSystem = 'Gse'
endelse

if keyword_set(hemisphere) then begin

    self.hemisphere = hemisphere
endif else begin

    self.hemisphere = 'North'
endelse

if keyword_set(footpointLatitude) then begin

    self.footpointLatitude = footpointLatitude
endif else begin

    self.footpointLatitude = 0b
endelse

if keyword_set(footpointLongitude) then begin

    self.footpointLongitude = footpointLongitude
endif else begin

    self.footpointLongitude = 0b
endelse

if keyword_set(fieldLineLength) then begin

    self.fieldLineLength = fieldLineLength
endif else begin

    self.fieldLineLength = 0b
endelse

return, self

end

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

end

;+ ; Gets the coordinate system value. ; ; @returns coordinate system value. ;- function SpdfBFieldTraceOptions::getCoordinateSystem compile_opt idl2

return, self.coordinateSystem

end

;+ ; Gets the hemisphere value. ; ; @returns hemisphere value. ;- function SpdfBFieldTraceOptions::getHemisphere compile_opt idl2

return, self.hemisphere

end

;+ ; Gets the footpoint latitude value. ; ; @returns footpoint latitude value. ;- function SpdfBFieldTraceOptions::getFootpointLatitude compile_opt idl2

return, self.footpointLatitude

end

;+ ; Gets the footpoint longitude value. ; ; @returns footpoint longitude value. ;- function SpdfBFieldTraceOptions::getFootpointLongitude compile_opt idl2

return, self.footpointLongitude

end

;+ ; Gets the field-line length value. ; ; @returns field-line length value. ;- function SpdfBFieldTraceOptions::getFieldLineLength compile_opt idl2

return, self.fieldLineLength

end

;+ ; Creates an BFieldTraceOptions 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. ; @returns a reference to a new IDLffXMLDOMElement representation of ; this object. ;- function SpdfBFieldTraceOptions::createDomElement, $ doc compile_opt idl2

bFieldTraceOptionsElement = doc->createElement('BFieldTraceOptions')

coordinateSystemElement = doc->createElement('CoordinateSystem')
ovoid = $
    bFieldTraceOptionsElement->appendChild(coordinateSystemElement)
coordinateSystemNode = doc->createTextNode(self.coordinateSystem)
ovoid = coordinateSystemElement->appendChild(coordinateSystemNode)

hemisphereElement = doc->createElement('Hemisphere')
ovoid = bFieldTraceOptionsElement->appendChild(hemisphereElement)
hemisphereNode = doc->createTextNode(self.hemisphere)
ovoid = hemisphereElement->appendChild(hemisphereNode)

footpointLatitudeElement = doc->createElement('FootpointLatitude')
ovoid = $
    bFieldTraceOptionsElement->appendChild(footpointLatitudeElement)
if self.footpointLatitude eq 1b then begin

    footpointLatitudeText = 'true'
endif else begin

    footpointLatitudeText = 'false'
endelse
footpointLatitudeNode = doc->createTextNode(footpointLatitudeText)
ovoid = footpointLatitudeElement->appendChild(footpointLatitudeNode)

footpointLongitudeElement = doc->createElement('FootpointLongitude')
ovoid = $
    bFieldTraceOptionsElement->appendChild( $
        footpointLongitudeElement)
if self.footpointLongitude eq 1b then begin

    footpointLongitudeText = 'true'
endif else begin

    footpointLongitudeText = 'false'
endelse
footpointLongitudeNode = doc->createTextNode(footpointLongitudeText)
ovoid = $
    footpointLongitudeElement->appendChild(footpointLongitudeNode)

fieldLineLengthElement = doc->createElement('FieldLineLength')
ovoid = $
    bFieldTraceOptionsElement->appendChild(fieldLineLengthElement)
if self.fieldLineLength eq 1b then begin

    fieldLineLengthText = 'true'
endif else begin

    fieldLineLengthText = 'false'
endelse
fieldLineLengthNode = doc->createTextNode(fieldLineLengthText)
ovoid = $
    fieldLineLengthElement->appendChild(fieldLineLengthNode)

return, bFieldTraceOptionsElement

end

;+ ; Defines the SpdfBFieldTraceOptions class. ; ; @field coordinateSystem specifies whether the coordinate system is ; to be included in the output. ; @field hemisphere specifies whether the hemisphere to be included ; in the output. ; @field footpointLatitude specifies whether the footpoint latitude ; value is to be included in the output. ; @field footpointLongitude specifies whether the footpoint longitude ; value is to be included in the output. ; @field fieldLineLength specifies whether the field line length ; value is to be included in the output. ;- pro SpdfBFieldTraceOptions__define compile_opt idl2 struct = { SpdfBFieldTraceOptions, $

    coordinateSystem:'', $
    hemisphere:'', $
    footpointLatitude:0b, $
    footpointLongitude:0b, $
    fieldLineLength:0b $
}

end