ItemExceptionEvent   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 15
c 1
b 0
f 0
dl 0
loc 94
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A ignoreException() 0 4 1
A shouldThrowException() 0 3 1
A getException() 0 3 1
A getKey() 0 3 1
A getItem() 0 3 1
A __construct() 0 11 1
1
<?php
2
3
/**
4
 * Platine ETL
5
 *
6
 * Platine ETL is a library to Extract-Transform-Load Data from various sources
7
 *
8
 * This content is released under the MIT License (MIT)
9
 *
10
 * Copyright (c) 2020 Platine ETL
11
 * Copyright (c) 2019 Benoit POLASZEK
12
 *
13
 * Permission is hereby granted, free of charge, to any person obtaining a copy
14
 * of this software and associated documentation files (the "Software"), to deal
15
 * in the Software without restriction, including without limitation the rights
16
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
 * copies of the Software, and to permit persons to whom the Software is
18
 * furnished to do so, subject to the following conditions:
19
 *
20
 * The above copyright notice and this permission notice shall be included in all
21
 * copies or substantial portions of the Software.
22
 *
23
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
 * SOFTWARE.
30
 */
31
32
declare(strict_types=1);
33
34
namespace Platine\Etl\Event;
35
36
use Platine\Etl\Etl;
37
use Throwable;
38
39
/**
40
 * @class ItemExceptionEvent
41
 * @package Platine\Etl\Event
42
 */
43
class ItemExceptionEvent extends BaseEvent
44
{
45
    /**
46
     * The item
47
     * @var mixed
48
     */
49
    protected mixed $item;
50
51
    /**
52
     * The key
53
     * @var int|string|null
54
     */
55
    protected int|string|null $key;
56
57
    /**
58
     * The exception that is raised
59
     * @var Throwable
60
     */
61
    protected Throwable $exception;
62
63
    /**
64
     * Whether need throw the exception
65
     * @var bool
66
     */
67
    protected bool $shouldBeThrown = true;
68
69
70
71
    /**
72
     * Create new instance
73
     * @param string $name
74
     * @param mixed $item
75
     * @param int|string|null $key
76
     * @param Etl $etl
77
     * @param Throwable $exception
78
     */
79
    public function __construct(
80
        string $name,
81
        mixed $item,
82
        int|string|null $key,
83
        Etl $etl,
84
        Throwable $exception
85
    ) {
86
        parent::__construct($name, $etl);
87
        $this->item = $item;
88
        $this->key = $key;
89
        $this->exception = $exception;
90
    }
91
92
    /**
93
     * Return the item
94
     * @return mixed
95
     */
96
    public function getItem(): mixed
97
    {
98
        return $this->item;
99
    }
100
101
    /**
102
     * Return the key
103
     * @return int|string|null
104
     */
105
    public function getKey(): int|string|null
106
    {
107
        return $this->key;
108
    }
109
110
    /**
111
     * Return the exception
112
     * @return Throwable
113
     */
114
    public function getException(): Throwable
115
    {
116
        return $this->exception;
117
    }
118
119
    /**
120
     * @return bool
121
     */
122
    public function shouldThrowException(): bool
123
    {
124
        return $this->shouldBeThrown;
125
    }
126
127
128
    /**
129
     * Exception should not be thrown.
130
     * And Implicitly skips the current item.
131
     * @return void
132
     */
133
    public function ignoreException(): void
134
    {
135
        $this->shouldBeThrown = false;
136
        $this->etl->skipCurrentItem();
137
    }
138
}
139