Passed
Push — master ( 3581f7...005bcc )
by De Cramer
05:10 queued 03:31
created

JsonFileWriterFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 19
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A configureValidator() 0 4 1
A build() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Oliverde8\Component\PhpEtl\Builder\Factories\Loader;
6
7
use Oliverde8\Component\PhpEtl\Builder\Factories\AbstractFactory;
8
use Oliverde8\Component\PhpEtl\ChainOperation\ChainOperationInterface;
9
use Oliverde8\Component\PhpEtl\Load\File\Json;
10
use Symfony\Component\Validator\Constraint;
11
use Symfony\Component\Validator\Constraints as Assert;
12
13
/**
14
 * Class FileWriterFactory
15
 *
16
 * @author    de Cramer Oliver<[email protected]>
17
 * @copyright 2018 Oliverde8
18
 * @package Oliverde8\Component\PhpEtl\Builder\Factories\Loader
19
 */
20
class JsonFileWriterFactory extends AbstractFactory
21
{
22
    /**
23
     * @inheritdoc
24
     */
25
    protected function configureValidator(): Constraint
26
    {
27
        return new Assert\Collection([
28
            'file' => new Assert\NotBlank(),
29
        ]);
30
    }
31
32
    /**
33
     * @inheritdoc
34
     */
35
    protected function build($operation, $options): ChainOperationInterface
36
    {
37
        $tmp = tempnam(sys_get_temp_dir(), 'etl');
38
        return $this->create(new Json($tmp), $options['file']);
39
    }
40
}
41