Passed
Push — master ( 6139d1...678a4c )
by Petr
13:22 queued 10:27
created

Factory   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Test Coverage

Coverage 90.48%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
c 1
b 0
f 0
dl 0
loc 39
ccs 19
cts 21
cp 0.9048
rs 10
wmc 9

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getInstance() 0 3 1
B getConnector() 0 25 8
1
<?php
2
3
namespace kalanis\kw_mapper\Search\Connector;
4
5
6
use kalanis\kw_mapper\MapperException;
7
use kalanis\kw_mapper\Mappers;
8
use kalanis\kw_mapper\Records\ARecord;
9
use kalanis\kw_mapper\Storage\Shared\QueryBuilder;
10
11
12
/**
13
 * Class Factory
14
 * @package kalanis\kw_mapper\Search
15
 * Complex searching - factory for access correct connecting classes
16
 */
17
class Factory
18
{
19 36
    public static function getInstance(): self
20
    {
21 36
        return new self();
22
    }
23
24
    /**
25
     * @param ARecord $record
26
     * @param ARecord[] $initialRecords
27
     * @param QueryBuilder|null $builder
28
     * @throws MapperException
29
     * @return AConnector
30
     */
31 36
    public function getConnector(ARecord $record, array $initialRecords = [], ?QueryBuilder $builder = null): AConnector
32
    {
33 36
        $mapper = $record->getMapper();
34 36
        if ($mapper instanceof Mappers\Database\ADatabase) {
35 14
            return new Database($record, $builder);
36 22
        } elseif ($mapper instanceof Mappers\Database\ALdap) {
37
            // @codeCoverageIgnoreStart
38
            return new Ldap($record, $builder);
39
            // @codeCoverageIgnoreEnd
40 22
        } elseif ($mapper instanceof Mappers\Database\WinRegistry) {
41
            // @codeCoverageIgnoreStart
42
            return new WinRegistry($record, $builder);
43
            // @codeCoverageIgnoreEnd
44 22
        } elseif ($mapper instanceof Mappers\Storage\ATable) {
45 18
            return new FileTable($record);
46 4
        } elseif ($mapper instanceof Mappers\File\ATable) {
47 1
            return new FileTable($record);
48 3
        } elseif ($mapper instanceof Mappers\APreset) {
49 1
            return new FileTable($record);
50 2
        } elseif (!empty($initialRecords)) {
51 1
            $records = new Records($record);
52 1
            $records->setInitialRecords($initialRecords);
53 1
            return $records;
54
        } else {
55 1
            throw new MapperException('Invalid mapper for Search.');
56
        }
57
    }
58
}
59