DataProviderBusinessFactory::createFileWriter()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
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 10
    public function createDataProviderGenerator(): DataProviderGeneratorInterface
46
    {
47 10
        return new DataProviderGenerator(
48 10
            $this->createDataProviderParser(),
49 10
            $this->createFileWriter(),
50 10
            $this->getConfig()->getDataProviderNamespace(),
51 10
            $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 10
    public function createDataProviderParser(): DataProviderParserInterface
69
    {
70 10
        return new DataProviderParser(
71 10
            $this->createDataProviderFinder(),
72 10
            $this->createXmlMerger()
73
        );
74
    }
75
76
    /**
77
     * @return \Xervice\DataProvider\Business\Model\Finder\DataProviderFinder
78
     */
79 10
    public function createDataProviderFinder(): DataProviderFinderInterface
80
    {
81 10
        return new DataProviderFinder(
82 10
            $this->getConfig()->getPaths(),
83 10
            $this->getConfig()->getGeneratedPath(),
84 10
            $this->getConfig()->getFilePattern()
85
        );
86
    }
87
88
    /**
89
     * @return \Xervice\DataProvider\Business\Model\Parser\XmlMerger
90
     */
91 10
    public function createXmlMerger(): XmlMergerInterface
92
    {
93 10
        return new XmlMerger(
94 10
            $this->getConfig()->getDataProviderNamespace()
95
        );
96
    }
97
98
    /**
99
     * @return \Xervice\DataProvider\Business\Model\Generator\FileWriter
100
     */
101 10
    public function createFileWriter(): FileWriterInterface
102
    {
103 10
        return new FileWriter(
104 10
            $this->getConfig()->getGeneratedPath()
105
        );
106
    }
107
}