/**
  * Sets the override for a mapped field.
  *
  * @param string $fieldName
  * @param array $overrideMapping
  * @throws MappingException
  * @param array $overrideMapping
  * @return void
  */
 public function setAttributeOverride($fieldName, array $overrideMapping)
 {
     if (!isset($this->fieldMappings[$fieldName])) {
         throw MappingException::invalidOverrideFieldName($this->name, $fieldName);
     }
     $mapping = $this->fieldMappings[$fieldName];
     if (isset($mapping['id'])) {
         $overrideMapping['id'] = $mapping['id'];
     }
     if (!isset($overrideMapping['type']) || $overrideMapping['type'] === null) {
         $overrideMapping['type'] = $mapping['type'];
     }
     if (!isset($overrideMapping['fieldName']) || $overrideMapping['fieldName'] === null) {
         $overrideMapping['fieldName'] = $mapping['fieldName'];
     }
     if ($overrideMapping['type'] !== $mapping['type']) {
         throw MappingException::invalidOverrideFieldType($this->name, $fieldName);
     }
     unset($this->fieldMappings[$fieldName]);
     unset($this->fieldNames[$mapping['columnName']]);
     unset($this->columnNames[$mapping['fieldName']]);
     $this->_validateAndCompleteFieldMapping($overrideMapping);
     $this->fieldMappings[$fieldName] = $overrideMapping;
 }