/**
  * 
  * 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);
     }
 }
예제 #2
0
 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()));
 }
예제 #3
0
 /**
  * @return Psc\Doctrine\EntityRepository
  */
 public function getRepository()
 {
     if (!isset($this->repository)) {
         $this->repository = $this->dc->getRepository($this->entityName);
     }
     return $this->repository;
 }
예제 #4
0
 /**
  * 
  * 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;
 }
예제 #5
0
 /**
  * Returns an specific Entity
  * 
  * @return Entity
  */
 protected function hydrate($entityName, $identifier)
 {
     return $this->dc->getRepository($entityName)->hydrate($identifier);
 }
예제 #6
0
 /**
  * @return Psc\Doctrine\EntityRepository
  */
 public function getRoleRepository($roleName)
 {
     return $this->dc->getRepository($this->getRoleFQN($roleName));
 }