; ; 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 FormatOptions ; element from the ; <a href=“http://sscweb.gsfc.nasa.gov/“>Satellite Situation Center</a> ; (SSC) XML schema. ; ; @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 SpdfFormatOptions object. ; ; @keyword dateFormat {in} {optional} {type=string} {default=‘yyyy_ddd’} ; specifies the format for date values (‘yyyy_ddd’, ; ‘yy_mm_dd’, ‘yy_Mmm_dd’, ‘yy_CMMM_dd’) ; @keyword timeFormat {in} {optional} {type=string} {default=‘hh_hhhh’} ; specifies the format for time values (‘hh_hhhh’, ; ‘hh_mm_ss’, ‘hh_mm’) ; @keyword distanceFormat {in} {optional} {type=string} {default=‘Km’} ; specifies the units for distance values (‘Re’, ‘Km’, ; ‘IntegerKm’, ‘ScientificNotationKm’) ; @keyword distanceDigits {in} {optional} {type=int} {default=2} ; specifies the number of decimal places to include when ; displaying distance values in scientific notation. ; @keyword degreeFormat{in} {optional} {type=string} {default=‘Decimal’} ; specifies the format for degree values (‘Decimal’, ; ‘Minutes’, ‘MinutesSeconds’) ; @keyword degreeDigits {in} {optional} {type=int} {default=2} ; specifies the number of decimal places to include when ; displaying degree values. ; @keyword latLonFormat {in} {optional} {type=string} ; {default=‘Lat90Lon360’} ; specifies the format for direction/range values ; (‘Lat90Lon360’, ‘Lat90Lon180’, ‘Lat90SnLon180We’) ; @keyword cdf {in} {optional} {type=boolean} {default=false} ; boolean value indicating whether the output should be a ; CDF file. ; @keyword linesPerPage {in} {optional} {type=int} {default=55} ; specifies the number of lines per page for text output. ; @returns reference to an SpdfFormatOptions object. ;- function SpdfFormatOptions::init, dateFormat=dateFormat, dateFormat = dateFormat, timeFormat = timeFormat, distanceFormat=distanceFormat, distanceFormat = distanceFormat, distanceDigits = distanceDigits, degreeFormat=degreeFormat, degreeFormat = degreeFormat, degreeDigits = degreeDigits, latLonFormat=latLonFormat, latLonFormat = latLonFormat, cdf = cdf, $ linesPerPage = linesPerPage compile_opt idl2

if keyword_set(dateFormat) then begin

    self.dateFormat = dateFormat
endif else begin

    self.dateFormat = 'yyyy_ddd'
endelse

if keyword_set(timeFormat) then begin

    self.timeFormat = timeFormat
endif else begin

    self.timeFormat = 'hh_hhhh'
endelse

if keyword_set(distanceFormat) then begin

    self.distanceFormat = distanceFormat
endif else begin

    self.distanceFormat = 'Km'
endelse

if keyword_set(distanceDigits) then begin

    self.distanceDigits = distanceDigits
endif else begin

    self.distanceDigits = 2
endelse

if keyword_set(degreeFormat) then begin

    self.degreeFormat = degreeFormat
endif else begin

    self.degreeFormat = 'Decimal'
endelse

if keyword_set(degreeDigits) then begin

    self.degreeDigits = degreeDigits
endif else begin

    self.degreeDigits = 2
endelse

if keyword_set(latLonFormat) then begin

    self.latLonFormat = latLongFormat
endif else begin

    self.latLonFormat = 'Lat90Lon360'
endelse

if keyword_set(cdf) then begin

    self.cdf = cdf
endif else begin

    self.cdf = 0b
endelse

if keyword_set(linesPerPage) then begin

    self.linesPerPage = linesPerPage
endif else begin

    self.linesPerPage = 55
endelse

return, self

end

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

end

;+ ; Gets the dateFormat value. ; ; @returns dateFormat value. ;- function SpdfFormatOptions::getDateFormat compile_opt idl2

return, self.dateFormat

end

;+ ; Gets the timeFormat value. ; ; @returns timeFormat value. ;- function SpdfFormatOptions::getTimeFormat compile_opt idl2

return, self.timeFormat

end

;+ ; Gets the distanceFormat value. ; ; @returns distanceFormat value. ;- function SpdfFormatOptions::getDistanceFormat compile_opt idl2

return, self.distanceFormat

end

;+ ; Gets the distanceDigits value. ; ; @returns distanceDigits value. ;- function SpdfFormatOptions::getDistanceDigits compile_opt idl2

return, self.distanceDigits

end

;+ ; Gets the degreeFormat value. ; ; @returns degreeFormat value. ;- function SpdfFormatOptions::getDegreeFormat compile_opt idl2

return, self.degreeFormat

end

;+ ; Gets the degreeDigits value. ; ; @returns degreeDigits value. ;- function SpdfFormatOptions::getDegreeDigits compile_opt idl2

return, self.degreeDigits

end

