8000 Wiring up service. · ReservedDeveloper/csv-bundle@ff55988 · GitHub
[go: up one dir, main page]

Skip to content

Commit ff55988

Browse files
committed
Wiring up service.
1 parent 433c71a commit ff55988

File tree

3 files changed

+48
-14
lines changed

3 files changed

+48
-14
lines changed

FileReader/CsvFileReader.php

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
*/
88
namespace Nerdery\CsvBundle\FileReader;
99

10+
use Nerdery\CsvBundle\Event\CsvParseErrorEvent;
1011
use Nerdery\CsvBundle\Exception\FileInvalidException;
1112
use Nerdery\CsvBundle\Exception\NoHeaderForDataColumnException;
1213
use Nerdery\CsvBundle\FileReader\CsvFileReaderInterface;
1314
use Nerdery\CsvBundle\FileReader\Options\CsvFileReaderOptions;
1415
use Nerdery\CsvBundle\FileReader\Options\CsvFileReaderOptionsInterface;
1516

17+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
1618
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
1719
use Symfony\Component\HttpFoundation\File\Exception\FileException;
1820

@@ -30,6 +32,13 @@ class CsvFileReader implements CsvFileReaderInterface
3032
*/
3133
private $options;
3234

35+
/**
36+
* Event Dispatcher
37+
*
38+
* @var EventDispatcherInterface
39+
*/
40+
private $eventDispatcher;
41+
3342
/**
3443
* File handle.
3544
*
@@ -63,9 +72,12 @@ class CsvFileReader implements CsvFileReaderInterface
6372
*
6473
* @param CsvFileReaderOptionsInterface $options
6574
*/
66-
public function __construct(CsvFileReaderOptionsInterface $options)
67-
{
75+
public function __construct(
76+
CsvFileReaderOptionsInterface $options,
77+
EventDispatcherInterface $eventDispatcher
78+
) {
6879
$this->options = $options;
80+
$this->eventDispatcher = $eventDispatcher;
6981
$this->waitingForHeader = $this->options->isHeaderExpected();
7082
$this->currentLineNumber = 0;
7183
}
@@ -140,15 +152,15 @@ private function parseLine()
140152
{
141153
$data = false;
142154
try {
143-
$data = $this->fileReader->getRowData();
144-
return $data;
155+
$data = $this->getRowData();
145156
} catch (\Exception $e) {
146157

147-
$this->errorReporter->addErrorForLine(
148-
$e->getMessage(),
149-
$this->fileReader->getCurrentLineNumber()
158+
$event = new CsvParseErrorEvent($e, $this->getCurrentLineNumber());
159+
$this->eventDispatcher->dispatch(
160+
CsvParseErrorEvent::EVENT_KEY,
161+
$event
150162
);
151-
return $data;
163+
152164
}
153165
return $data;
154166
}

FileReader/Factory/CsvFileReaderFactory.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
use Nerdery\CsvBundle\FileReader\Factory\CsvFileReaderFactoryInterface;
1313
use Nerdery\CsvBundle\FileReader\Options\CsvFileReaderOptions;
1414

15+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
16+
1517
/**
1618
* FileReaderFactory
1719
*
@@ -21,6 +23,22 @@
2123
*/
2224
class CsvFileReaderFactory implements CsvFileReaderFactoryInterface
2325
{
26+
/**
27+
* Event Dispatcher
28+
*
29+
* @var EventDispatcherInterface
30+
*/
31+
private $eventDispatcher;
32+
33+
/**
34+
* Constructor.
35+
*
36+
* @param EventDispatcherInterface $eventDispatcher
37+
*/
38+
public function __construct(EventDispatcherInterface $eventDispatcher)
39+
{
40+
$this->eventDispacher = $eventDispatcher;
41+
}
2442

2543
/**
2644
* Create
@@ -32,7 +50,10 @@ public function create(array $options = [])
3250
{
3351
$csvFileReaderOptions = new CsvFileReaderOptions($options);
3452

35-
$reader = new CsvFileReader($csvFileReaderOptions);
53+
$reader = new CsvFileReader(
54+
$csvFileReaderOptions,
55+
$this->eventDispatcher
56+
);
3657
return $reader;
3758
}
3859
}

Resources/config/services.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ parameters:
44
services:
55
nerdery_csv.factory.file_reader:
66
class: %nerdery_csv.factory.file_reader.class%
7-
arguments: []
7+
arguments:
8+
- @event_dispatcher
89

910
nerdery_csv.error_reporter:
1011
class: Nerdery\CsvBundle\Error\Reporter.php
1112
arguments: []
1213

1314
nerdery_csv.subscriber.broker_modification:
1415
class: Nerdery\CsvBundle\Subscriber\ParseErrorSubscriber
15-
arguments:
16-
- @nerdery_csv.error_reporter
17-
tags:
18-
- { name: kernel.event_subscriber }
16+
arguments:
17+
- @nerdery_csv.error_reporter
18+
tags:
19+
- { name: kernel.event_subscriber }

0 commit comments

Comments
 (0)
0