-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move ReaderFactory into Common/Creator
- Loading branch information
Showing
4 changed files
with
90 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
<?php | ||
|
||
namespace Box\Spout\Reader\Common\Creator; | ||
|
||
use Box\Spout\Common\Creator\HelperFactory; | ||
use Box\Spout\Common\Exception\UnsupportedTypeException; | ||
use Box\Spout\Common\Type; | ||
use Box\Spout\Reader\CSV\Creator\InternalEntityFactory as CSVInternalEntityFactory; | ||
use Box\Spout\Reader\CSV\Manager\OptionsManager as CSVOptionsManager; | ||
use Box\Spout\Reader\CSV\Reader as CSVReader; | ||
use Box\Spout\Reader\ODS\Creator\HelperFactory as ODSHelperFactory; | ||
use Box\Spout\Reader\ODS\Creator\InternalEntityFactory as ODSInternalEntityFactory; | ||
use Box\Spout\Reader\ODS\Creator\ManagerFactory as ODSManagerFactory; | ||
use Box\Spout\Reader\ODS\Manager\OptionsManager as ODSOptionsManager; | ||
use Box\Spout\Reader\ODS\Reader as ODSReader; | ||
use Box\Spout\Reader\ReaderInterface; | ||
use Box\Spout\Reader\XLSX\Creator\HelperFactory as XLSXHelperFactory; | ||
use Box\Spout\Reader\XLSX\Creator\InternalEntityFactory as XLSXInternalEntityFactory; | ||
use Box\Spout\Reader\XLSX\Creator\ManagerFactory as XLSXManagerFactory; | ||
use Box\Spout\Reader\XLSX\Manager\OptionsManager as XLSXOptionsManager; | ||
use Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory; | ||
use Box\Spout\Reader\XLSX\Reader as XLSXReader; | ||
|
||
/** | ||
* Class ReaderFactory | ||
* This factory is used to create readers, based on the type of the file to be read. | ||
* It supports CSV, XLSX and ODS formats. | ||
*/ | ||
class ReaderFactory | ||
{ | ||
/** | ||
* This creates an instance of the appropriate reader, given the type of the file to be read | ||
* | ||
* @param string $readerType Type of the reader to instantiate | ||
* @throws \Box\Spout\Common\Exception\UnsupportedTypeException | ||
* @return ReaderInterface | ||
*/ | ||
public static function create($readerType) | ||
{ | ||
switch ($readerType) { | ||
case Type::CSV: return self::getCSVReader(); | ||
case Type::XLSX: return self::getXLSXReader(); | ||
case Type::ODS: return self::getODSReader(); | ||
default: | ||
throw new UnsupportedTypeException('No readers supporting the given type: ' . $readerType); | ||
} | ||
} | ||
|
||
/** | ||
* @return CSVReader | ||
*/ | ||
private static function getCSVReader() | ||
{ | ||
$optionsManager = new CSVOptionsManager(); | ||
$helperFactory = new HelperFactory(); | ||
$entityFactory = new CSVInternalEntityFactory($helperFactory); | ||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper(); | ||
|
||
return new CSVReader($optionsManager, $globalFunctionsHelper, $entityFactory); | ||
} | ||
|
||
/** | ||
* @return XLSXReader | ||
*/ | ||
private static function getXLSXReader() | ||
{ | ||
$optionsManager = new XLSXOptionsManager(); | ||
$helperFactory = new XLSXHelperFactory(); | ||
$managerFactory = new XLSXManagerFactory($helperFactory, new CachingStrategyFactory()); | ||
$entityFactory = new XLSXInternalEntityFactory($managerFactory, $helperFactory); | ||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper(); | ||
|
||
return new XLSXReader($optionsManager, $globalFunctionsHelper, $entityFactory, $managerFactory); | ||
} | ||
|
||
/** | ||
* @return ODSReader | ||
*/ | ||
private static function getODSReader() | ||
{ | ||
$optionsManager = new ODSOptionsManager(); | ||
$helperFactory = new ODSHelperFactory(); | ||
$managerFactory = new ODSManagerFactory(); | ||
$entityFactory = new ODSInternalEntityFactory($helperFactory, $managerFactory); | ||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper(); | ||
|
||
return new ODSReader($optionsManager, $globalFunctionsHelper, $entityFactory); | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
2 changes: 1 addition & 1 deletion
2
tests/Spout/Reader/ReaderFactoryTest.php → ...ader/Common/Creator/ReaderFactoryTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters