ObjectService   A
last analyzed

Complexity

Total Complexity 31

Size/Duplication

Total Lines 244
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 11

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 31
c 3
b 0
f 0
lcom 1
cbo 11
dl 0
loc 244
ccs 86
cts 86
cp 1
rs 9.8

11 Methods

Rating   Name   Duplication   Size   Complexity  
A getContentManager() 0 14 3
A getLocationManager() 0 14 3
A getContentTypeManager() 0 14 3
A getLanguageManager() 0 14 3
A getUserGroupManager() 0 14 3
A getUserManager() 0 14 3
A getFieldDefinitionSubManager() 0 14 3
A getContentTypeGroupSubManager() 0 14 3
A getManagerMapping() 0 11 1
A createOrUpdate() 0 13 3
A remove() 0 13 3
1
<?php
2
3
/*
4
 * This file is part of Transfer.
5
 *
6
 * For the full copyright and license information, please view the LICENSE file located
7
 * in the root directory.
8
 */
9
10
namespace Transfer\EzPlatform\Repository\Manager\Core;
11
12
use Transfer\EzPlatform\Repository\Manager\Sub\ContentTypeGroupSubManager;
13
use Transfer\EzPlatform\Repository\Manager\Sub\FieldDefinitionSubManager;
14
use Transfer\EzPlatform\Repository\Values\ContentObject;
15
use Transfer\EzPlatform\Repository\Values\ContentTypeObject;
16
use Transfer\EzPlatform\Repository\Values\LanguageObject;
17
use Transfer\EzPlatform\Repository\Values\LocationObject;
18
use Transfer\EzPlatform\Repository\Values\UserGroupObject;
19
use Transfer\EzPlatform\Repository\Values\UserObject;
20
use Transfer\EzPlatform\Repository\Manager\ContentManager;
21
use Transfer\EzPlatform\Repository\Manager\ContentTypeManager;
22
use Transfer\EzPlatform\Repository\Manager\LanguageManager;
23
use Transfer\EzPlatform\Repository\Manager\LocationManager;
24
use Transfer\EzPlatform\Repository\Manager\Type\RemoverInterface;
25
use Transfer\EzPlatform\Repository\Manager\Type\UpdaterInterface;
26
use Transfer\EzPlatform\Repository\Manager\UserGroupManager;
27
use Transfer\EzPlatform\Repository\Manager\UserManager;
28
29
/**
30
 * Object service.
31
 */
