Passed
Push — master ( 013e5b...2f64eb )
by Mike
03:53
created

DataProviderBusinessFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Test Coverage

Coverage 79.31%

Importance

Changes 0
Metric Value
eloc 23
dl 0
loc 78
ccs 23
cts 29
cp 0.7931
rs 10
c 0
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A createXmlMerger() 0 3 1
A createCustomGenerator() 0 7 1
A createDataProviderFinder() 0 6 1
A createDataProviderGenerator() 0 7 1
A createDataProviderParser() 0 5 1
A createFileWriter() 0 4 1
A createCleaner() 0 4 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\DataProvider\Business;
6
7
8
use Xervice\Core\Business\Model\Factory\AbstractBusinessFactory;
9
use Xervice\DataProvider\Business\Model\Cleaner\Cleaner;
10
use Xervice\DataProvider\Business\Model\Cleaner\CleanerInterface;
11
use Xervice\DataProvider\Business\Model\Finder\DataProviderFinder;
12
use Xervice\DataProvider\Business\Model\Finder\DataProviderFinderInterface;
13
use Xervice\DataProvider\Business\Model\Generator\DataProviderGenerator;
14
use Xervice\DataProvider\Business\Model\Generator\DataProviderGeneratorInterface;
15
use Xervice\DataProvider\Business\Model\Generator\FileWriter;
16
use Xervice\DataProvider\Business\Model\Generator\FileWriterInterface;
17
use Xervice\DataProvider\Business\Model\Parser\DataProviderParser;
18
use Xervice\DataProvider\Business\Model\Parser\DataProviderParserInterface;
19
use Xervice\DataProvider\Business\Model\Parser\XmlMerger;
20
use Xervice\DataProvider\Business\Model\Parser\XmlMergerInterface;
21
22
/**
23
 * @method \Xervice\DataProvider\DataProviderConfig getConfig()
24
 */
25
class DataProviderBusinessFactory extends AbstractBusinessFactory
26
{
27
    /**
28
     * @param \Xervice\DataProvider\Business\Model\Parser\DataProviderParserInterface $dataProviderParser
29
     *
30
     * @return \Xervice\DataProvider\Business\Model\Generator\DataProviderGeneratorInterface
31
     */
32
    public function createCustomGenerator(DataProviderParserInterface $dataProviderParser): DataProviderGeneratorInterface
33
    {
34
        return new DataProviderGenerator(
35
            $dataProviderParser,
36
            $this->createFileWriter(),
37
            $this->getConfig()->getDataProviderNamespace(),
38
            $this->getConfig()->getDataProviderExtends()
39
        );
40
    }
41
42
    /**
43
     * @return \Xervice\DataProvider\Business\Model\Generator\DataProviderGenerator
44
     */
45 9
    public function createDataProviderGenerator(): DataProviderGeneratorInterface
46
    {
47 9
        return new DataProviderGenerator(
48 9
            $this->createDataProviderParser(),
49 9
            $this->createFileWriter(),
50 9
            $this->getConfig()->getDataProviderNamespace(),
51 9
            $this->getConfig()->getDataProviderExtends()
52
        );
53
    }
54
55
    /**
56
     * @return \Xervice\DataProvider\Business\Model\Cleaner\Cleaner
57
     */
58 1
    public function createCleaner(): CleanerInterface
59
    {
60 1
        return new Cleaner(
61 1
            $this->createDataProviderFinder()
62
        );
63
    }
64
65
    /**
66
     * @return \Xervice\DataProvider\Business\Model\Parser\DataProviderParser
67
     */
68 9
    public function createDataProviderParser(): DataProviderParserInterface
69
    {
70 9
        return new DataProviderParser(
71 9
            $this->createDataProviderFinder(),
72 9
            $this->createXmlMerger()
73
        );
74
    }
75
76
    /**
77
     * @return \Xervice\DataProvider\Business\Model\Finder\DataProviderFinder
78
     */
79 9
    public function createDataProviderFinder(): DataProviderFinderInterface
80
    {
81 9
        return new DataProviderFinder(
82 9
            $this->getConfig()->getPaths(),
83 9
            $this->getConfig()->getGeneratedPath(),
84 9
            $this->getConfig()->getFilePattern()
85
        );
86
    }
87
88
    /**
89
     * @return \Xervice\DataProvider\Business\Model\Parser\XmlMerger
90
     */
91 9
    public function createXmlMerger(): XmlMergerInterface
92
    {
93 9
        return new XmlMerger();
94
    }
95
96
    /**
97
     * @return \Xervice\DataProvider\Business\Model\Generator\FileWriter
98
     */
99 9
    public function createFileWriter(): FileWriterInterface
100
    {
101 9
        return new FileWriter(
102 9
            $this->getConfig()->getGeneratedPath()
103
        );
104
    }
105
}