Completed
Push — dev ( 64bfb0...f56b7a )
by Андрей
11:34
created

Executor   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 228
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 17
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 228
rs 10

14 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getFixtureExecutor() 0 10 2
A getLoader() 0 7 2
A setLoader() 0 6 1
A getFilter() 0 7 2
A setFilter() 0 6 1
A getConfiguration() 0 4 1
A setConfiguration() 0 6 1
A import() 0 7 1
A purge() 0 7 1
A getName() 0 4 1
A setName() 0 6 1
A getFixtureExecutorBuilder() 0 4 1
A setFixtureExecutorBuilder() 0 6 1
1
<?php
2
/**
3
 * @link    https://github.com/nnx-framework/doctrine-fixture-module
4
 * @author  Malofeykin Andrey  <[email protected]>
5
 */
6
namespace Nnx\DoctrineFixtureModule\Executor;
7
8
use Doctrine\Fixture\Loader\Loader;
9
use Doctrine\Fixture\Filter\Filter;
10
use Doctrine\Fixture\Configuration;
11
use Doctrine\Fixture\Loader\ChainLoader;
12
use Doctrine\Fixture\Filter\ChainFilter;
13
use Doctrine\Fixture\Executor as FixtureExecutor;
14
15
/**
16
 * Class Executor
17
 *
18
 * @package Nnx\DoctrineFixtureModule\Executor
19
 */
20
class Executor implements ExecutorInterface
21
{
22
    /**
23
     * Загрузчик фикстур
24
     *
25
     * @var Loader
26
     */
27
    protected $loader;
28
29
    /**
30
     * Фильтр фикстур
31
     *
32
     * @var Filter
33
     */
34
    protected $filter;
35
36
    /**
37
     * Конфигурация компонета отвечающего за выполнение фикстур
38
     *
39
     * @var Configuration
40
     */
41
    protected $configuration;
42
43
    /**
44
     * Компонент отвечающий за выполение фикстур
45
     *
46
     * @var FixtureExecutor
47
     */
48
    protected $fixtureExecutor;
49
50
    /**
51
     * Имя
52
     *
53
     * @var string
54
     */
55
    protected $name = Executor::class;
56
57
    /**
58
     * Сервис, отвечающий за создание компонента выполняющего фикстуры
59
     *
60
     *
61
     * @var FixtureExecutorBuilderInterface
62
     */
63
    protected $fixtureExecutorBuilder;
64
65
    /**
66
     * Executor constructor.
67
     *
68
     * @param Configuration                   $configuration
69
     * @param FixtureExecutorBuilderInterface $fixtureExecutorBuilder
70
     */
71
    public function __construct(Configuration $configuration, FixtureExecutorBuilderInterface $fixtureExecutorBuilder)
72
    {
73
        $this->setConfiguration($configuration);
74
        $this->setFixtureExecutorBuilder($fixtureExecutorBuilder);
75
    }
76
77
    /**
78
     * Возвращает компонент отвечающий за выполение фикстур
79
     *
80
     * @return FixtureExecutor
81
     */
82
    public function getFixtureExecutor()
83
    {
84
        if (null !== $this->fixtureExecutor) {
85
            $this->fixtureExecutor;
86
        }
87
        $configuration = $this->getConfiguration();
88
        $this->fixtureExecutor = $this->getFixtureExecutorBuilder()->build($configuration, $this);
89
90
        return $this->fixtureExecutor;
91
    }
92
93
    /**
94
     * Возвращает загрузчик фикстур
95
     *
96
     * @return Loader
97
     */
98
    public function getLoader()
99
    {
100
        if (null === $this->loader) {
101
            $this->loader = new ChainLoader();
102
        }
103
        return $this->loader;
104
    }
105
106
    /**
107
     * Устанавливает загрузчик фикстур
108
     *
109
     * @param Loader $loader
110
     *
111
     * @return $this
112
     */
113
    public function setLoader(Loader $loader)
114
    {
115
        $this->loader = $loader;
116
117
        return $this;
118
    }
119
120
    /**
121
     * Возвращает фильтр фикстур
122
     *
123
     * @return Filter
124
     */
125
    public function getFilter()
126
    {
127
        if (null === $this->filter) {
128
            $this->filter = new ChainFilter();
129
        }
130
        return $this->filter;
131
    }
132
133
    /**
134
     * Устанавливает фильтр фикстур
135
     *
136
     * @param Filter $filter
137
     *
138
     * @return $this
139
     */
140
    public function setFilter(Filter $filter)
141
    {
142
        $this->filter = $filter;
143
144
        return $this;
145
    }
146
147
    /**
148
     * Возвращает конфигурацию компонета отвечающего за выполнение фикстур
149
     *
150
     * @return Configuration
151
     */
152
    public function getConfiguration()
153
    {
154
        return $this->configuration;
155
    }
156
157
    /**
158
     * Устанавливает конфигурацию компонета отвечающего за выполнение фикстур
159
     *
160
     * @param Configuration $configuration
161
     *
162
     * @return $this
163
     */
164
    public function setConfiguration(Configuration $configuration)
165
    {
166
        $this->configuration = $configuration;
167
168
        return $this;
169
    }
170
171
172
173
    /**
174
     * @inheritdoc
175
     *
176
     * @return void
177
     */
178
    public function import()
179
    {
180
        $loader = $this->getLoader();
181
        $filter = $this->getFilter();
182
183
        $this->getFixtureExecutor()->execute($loader, $filter, FixtureExecutor::IMPORT);
184
    }
185
186
187
    /**
188
     * @inheritdoc
189
     *
190
     * @return void
191
     */
192
    public function purge()
193
    {
194
        $loader = $this->getLoader();
195
        $filter = $this->getFilter();
196
197
        $this->getFixtureExecutor()->execute($loader, $filter, FixtureExecutor::PURGE);
198
    }
199
200
    /**
201
     * Возвращает имя
202
     *
203
     * @return string
204
     */
205
    public function getName()
206
    {
207
        return $this->name;
208
    }
209
210
    /**
211
     * Устанавливает имя
212
     *
213
     * @param string $name
214
     *
215
     * @return $this
216
     */
217
    public function setName($name)
218
    {
219
        $this->name = (string)$name;
220
221
        return $this;
222
    }
223
224
    /**
225
     * Возвращает сервис, отвечающий за создание компонента выполняющего фикстуры
226
     *
227
     * @return FixtureExecutorBuilderInterface
228
     */
229
    public function getFixtureExecutorBuilder()
230
    {
231
        return $this->fixtureExecutorBuilder;
232
    }
233
234
    /**
235
     * Устанавливает сервис, отвечающий за создание компонента выполняющего фикстуры
236
     *
237
     * @param FixtureExecutorBuilderInterface $fixtureExecutorBuilder
238
     *
239
     * @return $this
240
     */
241
    public function setFixtureExecutorBuilder(FixtureExecutorBuilderInterface $fixtureExecutorBuilder)
242
    {
243
        $this->fixtureExecutorBuilder = $fixtureExecutorBuilder;
244
245
        return $this;
246
    }
247
}
248