DataProviderFinder   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Test Coverage

Coverage 94.74%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 67
ccs 18
cts 19
cp 0.9474
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 4
A getSchemaFiles() 0 8 1
A getGeneratedFiles() 0 8 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\DataProvider\Business\Model\Finder;
6
7
8
use Symfony\Component\Finder\Finder;
9
use Xervice\DataProvider\Business\Exception\GenerateDirectoryNotWriteable;
10
11
class DataProviderFinder implements DataProviderFinderInterface
12
{
13
    /**
14
     * @var array
15
     */
16
    private $paths;
17
18
    /**
19
     * @var string
20
     */
21
    private $generatedPath;
22
23
    /**
24
     * @var string
25
     */
26
    private $filePattern;
27
28
    /**
29
     * DataProviderFinder constructor.
30
     *
31
     * @param array $paths
32
     * @param string $generatedPath
33
     * @param string $filePattern
34
     *
35
     * @throws \Xervice\DataProvider\Business\Exception\GenerateDirectoryNotWriteable
36
     */
37 10
    public function __construct(array $paths, string $generatedPath, string $filePattern)
38
    {
39 10
        $this->paths = $paths;
40 10
        $this->generatedPath = $generatedPath;
41 10
        $this->filePattern = $filePattern;
42
43
        if (
44 10
            !is_writable($this->generatedPath)
45 10
            && !mkdir($this->generatedPath, 0777, true)
46 10
            && !is_dir($this->generatedPath)
47
        ) {
48
            throw new GenerateDirectoryNotWriteable($this->generatedPath);
49
        }
50 10
    }
51
52
    /**
53
     * @return \Symfony\Component\Finder\Finder
54
     * @throws \InvalidArgumentException
55
     */
56 10
    public function getSchemaFiles() : Finder
57
    {
58 10
        $finder = new Finder();
59
60 10
        $finder->files()->name($this->filePattern)->sortByName();
61 10
        $finder->in($this->paths);
62
63 10
        return $finder;
64
    }
65
66
    /**
67
     * @return \Symfony\Component\Finder\Finder
68
     * @throws \InvalidArgumentException
69
     */
70 1
    public function getGeneratedFiles() : Finder
71
    {
72 1
        $finder = new Finder();
73
74 1
        $finder->files()->name('*DataProvider.php')->sortByName();
75 1
        $finder->in($this->generatedPath);
76
77 1
        return $finder;
78
    }
79
}
80