; ; 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 ; Satellite Situation Center ; (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, $ timeFormat = timeFormat, $ distanceFormat = distanceFormat, $ distanceDigits = distanceDigits, $ degreeFormat = degreeFormat, $ degreeDigits = degreeDigits, $ 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