/
AbstractEntityFactory.php
119 lines (97 loc) · 3.22 KB
/
AbstractEntityFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
declare(strict_types=1);
/**
* Routes.
*
* @copyright Zikula contributors (Zikula)
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
* @author Zikula contributors <info@ziku.la>.
* @link https://ziku.la
* @version Generated by ModuleStudio 1.4.0 (https://modulestudio.de).
*/
namespace Zikula\RoutesModule\Entity\Factory\Base;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use InvalidArgumentException;
use Zikula\RoutesModule\Entity\Factory\EntityInitialiser;
use Zikula\RoutesModule\Entity\RouteEntity;
use Zikula\RoutesModule\Helper\CollectionFilterHelper;
/**
* Factory class used to create entities and receive entity repositories.
*/
abstract class AbstractEntityFactory
{
/**
* @var EntityManagerInterface
*/
protected $entityManager;
/**
* @var EntityInitialiser
*/
protected $entityInitialiser;
/**
* @var CollectionFilterHelper
*/
protected $collectionFilterHelper;
public function __construct(
EntityManagerInterface $entityManager,
EntityInitialiser $entityInitialiser,
CollectionFilterHelper $collectionFilterHelper)
{
$this->entityManager = $entityManager;
$this->entityInitialiser = $entityInitialiser;
$this->collectionFilterHelper = $collectionFilterHelper;
}
/**
* Returns a repository for a given object type.
*/
public function getRepository(string $objectType): EntityRepository
{
$entityClass = 'Zikula\\RoutesModule\\Entity\\' . ucfirst($objectType) . 'Entity';
/** @var EntityRepository $repository */
$repository = $this->getEntityManager()->getRepository($entityClass);
$repository->setCollectionFilterHelper($this->collectionFilterHelper);
return $repository;
}
/**
* Creates a new route instance.
*/
public function createRoute(): RouteEntity
{
$entity = new RouteEntity();
$this->entityInitialiser->initRoute($entity);
return $entity;
}
/**
* Returns the identifier field's name for a given object type.
*/
public function getIdField(string $objectType = ''): string
{
if (empty($objectType)) {
throw new InvalidArgumentException('Invalid object type received.');
}
$entityClass = 'ZikulaRoutesModule:' . ucfirst($objectType) . 'Entity';
$meta = $this->getEntityManager()->getClassMetadata($entityClass);
return $meta->getSingleIdentifierFieldName();
}
public function getEntityManager(): ?EntityManagerInterface
{
return $this->entityManager;
}
public function setEntityManager(EntityManagerInterface $entityManager = null): void
{
if ($this->entityManager !== $entityManager) {
$this->entityManager = $entityManager;
}
}
public function getEntityInitialiser(): ?EntityInitialiser
{
return $this->entityInitialiser;
}
public function setEntityInitialiser(EntityInitialiser $entityInitialiser = null): void
{
if ($this->entityInitialiser !== $entityInitialiser) {
$this->entityInitialiser = $entityInitialiser;
}
}
}