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

Factory::getConnector()   B

Complexity

Conditions 8
Paths 8

Size

Total Lines 25
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 8.0747

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 8
eloc 19
c 1
b 0
f 0
nc 8
nop 3
dl 0
loc 25
ccs 17
cts 19
cp 0.8947
crap 8.0747
rs 8.4444
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