Completed
Push — middleware-wip ( 71b03c...531d78 )
by Romain
03:32
created

PersistenceResolver   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 3
c 0
b 0
f 0
lcom 0
cbo 2
dl 0
loc 29
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A getInstanceClassName() 0 19 3
1
<?php
2
/*
3
 * 2017 Romain CANON <[email protected]>
4
 *
5
 * This file is part of the TYPO3 FormZ project.
6
 * It is free software; you can redistribute it and/or modify it
7
 * under the terms of the GNU General Public License, either
8
 * version 3 of the License, or any later version.
9
 *
10
 * For the full copyright and license information, see:
11
 * http://www.gnu.org/licenses/gpl-3.0.html
12
 */
13
14
namespace Romm\Formz\Configuration\Form\Persistence;
15
16
use Romm\ConfigurationObject\Service\Items\MixedTypes\MixedTypesInterface;
17
use Romm\ConfigurationObject\Service\Items\MixedTypes\MixedTypesResolver;
18
use Romm\Formz\Validation\Validator\Internal\PersistenceIsValidValidator;
19
use TYPO3\CMS\Extbase\Error\Error;
20
21
class PersistenceResolver implements MixedTypesInterface
22
{
23
    /**
24
     * This method will fetch and validate the class name of the persistence
25
     * property. If any error is found, it is added to the result instance of
26
     * the resolver.
27
     *
28
     * @param MixedTypesResolver $resolver
29
     */
30
    final public static function getInstanceClassName(MixedTypesResolver $resolver)
31
    {
32
        $data = $resolver->getData();
33
34
        if (isset($data['className'])) {
35
            $className = $data['className'];
36
            $validator = new PersistenceIsValidValidator;
37
            $result = $validator->validate($className);
38
39
            if ($result->hasErrors()) {
40
                $resolver->getResult()->merge($result);
41
            } else {
42
                $resolver->setObjectType($className);
43
            }
44
        } else {
45
            $error = new Error('Property "className" must be filled with a valid persistence class name.', 1491223916);
46
            $resolver->getResult()->addError($error);
47
        }
48
    }
49
}
50