Completed
Pull Request — master (#46)
by Daniel
03:48
created

QueryCriteriaBuilderCollection   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 1
cbo 1
dl 0
loc 52
ccs 16
cts 16
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 2
A addQueryCriteriaBuilder() 0 6 1
A getQueryCriteriaBuilders() 0 4 1
A getQueryCriteriaBuildersForContext() 0 10 1
1
<?php
2
3
namespace KGzocha\Searcher\QueryCriteriaBuilder\Collection;
4
5
use KGzocha\Searcher\Context\SearchingContextInterface;
6
use KGzocha\Searcher\QueryCriteriaBuilder\QueryCriteriaBuilderInterface;
7
8
class QueryCriteriaBuilderCollection implements QueryCriteriaBuilderCollectionInterface
9
{
10
    /**
11
     * @var QueryCriteriaBuilderInterface[]
12
     */
13
    private $queryCriteriaBuilders;
14
15
    /**
16
     * @param QueryCriteriaBuilderInterface[] $builders
17
     */
18 3
    public function __construct(array $builders = [])
19
    {
20 3
        $this->queryCriteriaBuilders = [];
21 3
        foreach ($builders as $builder) {
22
            // In this way we will ensure that
23
            // every element in array has correct type
24 3
            $this->addQueryCriteriaBuilder($builder);
25
        }
26 3
    }
27
28
    /**
29
     * @inheritDoc
30
     */
31 3
    public function addQueryCriteriaBuilder(QueryCriteriaBuilderInterface $filterImposer)
32
    {
33 3
        $this->queryCriteriaBuilders[] = $filterImposer;
34
35 3
        return $this;
36
    }
37
38
    /**
39
     * @inheritDoc
40
     */
41 3
    public function getQueryCriteriaBuilders()
42
    {
43 3
        return $this->queryCriteriaBuilders;
44
    }
45
46
    /**
47
     * @inheritdoc
48
     */
49 2
    public function getQueryCriteriaBuildersForContext(
50
        SearchingContextInterface $searchingContext
51
    ) {
52 2
        return array_filter(
53 2
            $this->getQueryCriteriaBuilders(),
54 2
            function(QueryCriteriaBuilderInterface $queryCriteriaBuilder) use ($searchingContext) {
55 2
                return $queryCriteriaBuilder->supportsSearchingContext($searchingContext);
56 2
            }
57
        );
58
    }
59
}
60