module ADIWG::Mdtranslator::Readers::MdJson::Entity

Public Class Methods

unpack(hEntity, responseObj) click to toggle source
# File lib/adiwg/mdtranslator/readers/mdJson/modules/module_entity.rb, line 27
def self.unpack(hEntity, responseObj)

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

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

   # instance classes needed in script
   intMetadataClass = InternalMetadata.new
   intEntity = intMetadataClass.newEntity

   outContext = nil

   # entity - id
   if hEntity.has_key?('entityId')
      s = hEntity['entityId']
      unless s == ''
         intEntity[:entityId] = s
      end
   end

   # entity - name
   if hEntity.has_key?('commonName')
      unless hEntity['commonName'] == ''
         intEntity[:entityName] = hEntity['commonName']
      end
   end

   # entity - code (required)
   if hEntity.has_key?('codeName')
      intEntity[:entityCode] = hEntity['codeName']
   end
   if intEntity[:entityCode].nil? || intEntity[:entityCode] == ''
      @MessagePath.issueError(231, responseObj)
   else
      outContext = 'entity code name ' + hEntity['codeName']
   end

   # entity - alias []
   if hEntity.has_key?('alias')
      hEntity['alias'].each do |item|
         unless item == ''
            intEntity[:entityAlias] << item
         end
      end
   end

   # entity - definition (required)
   if hEntity.has_key?('definition')
      intEntity[:entityDefinition] = hEntity['definition']
   end
   if intEntity[:entityDefinition].nil? || intEntity[:entityDefinition] == ''
      @MessagePath.issueError(232, responseObj, outContext)
   end

   # entity - entity reference [] {citation}
   if hEntity.has_key?('entityReference')
      hEntity['entityReference'].each do |hCitation|
         unless hCitation.empty?
            hReturn = Citation.unpack(hCitation, responseObj, outContext)
            unless hReturn.nil?
               intEntity[:entityReferences] << hReturn
            end
         end
      end
   end

   # data entity - primary key (NOT required)
   if hEntity.has_key?('primaryKeyAttributeCodeName')
      hEntity['primaryKeyAttributeCodeName'].each do |item|
         unless item == ''
            intEntity[:primaryKey] << item
         end
      end
   end

   # entity - indexes []
   if hEntity.has_key?('index')
      hEntity['index'].each do |hIndex|
         unless hIndex.empty?
            index = EntityIndex.unpack(hIndex, responseObj, outContext)
            unless index.nil?
               intEntity[:indexes] << index
            end
         end
      end
   end

   # entity - attributes []
   if hEntity.has_key?('attribute')
      hEntity['attribute'].each do |hAttribute|
         unless hAttribute.empty?
            attribute = EntityAttribute.unpack(hAttribute, responseObj, outContext)
            unless attribute.nil?
               intEntity[:attributes] << attribute
            end
         end
      end
   end

   # entity - foreign keys []
   if hEntity.has_key?('foreignKey')
      hEntity['foreignKey'].each do |hFKey|
         unless hFKey.empty?
            fKey = EntityForeignKey.unpack(hFKey, responseObj, outContext)
            unless fKey.nil?
               intEntity[:foreignKeys] << fKey
            end
         end
      end
   end

   # entity - field separator
   if hEntity.has_key?('fieldSeparatorCharacter')
      unless hEntity['fieldSeparatorCharacter'] == ''
         intEntity[:fieldSeparatorCharacter] = hEntity['fieldSeparatorCharacter']
      end
   end

   # entity - number of header lines
   if hEntity.has_key?('numberOfHeaderLines')
      unless hEntity['numberOfHeaderLines'] == ''
         intEntity[:numberOfHeaderLines] = hEntity['numberOfHeaderLines'].to_i
      end
   end

   # entity - quote character
   if hEntity.has_key?('quoteCharacter')
      unless hEntity['quoteCharacter'] == ''
         intEntity[:quoteCharacter] = hEntity['quoteCharacter']
      end
   end

   return intEntity

end