ReaderFactory   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 34.48%

Importance

Changes 0
Metric Value
wmc 7
c 0
b 0
f 0
lcom 0
cbo 4
dl 0
loc 44
ccs 10
cts 29
cp 0.3448
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C build() 0 31 7
1
<?php
2
3
namespace pastuhov\ymlcatalog;
4
5
use pastuhov\ymlcatalog\readers\DataProviderReader;
6
use pastuhov\ymlcatalog\readers\QueryReader;
7
use yii\data\ActiveDataProvider;
8
use yii\db\ActiveQuery;
9
10
class ReaderFactory
11
{
12
    /**
13
     * Reader Factory builder.
14
     *
15
     * @param BaseFindYmlInterface      $class
16
     * @param ActiveDataProvider|null   $dataProvider
17
     * @param ActiveQuery|null          $query
18
     * @param mixed                     $findParams
19
     *
20
     * @return ReaderInterface
21
     */
22 5
    public static function build(
23
        BaseFindYmlInterface $class,
24
        ActiveDataProvider $dataProvider = null,
25
        ActiveQuery $query = null,
26
        $findParams = []
27
    )
28
    {
29 5
        if (!empty($dataProvider)) {
30 1
            if ($dataProvider instanceof ActiveDataProvider) {
31 1
                $reader = new DataProviderReader($dataProvider);
32 1
            } elseif ($dataProvider === true) {
33
                if (!$query) {
34
                    $query = $class::findYml($findParams);
35
                }
36
                $reader = new DataProviderReader(
37
                    new ActiveDataProvider([
38
                        'query' => $query,
39
                        'pagination' => [
40
                            'pageSize' => 1000,
41
                        ]
42
                    ])
43
                );
44
            }
45 1
        }
46
47 5
        if (empty($reader)) {
48 5
            $reader = new QueryReader($query ? : $class::findYml($findParams));
49 5
        }
50
51 5
        return $reader;
52
    }
53
}
54