Doctrine\ODM\CouchDB\Mapping\Driver\YamlDriver::loadMetadataForClass PHP Method

loadMetadataForClass() public method

public loadMetadataForClass ( $className, Doctrine\Common\Persistence\Mapping\ClassMetadata $class )
$class Doctrine\Common\Persistence\Mapping\ClassMetadata
    public function loadMetadataForClass($className, ClassMetadata $class)
    {
        /** @var $class \Doctrine\ODM\CouchDB\Mapping\ClassMetadata */
        try {
            $element = $this->getElement($className);
        } catch (DoctrineMappingException $e) {
            // Convert Exception type for consistency with other drivers
            throw new MappingException($e->getMessage(), $e->getCode(), $e);
        }
        if (!$element) {
            return;
        }
        if ($element['type'] == 'document') {
            $class->setCustomRepositoryClass(isset($element['repositoryClass']) ? $element['repositoryClass'] : null);
            if (isset($element['indexed']) && $element['indexed'] == true) {
                $class->indexed = true;
            }
            if (isset($element['inheritanceRoot']) && $element['inheritanceRoot']) {
                $class->markInheritanceRoot();
            }
        } else {
            if ($element['type'] == 'embedded') {
                $class->isEmbeddedDocument = true;
                if (isset($element['inheritanceRoot']) && $element['inheritanceRoot']) {
                    $class->markInheritanceRoot();
                }
            } else {
                if (strtolower($element['type']) == "mappedsuperclass") {
                    $class->isMappedSuperclass = true;
                } else {
                    throw MappingException::classIsNotAValidDocument($className);
                }
            }
        }
        if (isset($element['id'])) {
            foreach ($element['id'] as $fieldName => $idElement) {
                $class->mapField(array('fieldName' => $fieldName, 'indexed' => isset($idElement['index']) ? (bool) $idElement['index'] : false, 'type' => isset($idElement['type']) ? $idElement['type'] : null, 'id' => true, 'strategy' => isset($idElement['strategy']) ? $idElement['strategy'] : null));
            }
        }
        if (isset($element['fields'])) {
            foreach ($element['fields'] as $fieldName => $fieldElement) {
                $class->mapField(array('fieldName' => $fieldName, 'jsonName' => isset($fieldElement['jsonName']) ? $fieldElement['jsonName'] : null, 'indexed' => isset($fieldElement['index']) ? (bool) $fieldElement['index'] : false, 'type' => isset($fieldElement['type']) ? $fieldElement['type'] : null, 'isVersionField' => isset($fieldElement['version']) ? true : null));
            }
        }
        if (isset($element['referenceOne'])) {
            foreach ($element['referenceOne'] as $field => $referenceOneElement) {
                $class->mapManyToOne(array('cascade' => isset($referenceOneElement['cascade']) ? $this->getCascadeMode($referenceOneElement['cascade']) : 0, 'targetDocument' => (string) $referenceOneElement['targetDocument'], 'fieldName' => $field, 'jsonName' => isset($referenceOneElement['jsonName']) ? (string) $referenceOneElement['jsonName'] : null, 'indexed' => isset($referenceOneElement['index']) ? (bool) $referenceOneElement['index'] : false));
            }
        }
        if (isset($element['referenceMany'])) {
            foreach ($element['referenceMany'] as $field => $referenceManyElement) {
                $class->mapManyToMany(array('cascade' => isset($referenceManyElement['cascade']) ? $this->getCascadeMode($referenceManyElement['cascade']) : 0, 'targetDocument' => (string) $referenceManyElement['targetDocument'], 'fieldName' => $field, 'jsonName' => isset($referenceManyElement['jsonName']) ? (string) $referenceManyElement['jsonName'] : null, 'mappedBy' => isset($referenceManyElement['mappedBy']) ? (string) $referenceManyElement['mappedBy'] : null));
            }
        }
        if (isset($element['attachments'])) {
            $class->mapAttachments($element['attachments']);
        }
        if (isset($element['embedOne'])) {
            foreach ($element['embedOne'] as $field => $embedOneElement) {
                $class->mapEmbedded(array('targetDocument' => (string) $embedOneElement['targetDocument'], 'fieldName' => $field, 'jsonName' => isset($embedOneElement['jsonName']) ? (string) $embedOneElement['jsonName'] : null, 'embedded' => 'one'));
            }
        }
        if (isset($element['embedMany'])) {
            foreach ($element['embedMany'] as $field => $embedManyElement) {
                $class->mapEmbedded(array('targetDocument' => (string) $embedManyElement['targetDocument'], 'fieldName' => $field, 'jsonName' => isset($embedManyElement['jsonName']) ? (string) $embedManyElement['jsonName'] : null, 'embedded' => 'many'));
            }
        }
    }