module ADIWG::Mdtranslator::Readers::MdJson::VerticalDatum
Public Class Methods
unpack(hDatum, responseObj, inContext = nil)
click to toggle source
# File lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalDatum.rb, line 18 def self.unpack(hDatum, responseObj, inContext = nil) @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson # return nil object if input is empty if hDatum.empty? @MessagePath.issueWarning(920, responseObj, inContext) return nil end # instance classes needed in script intMetadataClass = InternalMetadata.new intDatum = intMetadataClass.newVerticalDatum outContext = 'vertical datum' outContext = inContext + ' > ' + outContext unless inContext.nil? # vertical datum - identifier {identifier} (required) if hDatum.has_key?('datumIdentifier') unless hDatum['datumIdentifier'].empty? hReturn = Identifier.unpack(hDatum['datumIdentifier'], responseObj, outContext) unless hReturn.nil? intDatum[:datumIdentifier] = hReturn end end end if intDatum[:datumIdentifier].empty? @MessagePath.issueError(921, responseObj, inContext) end # TODO remove when mdJson version 3 # vertical datum - datum name (deprecated), move to datumIdentifier # skip datumName if identifier is already present if hDatum.has_key?('datumName') unless hDatum['datumName'] == '' @MessagePath.issueWarning(922, responseObj, inContext) if intDatum[:datumIdentifier].empty? intDatum[:datumIdentifier] = intMetadataClass.newIdentifier intDatum[:datumIdentifier][:identifier] = hDatum['datumName'] @MessagePath.issueNotice(925, responseObj, inContext) @MessagePath.issueNotice(923, responseObj, inContext) end end end haveOthers = 0 # vertical datum - encoding method if hDatum.has_key?('encodingMethod') unless hDatum['encodingMethod'] == '' intDatum[:encodingMethod] = hDatum['encodingMethod'] haveOthers += 1 end end # vertical datum - is depth system {Boolean} (required) if hDatum.has_key?('isDepthSystem') if hDatum['isDepthSystem'] === true intDatum[:isDepthSystem] = true end end # vertical datum - vertical resolution if hDatum.has_key?('verticalResolution') unless hDatum['verticalResolution'] == '' intDatum[:verticalResolution] = hDatum['verticalResolution'] haveOthers += 1 end end # vertical datum - unit of measure if hDatum.has_key?('unitOfMeasure') unless hDatum['unitOfMeasure'] == '' intDatum[:unitOfMeasure] = hDatum['unitOfMeasure'] haveOthers += 1 end end # error messages unless haveOthers == 0 || haveOthers == 3 @MessagePath.issueError(924, responseObj, inContext) end return intDatum end