Completed
Pull Request — dev (#9)
by Arnaud
15:37 queued 05:37
created

ConfigurationFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

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

4 Methods

Rating   Name   Duplication   Size   Complexity  
A createActionConfiguration() 0 9 1
A createApplicationConfiguration() 0 9 1
A createAdminConfiguration() 0 9 1
A getApplicationConfiguration() 0 4 1
1
<?php
2
3
namespace LAG\AdminBundle\Configuration\Factory;
4
5
use LAG\AdminBundle\Action\Configuration\ActionConfiguration;
6
use LAG\AdminBundle\Admin\AdminInterface;
7
use LAG\AdminBundle\Admin\Configuration\AdminConfiguration;
8
use LAG\AdminBundle\Application\Configuration\ApplicationConfiguration;
9
use Symfony\Component\OptionsResolver\OptionsResolver;
10
11
class ConfigurationFactory
12
{
13
    /**
14
     * @var ApplicationConfiguration
15
     */
16
    protected $applicationConfiguration;
17
18
    /**
19
     * Create an action configuration object.
20
     *
21
     * @param $actionName
22
     * @param AdminInterface|null $admin
23
     * @param array $configuration
24
     * @return ActionConfiguration
25
     */
26
    public function createActionConfiguration($actionName, AdminInterface $admin = null, array $configuration = [])
27
    {
28
        $resolver = new OptionsResolver();
29
        $actionConfiguration = new ActionConfiguration($actionName, $admin);
30
        $actionConfiguration->configureOptions($resolver);
31
        $actionConfiguration->setParameters($resolver->resolve($configuration));
32
33
        return $actionConfiguration;
34
    }
35
36
    /**
37
     * Create an application configuration object.
38
     *
39
     * @param array $configuration
40
     * @return ApplicationConfiguration
41
     */
42
    public function createApplicationConfiguration(array $configuration = [])
43
    {
44
        $resolver = new OptionsResolver();
45
        $this->applicationConfiguration = new ApplicationConfiguration();
46
        $this->applicationConfiguration->configureOptions($resolver);
47
        $this->applicationConfiguration->setParameters($resolver->resolve($configuration));
48
49
        return $this->applicationConfiguration;
50
    }
51
52
    /**
53
     * Create an admin configuration object.
54
     *
55
     * @param array $configuration
56
     * @return AdminConfiguration
57
     */
58
    public function createAdminConfiguration(array $configuration = [])
59
    {
60
        $resolver = new OptionsResolver();
61
        $adminConfiguration = new AdminConfiguration($this->applicationConfiguration);
62
        $adminConfiguration->configureOptions($resolver);
63
        $adminConfiguration->setParameters($resolver->resolve($configuration));
64
65
        return $adminConfiguration;
66
    }
67
68
    /**
69
     * @return ApplicationConfiguration
70
     */
71
    public function getApplicationConfiguration()
72
    {
73
        return $this->applicationConfiguration;
74
    }
75
}
76