Completed
Push — config-reader ( 6b41c3 )
by
unknown
03:29
created

FilterSetBuilder   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 3
dl 0
loc 45
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A build() 0 17 3
1
<?php
2
/**
3
 * This file is part of the `liip/LiipImagineBundle` project.
4
 *
5
 * (c) https://github.com/liip/LiipImagineBundle/graphs/contributors
6
 *
7
 * For the full copyright and license information, please view the LICENSE.md
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Liip\ImagineBundle\Config;
12
13
use Liip\ImagineBundle\Factory\Config\FilterSetFactory;
14
15
final class FilterSetBuilder implements FilterSetBuilderInterface
16
{
17
    /**
18
     * @var FilterSetFactory
19
     */
20
    private $filterSetFactory;
21
22
    /**
23
     * @var FilterBuilderInterface
24
     */
25
    private $filterBuilder;
26
27
    /**
28
     * @param FilterSetFactory $filterSetFactory
29
     * @param FilterBuilderInterface $filterBuilder
30
     */
31
    public function __construct(FilterSetFactory $filterSetFactory, FilterBuilderInterface $filterBuilder)
32
    {
33
        $this->filterSetFactory = $filterSetFactory;
34
        $this->filterBuilder = $filterBuilder;
35
    }
36
37
    /**
38
     * @param string $filterSetName
39
     * @param array $filterSetData
40
     * @return FilterSetInterface
41
     */
42
    public function build(string $filterSetName, array $filterSetData): FilterSetInterface
43
    {
44
        $filterSet = $this->filterSetFactory->create();
45
        $filterSet->setName($filterSetName);
46
        $filterSet->setDataLoader($filterSetData['data_loader']);
47
        $filterSet->setQuality($filterSetData['quality']);
48
49
        if (!empty($filterSetData['filters'])) {
50
            $filters = [];
51
            foreach ($filterSetData['filters'] as $filterName => $filterData) {
52
                $filters[] = $this->filterBuilder->build($filterName, $filterData);
53
            }
54
            $filterSet->setFilters($filters);
55
        }
56
57
        return $filterSet;
58
    }
59
}
60