lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb in adiwg-mdtranslator-2.9.2 vs lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb in adiwg-mdtranslator-2.10.0
- old
+ new
@@ -1,83 +1,97 @@
# unpack a extent
# Reader - mdJson to internal data structure
# History:
-# Stan Smith 2016-10-30 original script
+# Stan Smith 2018-02-18 refactored error and warning messaging
+# Stan Smith 2016-10-30 original script
require_relative 'module_geographicExtent'
require_relative 'module_temporalExtent'
require_relative 'module_verticalExtent'
module ADIWG
- module Mdtranslator
- module Readers
- module MdJson
+ module Mdtranslator
+ module Readers
+ module MdJson
- module Extent
+ module Extent
- def self.unpack(hExtent, responseObj)
+ def self.unpack(hExtent, responseObj)
- # return nil object if input is empty
- if hExtent.empty?
- responseObj[:readerExecutionMessages] << 'Extent object is empty'
- responseObj[:readerExecutionPass] = false
- return nil
- end
+ # return nil object if input is empty
+ if hExtent.empty?
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: extent object is empty'
+ return nil
+ end
- # instance classes needed in script
- intMetadataClass = InternalMetadata.new
- intExtent = intMetadataClass.newExtent
+ # instance classes needed in script
+ intMetadataClass = InternalMetadata.new
+ intExtent = intMetadataClass.newExtent
- # extent - description
- if hExtent.has_key?('description')
- if hExtent['description'] != ''
- intExtent[:description] = hExtent['description']
- end
- end
+ haveExtent = false
- # extent - geographicExtent
- if hExtent.has_key?('geographicExtent')
- hExtent['geographicExtent'].each do |item|
- unless item.empty?
- hReturn = GeographicExtent.unpack(item, responseObj)
- unless hReturn.nil?
- intExtent[:geographicExtents] << hReturn
- end
- end
- end
+ # extent - description
+ if hExtent.has_key?('description')
+ unless hExtent['description'] == ''
+ intExtent[:description] = hExtent['description']
+ haveExtent = true
+ end
+ end
+
+ # extent - geographicExtent
+ if hExtent.has_key?('geographicExtent')
+ hExtent['geographicExtent'].each do |item|
+ unless item.empty?
+ hReturn = GeographicExtent.unpack(item, responseObj)
+ unless hReturn.nil?
+ intExtent[:geographicExtents] << hReturn
+ haveExtent = true
+ end
end
+ end
+ end
- # extent - temporalExtent
- if hExtent.has_key?('temporalExtent')
- hExtent['temporalExtent'].each do |item|
- unless item.empty?
- hReturn = TemporalExtent.unpack(item, responseObj)
- unless hReturn.nil?
- intExtent[:temporalExtents] << hReturn
- end
- end
- end
+ # extent - temporalExtent
+ if hExtent.has_key?('temporalExtent')
+ hExtent['temporalExtent'].each do |item|
+ unless item.empty?
+ hReturn = TemporalExtent.unpack(item, responseObj)
+ unless hReturn.nil?
+ intExtent[:temporalExtents] << hReturn
+ haveExtent = true
+ end
end
+ end
+ end
- # extent - verticalExtent
- if hExtent.has_key?('verticalExtent')
- hExtent['verticalExtent'].each do |item|
- unless item.empty?
- hReturn = VerticalExtent.unpack(item, responseObj)
- unless hReturn.nil?
- intExtent[:verticalExtents] << hReturn
- end
- end
- end
+ # extent - verticalExtent
+ if hExtent.has_key?('verticalExtent')
+ hExtent['verticalExtent'].each do |item|
+ unless item.empty?
+ hReturn = VerticalExtent.unpack(item, responseObj)
+ unless hReturn.nil?
+ intExtent[:verticalExtents] << hReturn
+ haveExtent = true
+ end
end
+ end
+ end
- return intExtent
+ # error messages
+ unless haveExtent
+ responseObj[:readerExecutionMessages] <<
+ 'ERROR: mdJson reader: extent must have description or at least one geographic, temporal, or vertical extent'
+ responseObj[:readerExecutionPass] = false
+ return nil
+ end
- end
+ return intExtent
- end
+ end
end
- end
- end
+
+ end
+ end
+ end
end