Completed
Push — master ( 4a6546...7f8b95 )
by Adrien
02:30
created

Reader::getOptions()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
nc 2
cc 2
eloc 4
nop 0
crap 2
1
<?php
2
3
namespace Box\Spout\Reader\ODS;
4
5
use Box\Spout\Common\Exception\IOException;
6
use Box\Spout\Reader\AbstractReader;
7
8
/**
9
 * Class Reader
10
 * This class provides support to read data from a ODS file
11
 *
12
 * @package Box\Spout\Reader\ODS
13
 */
14
class Reader extends AbstractReader
15
{
16
    /** @var \ZipArchive */
17
    protected $zip;
18
19
    /** @var SheetIterator To iterator over the ODS sheets */
20
    protected $sheetIterator;
21
22
    /**
23
     * Returns the reader's current options
24
     *
25
     * @return ReaderOptions
26
     */
27 93
    protected function getOptions()
28
    {
29 93
        if (!isset($this->options)) {
30 93
            $this->options = new ReaderOptions();
31 93
        }
32 93
        return $this->options;
33
    }
34
35
    /**
36
     * Returns whether stream wrappers are supported
37
     *
38
     * @return bool
39
     */
40 6
    protected function doesSupportStreamWrapper()
41
    {
42 6
        return false;
43
    }
44
45
    /**
46
     * Opens the file at the given file path to make it ready to be read.
47
     *
48
     * @param  string $filePath Path of the file to be read
49
     * @return void
50
     * @throws \Box\Spout\Common\Exception\IOException If the file at the given path or its content cannot be read
51
     * @throws \Box\Spout\Reader\Exception\NoSheetsFoundException If there are no sheets in the file
52
     */
53 90
    protected function openReader($filePath)
54
    {
55 90
        $this->zip = new \ZipArchive();
56
57 90
        if ($this->zip->open($filePath) === true) {
58 90
            $this->sheetIterator = new SheetIterator($filePath, $this->getOptions());
59 90
        } else {
60 3
            throw new IOException("Could not open $filePath for reading.");
61
        }
62 90
    }
63
64
    /**
65
     * Returns an iterator to iterate over sheets.
66
     *
67
     * @return SheetIterator To iterate over sheets
68
     */
69 90
    protected function getConcreteSheetIterator()
70
    {
71 90
        return $this->sheetIterator;
72
    }
73
74
    /**
75
     * Closes the reader. To be used after reading the file.
76
     *
77
     * @return void
78
     */
79 81
    protected function closeReader()
80
    {
81 81
        if ($this->zip) {
82 81
            $this->zip->close();
83 81
        }
84 81
    }
85
}
86