/**
  * {@inheritdoc}
  */
 public function loadClassMetadata(ClassMetadataInterface $classMetadata)
 {
     if (null === $this->classes) {
         $this->classes = array();
         $xml = $this->parseFile($this->file);
         foreach ($xml->class as $class) {
             $this->classes[(string) $class['name']] = $class;
         }
     }
     $attributesMetadata = $classMetadata->getAttributesMetadata();
     if (isset($this->classes[$classMetadata->getName()])) {
         $xml = $this->classes[$classMetadata->getName()];
         foreach ($xml->attribute as $attribute) {
             $attributeName = (string) $attribute['name'];
             if (isset($attributesMetadata[$attributeName])) {
                 $attributeMetadata = $attributesMetadata[$attributeName];
             } else {
                 $attributeMetadata = new AttributeMetadata($attributeName);
                 $classMetadata->addAttributeMetadata($attributeMetadata);
             }
             foreach ($attribute->group as $group) {
                 $attributeMetadata->addGroup((string) $group);
             }
         }
         return true;
     }
     return false;
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function loadClassMetadata(ClassMetadataInterface $classMetadata)
 {
     if (null === $this->classes) {
         $this->classes = $this->getClassesFromXml();
     }
     if (!$this->classes) {
         return false;
     }
     $attributesMetadata = $classMetadata->getAttributesMetadata();
     if (isset($this->classes[$classMetadata->getName()])) {
         $xml = $this->classes[$classMetadata->getName()];
         foreach ($xml->attribute as $attribute) {
             $attributeName = (string) $attribute['name'];
             if (isset($attributesMetadata[$attributeName])) {
                 $attributeMetadata = $attributesMetadata[$attributeName];
             } else {
                 $attributeMetadata = new AttributeMetadata($attributeName);
                 $classMetadata->addAttributeMetadata($attributeMetadata);
             }
             foreach ($attribute->group as $group) {
                 $attributeMetadata->addGroup((string) $group);
             }
             if (isset($attribute['max-depth'])) {
                 $attributeMetadata->setMaxDepth((int) $attribute['max-depth']);
             }
         }
         return true;
     }
     return false;
 }
Exemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function loadClassMetadata(ClassMetadataInterface $classMetadata)
 {
     if (null === $this->classes) {
         if (!stream_is_local($this->file)) {
             throw new MappingException(sprintf('This is not a local file "%s".', $this->file));
         }
         if (null === $this->yamlParser) {
             $this->yamlParser = new Parser();
         }
         $classes = $this->yamlParser->parse(file_get_contents($this->file));
         if (empty($classes)) {
             return false;
         }
         // not an array
         if (!is_array($classes)) {
             throw new MappingException(sprintf('The file "%s" must contain a YAML array.', $this->file));
         }
         $this->classes = $classes;
     }
     if (isset($this->classes[$classMetadata->getName()])) {
         $yaml = $this->classes[$classMetadata->getName()];
         if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
             $attributesMetadata = $classMetadata->getAttributesMetadata();
             foreach ($yaml['attributes'] as $attribute => $data) {
                 if (isset($attributesMetadata[$attribute])) {
                     $attributeMetadata = $attributesMetadata[$attribute];
                 } else {
                     $attributeMetadata = new AttributeMetadata($attribute);
                     $classMetadata->addAttributeMetadata($attributeMetadata);
                 }
                 if (isset($data['groups'])) {
                     if (!is_array($data['groups'])) {
                         throw new MappingException('The "groups" key must be an array of strings in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                     }
                     foreach ($data['groups'] as $group) {
                         if (!is_string($group)) {
                             throw new MappingException('Group names must be strings in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                         }
                         $attributeMetadata->addGroup($group);
                     }
                 }
                 if (isset($data['max_depth'])) {
                     if (!is_int($data['max_depth'])) {
                         throw new MappingException('The "max_depth" value must an integer  in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                     }
                     $attributeMetadata->setMaxDepth($data['max_depth']);
                 }
             }
         }
         return true;
     }
     return false;
 }
Exemplo n.º 4
0
 /**
  * {@inheritdoc}
  */
 public function loadClassMetadata(ClassMetadataInterface $classMetadata)
 {
     if (null === $this->classes) {
         $this->classes = $this->getClassesFromYaml();
     }
     if (!$this->classes) {
         return false;
     }
     if (isset($this->classes[$classMetadata->getName()])) {
         $yaml = $this->classes[$classMetadata->getName()];
         if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
             $attributesMetadata = $classMetadata->getAttributesMetadata();
             foreach ($yaml['attributes'] as $attribute => $data) {
                 if (isset($attributesMetadata[$attribute])) {
                     $attributeMetadata = $attributesMetadata[$attribute];
                 } else {
                     $attributeMetadata = new AttributeMetadata($attribute);
                     $classMetadata->addAttributeMetadata($attributeMetadata);
                 }
                 if (isset($data['groups'])) {
                     if (!is_array($data['groups'])) {
                         throw new MappingException('The "groups" key must be an array of strings in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                     }
                     foreach ($data['groups'] as $group) {
                         if (!is_string($group)) {
                             throw new MappingException('Group names must be strings in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                         }
                         $attributeMetadata->addGroup($group);
                     }
                 }
                 if (isset($data['max_depth'])) {
                     if (!is_int($data['max_depth'])) {
                         throw new MappingException('The "max_depth" value must an integer  in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName());
                     }
                     $attributeMetadata->setMaxDepth($data['max_depth']);
                 }
             }
         }
         return true;
     }
     return false;
 }
Exemplo n.º 5
0
 /**
  * {@inheritdoc}
  */
 public function loadClassMetadata(ClassMetadataInterface $classMetadata)
 {
     if (null === $this->classes) {
         if (!stream_is_local($this->file)) {
             throw new MappingException(sprintf('This is not a local file "%s".', $this->file));
         }
         if (null === $this->yamlParser) {
             $this->yamlParser = new Parser();
         }
         $classes = $this->yamlParser->parse(file_get_contents($this->file));
         if (empty($classes)) {
             return false;
         }
         // not an array
         if (!is_array($classes)) {
             throw new MappingException(sprintf('The file "%s" must contain a YAML array.', $this->file));
         }
         $this->classes = $classes;
     }
     if (isset($this->classes[$classMetadata->getName()])) {
         $yaml = $this->classes[$classMetadata->getName()];
         if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
             $attributesMetadata = $classMetadata->getAttributesMetadata();
             foreach ($yaml['attributes'] as $attribute => $data) {
                 if (isset($attributesMetadata[$attribute])) {
                     $attributeMetadata = $attributesMetadata[$attribute];
                 } else {
                     $attributeMetadata = new AttributeMetadata($attribute);
                     $classMetadata->addAttributeMetadata($attributeMetadata);
                 }
                 if (isset($data['groups'])) {
                     foreach ($data['groups'] as $group) {
                         $attributeMetadata->addGroup($group);
                     }
                 }
             }
         }
         return true;
     }
     return false;
 }