/** * * Achtung! nicht bool zurückgeben, stattdessen irgendeine Exception schmeissen * * Wird EmptyDataException bei validate() geworfen und ist der Validator mit optional aufgerufen worden, wird keine ValidatorException geworfen * * @return $data */ public function validate($data) { if ($data === NULL) { throw EmptyDataException::factory(NULL); } $repository = $this->dc->getRepository($this->entityMeta->getClass()); try { return $repository->hydrate($data); } catch (\Psc\Doctrine\EntityNotFoundException $e) { throw EmptyDataException::factory(NULL, $e); } }
public static function createFor($entityClass, $collectionPropertyName, DCPackage $dc) { $entityMeta = $dc->getEntityMeta($entityClass); $property = $entityMeta->getPropertyMeta($collectionPropertyName); $collectionClass = $property->getRelationEntityClass(); return new static($entityMeta, $collectionPropertyName, $dc->getRepository($collectionClass->getFQN())); }
/** * @return Psc\Doctrine\EntityRepository */ public function getRepository() { if (!isset($this->repository)) { $this->repository = $this->dc->getRepository($this->entityName); } return $this->repository; }
/** * * Wird EmptyDataException bei validate() geworfen und ist der Validator mit optional aufgerufen worden, wird keine ValidatorException geworfen * @return $data */ public function validate($data = NULL) { if ($data === NULL || $data === array()) { throw EmptyDataException::factory(new \Psc\Data\ArrayCollection()); } if (!is_array($data)) { throw new \InvalidArgumentException('Parameter ist als Array erwartet. ' . Code::varInfo($data) . ' wurde übergeben'); } $identifierCaster = $this->getIdentifierCaster($this->entityMeta->getIdentifier()); $repository = $this->dc->getRepository($this->entityMeta->getClass()); $entities = new ArrayCollection(); foreach ($data as $key => $identifierString) { $identifier = $identifierCaster($identifierString, $key); $entities->add($repository->hydrate($identifier)); } return $entities; }
/** * Returns an specific Entity * * @return Entity */ protected function hydrate($entityName, $identifier) { return $this->dc->getRepository($entityName)->hydrate($identifier); }
/** * @return Psc\Doctrine\EntityRepository */ public function getRoleRepository($roleName) { return $this->dc->getRepository($this->getRoleFQN($roleName)); }