Used LayerClassMap

This commit is contained in:
Kevin Frantz 2019-01-26 17:07:16 +01:00
parent a59d803d96
commit 09944d032c

View File

@ -4,40 +4,18 @@ namespace App\Domain\RepositoryManagement;
use App\Repository\RepositoryInterface;
use Doctrine\ORM\EntityManagerInterface;
use App\DBAL\Types\Meta\Right\LayerType;
use App\Exception\NotSetException;
use App\Entity\Source\AbstractSource;
use App\Domain\LayerManagement\LayerClassMap;
/**
* @author kevinfrantz
*/
final class LayerRepositoryFactoryService implements LayerRepositoryFactoryServiceInterface
{
const LAYER_CLASS_MAP = [
LayerType::SOURCE => AbstractSource::class,
];
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* @param string $layer
*
* @throws NotSetException
*
* @return string
*/
private function getRepositoryClassName(string $layer): string
{
$map = self::LAYER_CLASS_MAP;
if (array_key_exists($layer, $map)) {
return $map[$layer];
}
throw new NotSetException('The requested layer is not mapped!');
}
/**
* @param EntityManagerInterface $entityManager
*/
@ -53,7 +31,7 @@ final class LayerRepositoryFactoryService implements LayerRepositoryFactoryServi
*/
public function getRepository(string $layer): RepositoryInterface
{
$repositoryClassName = $this->getRepositoryClassName($layer);
$repositoryClassName = LayerClassMap::getClass($layer);
return $this->entityManager->getRepository($repositoryClassName);
}