Passed
Pull Request — develop_3.0 (#499)
by Adrien
02:49
created

ManagerFactory   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 5
dl 0
loc 81
ccs 23
cts 23
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A createSharedStringsManager() 0 13 1
A createWorkbookRelationshipsManager() 0 8 2
A createSheetManager() 0 6 1
A createStyleManager() 0 6 1
1
<?php
2
3
namespace Box\Spout\Reader\XLSX\Creator;
4
5
use Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory;
6
use Box\Spout\Reader\XLSX\Manager\SharedStringsManager;
7
use Box\Spout\Reader\XLSX\Manager\SheetManager;
8
use Box\Spout\Reader\XLSX\Manager\StyleManager;
9
use Box\Spout\Reader\XLSX\Manager\WorkbookRelationshipsManager;
10
11
/**
12
 * Class ManagerFactory
13
 * Factory to create managers
14
 */
15
class ManagerFactory
16
{
17
    /** @var HelperFactory */
18
    private $helperFactory;
19
20
    /** @var CachingStrategyFactory */
21
    private $cachingStrategyFactory;
22
23
    /** @var WorkbookRelationshipsManager */
24
    private $cachedWorkbookRelationshipsManager;
25
26
    /**
27
     * @param HelperFactory $helperFactory Factory to create helpers
28
     * @param CachingStrategyFactory $cachingStrategyFactory Factory to create shared strings caching strategies
29
     */
30 50
    public function __construct(HelperFactory $helperFactory, CachingStrategyFactory $cachingStrategyFactory)
31
    {
32 50
        $this->helperFactory = $helperFactory;
33 50
        $this->cachingStrategyFactory = $cachingStrategyFactory;
34 50
    }
35
36
    /**
37
     * @param string $filePath Path of the XLSX file being read
38
     * @param string $tempFolder Temporary folder where the temporary files to store shared strings will be stored
39
     * @param EntityFactory $entityFactory Factory to create entities
40
     * @return SharedStringsManager
41
     */
42 40
    public function createSharedStringsManager($filePath, $tempFolder, $entityFactory)
43
    {
44 40
        $workbookRelationshipsManager = $this->createWorkbookRelationshipsManager($filePath, $entityFactory);
45
46 40
        return new SharedStringsManager(
47 40
            $filePath,
48 40
            $tempFolder,
49 40
            $workbookRelationshipsManager,
50 40
            $entityFactory,
51 40
            $this->helperFactory,
52 40
            $this->cachingStrategyFactory
53
        );
54
    }
55
56
    /**
57
     * @param string $filePath Path of the XLSX file being read
58
     * @param EntityFactory $entityFactory Factory to create entities
59
     * @return WorkbookRelationshipsManager
60
     */
61 40
    private function createWorkbookRelationshipsManager($filePath, $entityFactory)
62
    {
63 40
        if (!isset($this->cachedWorkbookRelationshipsManager)) {
64 40
            $this->cachedWorkbookRelationshipsManager = new WorkbookRelationshipsManager($filePath, $entityFactory);
65
        }
66
67 40
        return $this->cachedWorkbookRelationshipsManager;
68
    }
69
70
    /**
71
     * @param string $filePath Path of the XLSX file being read
72
     * @param \Box\Spout\Common\Manager\OptionsManagerInterface $optionsManager Reader's options manager
73
     * @param \Box\Spout\Reader\XLSX\Manager\SharedStringsManager $sharedStringsManager Manages shared strings
74
     * @param EntityFactory $entityFactory Factory to create entities
75
     * @return SheetManager
76
     */
77 39
    public function createSheetManager($filePath, $optionsManager, $sharedStringsManager, $entityFactory)
78
    {
79 39
        $escaper = $this->helperFactory->createStringsEscaper();
80
81 39
        return new SheetManager($filePath, $optionsManager, $sharedStringsManager, $escaper, $entityFactory);
82
    }
83
84
    /**
85
     * @param string $filePath Path of the XLSX file being read
86
     * @param EntityFactory $entityFactory Factory to create entities
87
     * @return StyleManager
88
     */
89 38
    public function createStyleManager($filePath, $entityFactory)
90
    {
91 38
        $workbookRelationshipsManager = $this->createWorkbookRelationshipsManager($filePath, $entityFactory);
92
93 38
        return new StyleManager($filePath, $workbookRelationshipsManager, $entityFactory);
94
    }
95
}
96