Completed
Push — master ( 8b5613...ea1393 )
by Sébastien
04:16
created

ReportRunnerFactory::getJasperReportRunner()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Soluble\Jasper;
6
7
use Soluble\Jasper\ReportRunner\ReportRunnerInterface;
8
use Soluble\Jasper\ReportRunner\JasperReportRunner;
9
use Soluble\Japha\Bridge\Adapter as BridgeAdapter;
10
11
class ReportRunnerFactory
12
{
13
    public const JAPHA_JASPER_V6 = 'japha_jasper_v6';
14
15
    public const SUPPORTED_RUNNERS = [
16
        self::JAPHA_JASPER_V6 => JasperReportRunner::class
17
    ];
18
19
    /**
20
     * Factory method to create the default JasperReportRunner (V6) engine.
21
     *
22
     * @param BridgeAdapter $bridgeAdapter soluble japha bridge adapter
23
     *
24
     * @return JasperReportRunner
25
     */
26 1
    public static function getJasperReportRunner(BridgeAdapter $bridgeAdapter): JasperReportRunner
27
    {
28 1
        return new JasperReportRunner($bridgeAdapter);
29
    }
30
31
    /**
32
     * Factory method to create a custom ReportRunner engine.
33
     *
34
     * @param BridgeAdapter $bridgeAdapter soluble japha bridge adapter
35
     *
36
     * @return ReportRunnerInterface
37
     */
38 2
    public function __invoke(BridgeAdapter $bridgeAdapter, string $runner = self::JAPHA_JASPER_V6): ReportRunnerInterface
39
    {
40 2
        if (!array_key_exists($runner, self::SUPPORTED_RUNNERS)) {
41 1
            throw new Exception\UnsupportedRunnerException(
42 1
                sprintf(
43 1
                    'Unsupported runner "%s", must be in (%s)',
44 1
                    $runner,
45 1
                    implode(',', array_keys(self::SUPPORTED_RUNNERS))
46
                )
47
            );
48
        }
49
50 1
        $class = self::SUPPORTED_RUNNERS[$runner];
51
52 1
        return new $class($bridgeAdapter);
53
    }
54
}
55