Completed
Pull Request — develop_3.0 (#427)
by Adrien
02:25
created

InternalFactory::createStringsEscaper()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Box\Spout\Writer\XLSX\Factory;
4
5
use Box\Spout\Common\Escaper;
6
use Box\Spout\Common\Helper\StringHelper;
7
use Box\Spout\Writer\Common\Manager\OptionsManagerInterface;
8
use Box\Spout\Writer\Common\Options;
9
use Box\Spout\Writer\Factory\EntityFactory;
10
use Box\Spout\Writer\Factory\InternalFactoryInterface;
11
use Box\Spout\Writer\Factory\WorkbookFactory;
12
use Box\Spout\Writer\Factory\WorksheetFactory;
13
use Box\Spout\Writer\XLSX\Helper\FileSystemHelper;
14
use Box\Spout\Writer\XLSX\Helper\SharedStringsHelper;
15
use Box\Spout\Writer\XLSX\Helper\StyleHelper;
16
use Box\Spout\Writer\XLSX\Manager\WorkbookManager;
17
use Box\Spout\Writer\XLSX\Manager\WorksheetManager;
18
19
/**
20
 * Class InternalFactory
21
 * Factory for all useful types of objects needed by the XLSX Writer
22
 *
23
 * @package Box\Spout\Writer\XLSX\Factory
24
 */
25
class InternalFactory implements InternalFactoryInterface
26
{
27
    /** @var EntityFactory */
28
    private $entityFactory;
29
30
    /**
31
     * InternalFactory constructor.
32
     *
33
     * @param EntityFactory $entityFactory
34
     */
35 51
    public function __construct(EntityFactory $entityFactory)
36
    {
37 51
        $this->entityFactory = $entityFactory;
38 51
    }
39
40
    /**
41
     * @param OptionsManagerInterface $optionsManager
42
     * @return WorkbookManager
43
     */
44 46
    public function createWorkbookManager(OptionsManagerInterface $optionsManager)
45
    {
46 46
        $workbook = $this->entityFactory->createWorkbook();
47
48 46
        $fileSystemHelper = $this->createFileSystemHelper($optionsManager);
49 46
        $fileSystemHelper->createBaseFilesAndFolders();
50
51 46
        $xlFolder = $fileSystemHelper->getXlFolder();
52 46
        $sharedStringsHelper = $this->createSharedStringsHelper($xlFolder);
53
54 46
        $styleHelper = $this->createStyleHelper($optionsManager);
55
56 46
        $worksheetManager = $this->createWorksheetManager($optionsManager, $sharedStringsHelper, $styleHelper);
57
58 46
        return new WorkbookManager($workbook, $optionsManager, $worksheetManager, $styleHelper, $fileSystemHelper, $this->entityFactory);
59
    }
60
61
    /**
62
     * @param OptionsManagerInterface $optionsManager
63
     * @param SharedStringsHelper $sharedStringsHelper
64
     * @param StyleHelper $styleHelper
65
     * @return WorksheetManager
66
     */
67 46
    private function createWorksheetManager(
68
        OptionsManagerInterface $optionsManager,
69
        SharedStringsHelper $sharedStringsHelper,
70
        StyleHelper $styleHelper
71
    )
72
    {
73 46
        $stringsEscaper = $this->createStringsEscaper();
74 46
        $stringsHelper = $this->createStringHelper();
75
76 46
        return new WorksheetManager($optionsManager, $sharedStringsHelper, $styleHelper, $stringsEscaper, $stringsHelper);
77
    }
78
79
    /**
80
     * @param string $xlFolder Path to the "xl" folder
81
     * @return SharedStringsHelper
82
     */
83 46
    private function createSharedStringsHelper($xlFolder)
84
    {
85 46
        return new SharedStringsHelper($xlFolder);
86
    }
87
88
    /**
89
     * @param OptionsManagerInterface $optionsManager
90
     * @return FileSystemHelper
91
     */
92 46
    private function createFileSystemHelper(OptionsManagerInterface $optionsManager)
93
    {
94 46
        $tempFolder = $optionsManager->getOption(Options::TEMP_FOLDER);
95 46
        return new FileSystemHelper($tempFolder);
96
    }
97
98
    /**
99
     * @param OptionsManagerInterface $optionsManager
100
     * @return StyleHelper
101
     */
102 46
    private function createStyleHelper(OptionsManagerInterface $optionsManager)
103
    {
104 46
        $defaultRowStyle = $optionsManager->getOption(Options::DEFAULT_ROW_STYLE);
105 46
        return new StyleHelper($defaultRowStyle);
106
    }
107
108
    /**
109
     * @return Escaper\XLSX
110
     */
111 46
    private function createStringsEscaper()
112
    {
113 46
        return Escaper\XLSX::getInstance();
114
    }
115
116
    /**
117
     * @return StringHelper
118
     */
119 46
    private function createStringHelper()
120
    {
121 46
        return new StringHelper();
122
    }
123
}