Completed
Pull Request — develop_3.0 (#436)
by Adrien
02:39
created

WriterFactory::getXLSXWriter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 7
cts 7
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Box\Spout\Writer;
4
5
use Box\Spout\Common\Exception\UnsupportedTypeException;
6
use Box\Spout\Common\Helper\GlobalFunctionsHelper;
7
use Box\Spout\Common\Type;
8
use Box\Spout\Writer\Common\Creator\EntityFactory;
9
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
10
use Box\Spout\Writer\Common\Manager\Style\StyleMerger;
11
12
/**
13
 * Class WriterFactory
14
 * This factory is used to create writers, based on the type of the file to be read.
15
 * It supports CSV, XLSX and ODS formats.
16
 *
17
 * @package Box\Spout\Writer
18
 */
19
class WriterFactory
20
{
21
    /**
22
     * This creates an instance of the appropriate writer, given the type of the file to be read
23
     *
24
     * @api
25
     * @param  string $writerType Type of the writer to instantiate
26
     * @return WriterInterface
27
     * @throws \Box\Spout\Common\Exception\UnsupportedTypeException
28
     */
29 113
    public static function create($writerType)
30
    {
31
        switch ($writerType) {
32 113
            case Type::CSV: return self::getCSVWriter();
33 100
            case Type::XLSX: return self::getXLSXWriter();
34 49
            case Type::ODS: return self::getODSWriter();
35
            default:
36 1
                throw new UnsupportedTypeException('No writers supporting the given type: ' . $writerType);
37
        }
38
    }
39
40
    /**
41
     * @return CSV\Writer
42
     */
43 13
    private static function getCSVWriter()
44
    {
45 13
        $optionsManager = new CSV\Manager\OptionsManager();
46 13
        $styleMerger = new StyleMerger();
47 13
        $globalFunctionsHelper = new GlobalFunctionsHelper();
48
49 13
        return new CSV\Writer($optionsManager, $styleMerger, $globalFunctionsHelper);
50
    }
51
52
    /**
53
     * @return XLSX\Writer
54
     */
55 51
    private static function getXLSXWriter()
56
    {
57 51
        $styleBuilder = new StyleBuilder();
58 51
        $optionsManager = new XLSX\Manager\OptionsManager($styleBuilder);
59 51
        $styleMerger = new StyleMerger();
60 51
        $globalFunctionsHelper = new GlobalFunctionsHelper();
61 51
        $internalFactory = new XLSX\Creator\InternalFactory(new EntityFactory());
62
63 51
        return new XLSX\Writer($optionsManager, $styleMerger, $globalFunctionsHelper, $internalFactory);
64
    }
65
66
    /**
67
     * @return ODS\Writer
68
     */
69 48
    private static function getODSWriter()
70
    {
71 48
        $styleBuilder = new StyleBuilder();
72 48
        $optionsManager = new ODS\Manager\OptionsManager($styleBuilder);
73 48
        $styleMerger = new StyleMerger();
74 48
        $globalFunctionsHelper = new GlobalFunctionsHelper();
75 48
        $internalFactory = new ODS\Creator\InternalFactory(new EntityFactory());
76
77 48
        return new ODS\Writer($optionsManager, $styleMerger, $globalFunctionsHelper, $internalFactory);
78
    }
79
}
80