Passed
Push — feature/initial-implementation ( fae671...591f29 )
by Fike
02:37
created

Builder   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
dl 0
loc 27
c 0
b 0
f 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A build() 0 12 3
A __construct() 0 3 1
1
<?php
2
3
namespace AmaTeam\ElasticSearch\Entity\Descriptor\Hierarchy;
4
5
use AmaTeam\ElasticSearch\API\Entity\Descriptor\ManagerInterface;
6
use AmaTeam\ElasticSearch\API\Entity\DescriptorInterface;
7
use AmaTeam\ElasticSearch\API\Entity\Descriptor\Hierarchy\BuilderInterface;
8
use AmaTeam\ElasticSearch\API\Entity\Descriptor\Hierarchy\Node;
9
use AmaTeam\ElasticSearch\API\Entity\Descriptor\Hierarchy\NodeInterface;
10
11
class Builder implements BuilderInterface
12
{
13
    /**
14
     * @var ManagerInterface
15
     */
16
    private $manager;
17
18
    /**
19
     * @param ManagerInterface $manager
20
     */
21
    public function __construct(ManagerInterface $manager)
22
    {
23
        $this->manager = $manager;
24
    }
25
26
    public function build(DescriptorInterface $descriptor): NodeInterface
27
    {
28
        $node = new Node($descriptor);
29
        $parents = [];
30
        if (empty($descriptor->getParentNames())) {
31
            return $node;
32
        }
33
        foreach ($descriptor->getParentNames() as $parentName) {
34
            $parents[] = $this->build($this->manager->get($parentName));
35
        }
36
        $node->setParents($parents);
37
        return $node;
38
    }
39
}
40