Esempio n. 1
0
 /**
  * {@inheritDoc}
  */
 public function validateEntity(EntityInterface $entity, ErrorStore $errorStore)
 {
     // Validate namespace URI
     $namespaceUri = $entity->getNamespaceUri();
     if (false == $entity->getNamespaceUri()) {
         $errorStore->addError('o:namespace_uri', 'The namespace URI cannot be empty.');
     }
     if (!$this->isUnique($entity, ['namespaceUri' => $namespaceUri])) {
         $errorStore->addError('o:namespace_uri', sprintf('The namespace URI "%s" is already taken.', $namespaceUri));
     }
     // Validate prefix
     $prefix = $entity->getPrefix();
     if (false == $entity->getPrefix()) {
         $errorStore->addError('o:prefix', 'The prefix cannot be empty.');
     }
     if (!$this->isUnique($entity, ['prefix' => $prefix])) {
         $errorStore->addError('o:prefix', sprintf('The prefix "%s" is already taken.', $prefix));
     }
     // Validate label
     if (false == $entity->getLabel()) {
         $errorStore->addError('o:label', 'The label cannot be empty.');
     }
     // Check for uniqueness of resource class local names.
     $uniqueLocalNames = [];
     foreach ($entity->getResourceClasses() as $resourceClass) {
         if (in_array($resourceClass->getLocalName(), $uniqueLocalNames)) {
             $errorStore->addError('o:resource_class', sprintf('The local name "%s" is already taken.', $resourceClass->getLocalName()));
         } else {
             $uniqueLocalNames[] = $resourceClass->getLocalName();
         }
     }
     // Check for uniqueness of property local names.
     $uniqueLocalNames = [];
     foreach ($entity->getProperties() as $property) {
         if (in_array($property->getLocalName(), $uniqueLocalNames)) {
             $errorStore->addError('o:resource_class', sprintf('The local name "%s" is already taken.', $property->getLocalName()));
         } else {
             $uniqueLocalNames[] = $property->getLocalName();
         }
     }
 }