;+ ; Gets the latLonFormat value. ; ; @returns latLonFormat value. ;- function SpdfFormatOptions::getLatLonFormat compile_opt idl2

return, self.latLonFormat

end

;+ ; Gets the cdf value. ; ; @returns cdf value. ;- function SpdfFormatOptions::getCdf compile_opt idl2

return, self.cdf

end

;+ ; Gets the linesPerPage value. ; ; @returns linesPerPage value. ;- function SpdfFormatOptions::getLinesPerPage compile_opt idl2

return, self.linesPerPage

end

;+ ; Creates an FormatOptions 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 SpdfFormatOptions::createDomElement, $ doc compile_opt idl2

formatOptionsElement = doc->createElement('FormatOptions')

dateFormatElement = doc->createElement('DateFormat')
ovoid = formatOptionsElement->appendChild(dateFormatElement)
dateFormatNode = doc->createTextNode(self.dateFormat)
ovoid = dateFormatElement->appendChild(dateFormatNode)

timeFormatElement = doc->createElement('TimeFormat')
ovoid = formatOptionsElement->appendChild(timeFormatElement)
timeFormatNode = doc->createTextNode(self.timeFormat)
ovoid = timeFormatElement->appendChild(timeFormatNode)

distanceFormatElement = doc->createElement('DistanceFormat')
ovoid = formatOptionsElement->appendChild(distanceFormatElement)
distanceFormatNode = doc->createTextNode(self.distanceFormat)
ovoid = distanceFormatElement->appendChild(distanceFormatNode)

distanceDigitsElement = doc->createElement('DistanceDigits')
ovoid = formatOptionsElement->appendChild(distanceDigitsElement)
distanceDigitsNode = $
    doc->createTextNode( $
        string(self.distanceDigits, format='(%"%d")'))
ovoid = distanceDigitsElement->appendChild(distanceDigitsNode)

degreeFormatElement = doc->createElement('DegreeFormat')
ovoid = formatOptionsElement->appendChild(degreeFormatElement)
degreeFormatNode = doc->createTextNode(self.degreeFormat)
ovoid = degreeFormatElement->appendChild(degreeFormatNode)

degreeDigitsElement = doc->createElement('DegreeDigits')
ovoid = formatOptionsElement->appendChild(degreeDigitsElement)
degreeDigitsNode = $
    doc->createTextNode( $
        string(self.degreeDigits, format='(%"%d")'))
ovoid = degreeDigitsElement->appendChild(degreeDigitsNode)

latLonFormatElement = doc->createElement('LatLonFormat')
ovoid = formatOptionsElement->appendChild(latLonFormatElement)
latLonFormatNode = doc->createTextNode(self.latLonFormat)
ovoid = latLonFormatElement->appendChild(latLonFormatNode)

cdfElement = doc->createElement('Cdf')
ovoid = formatOptionsElement->appendChild(cdfElement)
if self.cdf eq 1b then begin

    cdfText = 'true'
endif else begin

    cdfText = 'false'
endelse
cdfNode = doc->createTextNode(cdfText)
ovoid = cdfElement->appendChild(cdfNode)

linesPerPageElement = doc->createElement('LinesPerPage')
ovoid = formatOptionsElement->appendChild(linesPerPageElement)
linesPerPageNode = $
    doc->createTextNode( $
        string(self.linesPerPage, format='(%"%d")'))
ovoid = linesPerPageElement->appendChild(linesPerPageNode)

return, formatOptionsElement

end

;+ ; Defines the SpdfFormatOptions class. ; ; @field dateFormat value indicating the format for date values ; (‘yyyy_ddd’, ‘yy_mm_dd’, ‘yy_Mmm_dd’, ‘yy_CMMM_dd’) ; @field timeFormat value indicating the format for time values ; (‘hh_hhhh’, ‘hh_mm_ss’, ‘hh_mm’) ; @field distanceFormat value indicating the format for distance values ; (‘Re’, ‘Km’, ‘IntegerKm’, ‘ScientificNotationKm’) ; @field distanceDigits integer value specifying the number of decimal ; digits to include when displaying distance values in ; scientific notation. ; @field degreeFormat value indicating the format for degree values ; (‘Decimal’, ‘Minutes’, ‘MinutesSeconds’) ; @field degreeDigits integer value specifying the number of decimal ; places to include when displaying degree values. ; @field latLonFormat value indicating the format for direction/range ; values (‘Lat90Lon360’, ‘Lat90Lon180’, ‘Lat90SnLon180We’) ; @field cdf boolean value indicating whether the output should be a ; CDF file. ; @field linesPerPage integer value indicating the number of lines per ; page for text output. ;- pro SpdfFormatOptions__define compile_opt idl2 struct = { SpdfFormatOptions, $

    dateFormat:'yyyy_ddd', $
    timeFormat:'hh_hhhh', $
    distanceFormat:'Km', $
    distanceDigits:2, $
    degreeFormat:'Decimal', $
    degreeDigits:2, $
    latLonFormat:'Lat90Lon360', $
    cdf:0b, $
    linesPerPage:55 $
}

end