32
class ObjectService extends AbstractRepositoryService
33
{
34
    /**
35
     * @var ContentManager Content manager.
36
     */
37
    private $contentManager;
38
39
    /**
40
     * @var LocationManager Location manager.
41
     */
42
    private $locationManager;
43
44
    /**
45
     * @var ContentTypeManager
46
     */
47
    private $contentTypeManager;
48
49
    /**
50
     * @var LanguageManager
51
     */
52
    private $languageManager;
53
54
    /**
55
     * @var UserGroupManager
56
     */
57
    private $userGroupManager;
58
59
    /**
60
     * @var UserManager
61
     */
62
    private $userManager;
63
64
    /**
65
     * @var FieldDefinitionSubManager
66
     */
67
    private $fieldDefinitionSubManager;
68
69
    /**
70
     * @var ContentTypeGroupSubManager
71
     */
72
    private $contentTypeGroupSubManager;
73
74
    /**
75
     * Returns content manager.
76
     *
77
     * @return ContentManager
78
     */
79 14
    public function getContentManager()
80
    {
81 14
        if ($this->contentManager != null) {
82 5
            return $this->contentManager;
83
        }
84
85 12
        $this->contentManager = new ContentManager($this->options, $this->getContentService(), $this->getContentTypeService(), $this->getLocationService(), $this->getLocationManager());
86
87 12
        if ($this->logger) {
88 11
            $this->contentManager->setLogger($this->logger);
89 11
        }
90
91 12
        return $this->contentManager;
92
    }
93
94
    /**
95
     * Returns location manager.
96
     *
97
     * @return LocationManager
98
     */
99 17
    public function getLocationManager()
100
    {
101 17
        if ($this->locationManager != null) {
102 1
            return $this->locationManager;
103
        }
104
105 16
        $this->locationManager = new LocationManager($this->getLocationService(), $this->getContentService());
106
107 16
        if ($this->logger) {
108 15
            $this->locationManager->setLogger($this->logger);
109 15
        }
110
111 16
        return $this->locationManager;
112
    }
113
114
    /**
115
     * Returns contenttype manager.
116
     *
117
     * @return ContentTypeManager
118
     */
119 39
    public function getContentTypeManager()
120
    {
121 39
        if ($this->contentTypeManager != null) {
122 36
            return $this->contentTypeManager;
123
        }
124
125 6
        $this->contentTypeManager = new ContentTypeManager($this->getContentTypeService(), $this->getLanguageManager(), $this->getFieldDefinitionSubManager(), $this->getContentTypeGroupSubManager());
126
127 6
        if ($this->logger) {
128 6
            $this->contentTypeManager->setLogger($this->logger);
129 6
        }
130
131 6
        return $this->contentTypeManager;
132
    }
133
134
    /**
135
     * Returns language manager.
136
     *
137
     * @return LanguageManager
138
     */
139 11
    public function getLanguageManager()
140
    {
141 11
        if ($this->languageManager != null) {
142 3
            return $this->languageManager;
143
        }
144
145 10
        $this->languageManager = new LanguageManager($this->getLanguageService());
146
147 10
        if ($this->logger) {
148 9
            $this->languageManager->setLogger($this->logger);
149 9
        }
150
151 10
        return $this->languageManager;
152
    }
153
154
    /**
155
     * Returns user group manager.
156
     *
157
     * @return UserGroupManager
158
     */
159 10
    public function getUserGroupManager()
160
    {
161 10
        if ($this->userGroupManager != null) {
162 3
            return $this->userGroupManager;
163
        }
164
165 9
        $this->userGroupManager = new UserGroupManager($this->options, $this->getUserService(), $this->getContentService(), $this->getContentTypeService());
166
167 9
        if ($this->logger) {
168 8
            $this->userGroupManager->setLogger($this->logger);
169 8
        }
170
171 9
        return $this->userGroupManager;
172
    }
173
174
    /**
175
     * Returns user manager.
176
     *
177
     * @return UserManager
178
     */
179 6
    public function getUserManager()
180
    {
181 6
        if ($this->userManager != null) {
182 2
            return $this->userManager;
183
        }
184
185 5
        $this->userManager = new UserManager($this->options, $this->getUserService(), $this->getContentTypeService(), $this->getUserGroupManager());
186
187 5
        if ($this->logger) {
188 4
            $this->userManager->setLogger($this->logger);
189 4
        }
190
191 5
        return $this->userManager;
192
    }
193
194
    /**
195
     * @return FieldDefinitionSubManager
196
     */
197 7
    public function getFieldDefinitionSubManager()
198
    {
199 7
        if ($this->fieldDefinitionSubManager != null) {
200 1
            return $this->fieldDefinitionSubManager;
201
        }
202
203 6
        $this->fieldDefinitionSubManager = new FieldDefinitionSubManager($this->getContentTypeService());
204
205 6
        if ($this->logger) {
206 6
            $this->fieldDefinitionSubManager->setLogger($this->logger);
207 6
        }
208
209 6
        return $this->fieldDefinitionSubManager;
210
    }
211
212 7
    public function getContentTypeGroupSubManager()
213
    {
214 7
        if ($this->contentTypeGroupSubManager != null) {
215 1
            return $this->contentTypeGroupSubManager;
216
        }
217
218 6
        $this->contentTypeGroupSubManager = new ContentTypeGroupSubManager($this->getContentTypeService());
219
220 6
        if ($this->logger) {
221 6
            $this->contentTypeGroupSubManager->setLogger($this->logger);
222 6
        }
223
224 6
        return $this->contentTypeGroupSubManager;
225
    }
226
227
    /**
228
     * @return array
229
     */
230 36
    protected function getManagerMapping()
231
    {
232
        return array(
233 36
            ContentObject::class => array($this, 'getContentManager'),
234 36
            LocationObject::class => array($this, 'getLocationManager'),
235 36
            ContentTypeObject::class => array($this, 'getContentTypeManager'),
236 36
            LanguageObject::class => array($this, 'getLanguageManager'),
237 36
            UserObject::class => array($this, 'getUserManager'),
238 36
            UserGroupObject::class => array($this, 'getUserGroupManager'),
239 36
        );
240
    }
241
242
    /**
243
     * {@inheritdoc}
244
     */
245 31
    public function createOrUpdate($object)
246
    {
247 31
        foreach ($this->getManagerMapping() as $class => $callable) {
248 31
            if ($object instanceof $class) {
249
                /** @var UpdaterInterface $manager */
250 29
                $manager = call_user_func($callable);
251
252 29
                return $manager->createOrUpdate($object);
253
            }
254 20
        }
255
256 2
        throw new \InvalidArgumentException('Object is not supported for creation.');
257
    }
258
259
    /**
260
     * {@inheritdoc}
261
     */
262 7
    public function remove($object)
263
    {
264 7
        foreach ($this->getManagerMapping() as $class => $callable) {
265 7
            if ($object instanceof $class) {
266
                /** @var RemoverInterface $manager */
267 6
                $manager = call_user_func($callable);
268
269 6
                return $manager->remove($object);
270
            }
271 6
        }
272
273 1
        throw new \InvalidArgumentException('Object is not supported for deletion.');
274
    }
275
}
276