Completed
Push — master ( 9ce2ea...baff27 )
by Daniel
12:24
created

Commander::getEntityManagerConfig()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 23
ccs 0
cts 18
cp 0
rs 9.0856
cc 3
eloc 16
nc 3
nop 0
crap 12

1 Method

Rating   Name   Duplication   Size   Complexity  
A Commander::getSchemaValidator() 0 10 2
1
<?php
2
/**
3
 * This file is part of the Commander project.
4
 *
5
 * @author Daniel Schröder <[email protected]>
6
 */
7
8
namespace GravityMedia\Commander;
9
10
use Doctrine\Common\Cache\Cache;
11
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver;
12
use Doctrine\ORM\EntityManagerInterface;
13
use Doctrine\ORM\Tools\SchemaTool;
14
use Doctrine\ORM\Tools\SchemaValidator;
15
use GravityMedia\Commander\Commander\TaskManager;
16
use GravityMedia\Commander\Provider\CacheProvider;
17
use GravityMedia\Commander\Provider\EntityManagerProvider;
18
use GravityMedia\Commander\Provider\LoggerProvider;
19
use GravityMedia\Commander\Provider\MappingDriverProvider;
20
use GravityMedia\Commander\Provider\SchemaToolProvider;
21
use Psr\Log\LoggerInterface;
22
23
/**
24
 * Commander class.
25
 *
26
 * @package GravityMedia\Commander
27
 */
28
class Commander
29
{
30
    /**
31
     * The entity namespace.
32
     */
33
    const ENTITY_NAMESPACE = 'GravityMedia\Commander\ORM';
34
35
    /**
36
     * The logger name.
37
     */
38
    const LOGGER_NAME = 'COMMANDER';
39
40
    /**
41
     * @var Config
42
     */
43
    protected $config;
44
45
    /**
46
     * The cache.
47
     *
48
     * @var Cache
49
     */
50
    protected $cache;
51
52
    /**
53
     * The mapping driver.
54
     *
55
     * @var MappingDriver
56
     */
57
    protected $mappingDriver;
58
59
    /**
60
     * The entity manager.
61
     *
62
     * @var EntityManagerInterface
63
     */
64
    protected $entityManager;
65
66
    /**
67
     * The schema tool.
68
     *
69
     * @var SchemaTool
70
     */
71
    protected $schemaTool;
72
73
    /**
74
     * The schema validator.
75
     *
76
     * @var SchemaValidator
77
     */
78
    protected $schemaValidator;
79
80
    /**
81
     * The logger.
82
     *
83
     * @var LoggerInterface
84
     */
85
    protected $logger;
86
87
    /**
88
     * The task manager.
89
     *
90
     * @var TaskManager
91
     */
92
    protected $taskManager;
93
94
    /**
95
     * Create commander object.
96
     *
97
     * @param Config $config
98
     */
99
    public function __construct(Config $config)
100
    {
101
        $this->config = $config;
102
    }
103
104
    /**
105
     * Get cache.
106
     *
107
     * @return Cache
108
     */
109
    public function getCache()
110
    {
111
        if (null === $this->cache) {
112
            $provider = new CacheProvider($this->config);
113
114
            $this->cache = $provider->getCache();
115
        }
116
117
        return $this->cache;
118
    }
119
120
    /**
121
     * Get mapping driver.
122
     *
123
     * @return MappingDriver
124
     */
125
    public function getMappingDriver()
126
    {
127
        if (null === $this->mappingDriver) {
128
            $provider = new MappingDriverProvider($this->getCache());
129
130
            $this->mappingDriver = $provider->getMappingDriver();
131
        }
132
133
        return $this->mappingDriver;
134
    }
135
136
    /**
137
     * Get entity manager.
138
     *
139
     * @return EntityManagerInterface
140
     */
141
    public function getEntityManager()
142
    {
143
        if (null === $this->entityManager) {
144
            $provider = new EntityManagerProvider($this->config, $this->getCache(), $this->getMappingDriver());
145
146
            $this->entityManager = $provider->getEntityManager();
147
        }
148
149
        return $this->entityManager;
150
    }
151
152
    /**
153
     * Get schema tool.
154
     *
155
     * @return SchemaTool
156
     */
157
    public function getSchemaTool()
158
    {
159
        if (null === $this->schemaTool) {
160
            $provider = new SchemaToolProvider($this->getEntityManager());
161
162
            $this->schemaTool = $provider->getSchemaTool();
163
        }
164
165
        return $this->schemaTool;
166
    }
167
168
    /**
169
     * Get schema validator.
170
     *
171
     * @return SchemaValidator
172
     */
173
    public function getSchemaValidator()
174
    {
175
        if (null === $this->schemaValidator) {
176
            $provider = new SchemaToolProvider($this->getEntityManager());
177
178
            $this->schemaValidator = $provider->getSchemaValidator();
179
        }
180
181
        return $this->schemaValidator;
182
    }
183
184
    /**
185
     * Get logger.
186
     *
187
     * @return LoggerInterface
188
     */
189
    public function getLogger()
190
    {
191
        if (null === $this->logger) {
192
            $provider = new LoggerProvider($this->config);
193
194
            $this->logger = $provider->getLogger();
195
        }
196
197
        return $this->logger;
198
    }
199
200
    /**
201
     * Get task manager.
202
     *
203
     * @return TaskManager
204
     */
205
    public function getTaskManager()
206
    {
207
        if (null === $this->taskManager) {
208
            $entityManager = $this->getEntityManager();
209
210
            $this->taskManager = new TaskManager($entityManager);
211
        }
212
213
        return $this->taskManager;
214
    }
215
}
216