/** * {@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(); } } }