JsonDataAdapterImpl::setLanguage()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 3

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 13
c 3
b 0
f 0
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.8333
cc 3
nc 3
nop 1
crap 3
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * Jasper report integration for PHP
7
 *
8
 * @link      https://github.com/belgattitude/soluble-jasper
9
 * @author    Vanvelthem Sébastien
10
 * @copyright Copyright (c) 2017-2019 Vanvelthem Sébastien
11
 * @license   MIT
12
 */
13
14
namespace Soluble\Jasper\Proxy\Data;
15
16
use Soluble\Japha\Bridge\Adapter as BridgeAdapter;
17
use Soluble\Japha\Interfaces\JavaObject;
18
use Soluble\Jasper\Exception;
19
use Soluble\Jasper\Proxy\RemoteJavaObjectProxyInterface;
20
21
class JsonDataAdapterImpl implements RemoteJavaObjectProxyInterface
22
{
23
    public const LANGUAGE_JSON   = 'JSON';
24
    public const LANGUAGE_JSONQL = 'JSONQL';
25
26
    /**
27
     * @var BridgeAdapter
28
     */
29
    private $ba;
30
31
    /**
32
     * @var JavaObject Java('net.sf.jasperreports.data.json.JsonDataAdapterImpl')
33
     */
34
    private $jsonAdapter;
35
36 4
    public function __construct(BridgeAdapter $bridgeAdapter)
37
    {
38 4
        $this->ba          = $bridgeAdapter;
39 4
        $this->jsonAdapter = $this->ba->java('net.sf.jasperreports.data.json.JsonDataAdapterImpl');
40 4
    }
41
42 1
    public function setLocale(string $locale): void
43
    {
44 1
        $javaLocale = $this->ba->java('java.util.Locale', $locale);
45 1
        $this->jsonAdapter->setLocale($javaLocale);
46 1
    }
47
48
    /**
49
     * @param string $datePattern json date pattern in java style (i.e. 'yyyy-MM-dd')
50
     */
51 1
    public function setDatePattern(string $datePattern): void
52
    {
53 1
        $this->jsonAdapter->setDatePattern($datePattern);
54 1
    }
55
56
    /**
57
     * @param string $numberPattern json number pattern in java style (i.e. '#,##0.##')
58
     */
59 1
    public function setNumberPattern(string $numberPattern): void
60
    {
61 1
        $this->jsonAdapter->setNumberPattern($numberPattern);
62 1
    }
63
64 1
    public function setUseConnection(bool $useConnection): void
65
    {
66 1
        $this->jsonAdapter->setUseConnection($useConnection);
67 1
    }
68
69
    /**
70
     * Set local json filename.
71
     *
72
     * @see self::setDataFile()
73
     *
74
     * @throws Exception\FileNotFoundException
75
     */
76 2
    public function setFileName(string $filename): void
77
    {
78 2
        if (!file_exists($filename)) {
79 1
            throw new Exception\FileNotFoundException(sprintf(
80 1
                'JSON file not found: %s',
81
                $filename
82
            ));
83
        }
84 1
        $this->jsonAdapter->setFileName($filename);
85 1
    }
86
87 2
    public function setLanguage(string $language): void
88
    {
89 2
        $jsonExpressionLanguageEnum = $this->ba->javaClass('net.sf.jasperreports.data.json.JsonExpressionLanguageEnum');
90 2
        switch (mb_strtolower($language)) {
91 2
            case 'json':
92 1
                $lang = $jsonExpressionLanguageEnum->JSON;
93 1
                break;
94 2
            case 'jsonql':
95 1
                $lang = $jsonExpressionLanguageEnum->JSONQL;
96 1
                break;
97
            default:
98 1
                throw new Exception\InvalidArgumentException(sprintf(
99 1
                    'Language mode not supported: %s',
100
                    $language
101
                ));
102
        }
103 1
        $this->jsonAdapter->setLanguage($lang);
104 1
    }
105
106
    /**
107
     * @return JavaObject Java('net.sf.jasperreports.data.json.JsonDataAdapterImpl')
108
     */
109 2
    public function getJavaProxiedObject(): JavaObject
110
    {
111 2
        return $this->jsonAdapter;
112
    }
113
}
114