module ADIWG::Mdtranslator::Readers::MdJson::Metadata

Public Class Methods

unpack(hMetadata, responseObj) click to toggle source
# File lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb, line 23
def self.unpack(hMetadata, responseObj)

   @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson

   # return nil object if input is empty
   if hMetadata.empty?
      @MessagePath.issueWarning(560, responseObj)
      return nil
   end

   # instance classes needed in script
   intMetadataClass = InternalMetadata.new
   intMetadata = intMetadataClass.newMetadata

   # metadata - metadata info {metadataInfo} (required)
   if hMetadata.has_key?('metadataInfo')
      hObject = hMetadata['metadataInfo']
      unless hObject.empty?
         hReturn = MetadataInfo.unpack(hObject, responseObj)
         unless hReturn.nil?
            intMetadata[:metadataInfo] = hReturn
         end
      end
   end
   if intMetadata[:metadataInfo].empty?
      @MessagePath.issueError(561, responseObj)
   end

   # metadata - resource info {resourceInfo} (required)
   if hMetadata.has_key?('resourceInfo')
      hObject = hMetadata['resourceInfo']
      unless hObject.empty?
         hReturn = ResourceInfo.unpack(hObject, responseObj)
         unless hReturn.nil?
            intMetadata[:resourceInfo] = hReturn
         end
      end
   end
   if intMetadata[:resourceInfo].empty?
      @MessagePath.issueError(562, responseObj)
   end

   # metadata - resource lineage [] {lineage}
   if hMetadata.has_key?('resourceLineage')
      aItems = hMetadata['resourceLineage']
      aItems.each do |item|
         hReturn = ResourceLineage.unpack(item, responseObj)
         unless hReturn.nil?
            intMetadata[:lineageInfo] << hReturn
         end
      end
   end

   # metadata - resource distribution [] {distribution}
   if hMetadata.has_key?('resourceDistribution')
      aItems = hMetadata['resourceDistribution']
      aItems.each do |item|
         hReturn = Distribution.unpack(item, responseObj)
         unless hReturn.nil?
            intMetadata[:distributorInfo] << hReturn
         end
      end
   end

   # metadata - associated resource [] {associatedResource}
   if hMetadata.has_key?('associatedResource')
      aItems = hMetadata['associatedResource']
      aItems.each do |item|
         hReturn = AssociatedResource.unpack(item, responseObj)
         unless hReturn.nil?
            intMetadata[:associatedResources] << hReturn
         end
      end
   end

   # metadata - additional resource [] {additionalResource}
   if hMetadata.has_key?('additionalDocumentation')
      aItems = hMetadata['additionalDocumentation']
      aItems.each do |item|
         hReturn = AdditionalDocumentation.unpack(item, responseObj)
         unless hReturn.nil?
            intMetadata[:additionalDocuments] << hReturn
         end
      end
   end

   # metadata - funding [] {funding}
   if hMetadata.has_key?('funding')
      aItems = hMetadata['funding']
      aItems.each do |item|
         hReturn = Funding.unpack(item, responseObj)
         unless hReturn.nil?
            intMetadata[:funding] << hReturn
         end
      end
   end

   return intMetadata

end