2019-05-27 13:01:37 +02:00
|
|
|
<?php
|
2020-08-02 21:51:59 +02:00
|
|
|
|
2019-06-19 19:49:39 +02:00
|
|
|
/**
|
|
|
|
* Class IOFactory
|
|
|
|
*
|
|
|
|
* Class for creating readers for pairing files
|
|
|
|
*
|
2020-08-02 21:51:59 +02:00
|
|
|
* @author Jeroen De Meerleer <schaak@jeroened.be>
|
|
|
|
* @category Main
|
|
|
|
* @package Libpairtwo
|
|
|
|
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
|
2019-06-19 19:49:39 +02:00
|
|
|
*/
|
2019-05-27 13:01:37 +02:00
|
|
|
|
|
|
|
namespace JeroenED\Libpairtwo;
|
|
|
|
|
|
|
|
use JeroenED\LibPairtwo\Exceptions\LibpairtwoException;
|
|
|
|
use JeroenED\Libpairtwo\Interfaces\ReaderInterface;
|
|
|
|
|
2019-06-19 19:49:39 +02:00
|
|
|
/**
|
|
|
|
* Class IOFactory
|
|
|
|
*
|
|
|
|
* Class for creating readers for pairing files
|
|
|
|
*
|
2020-08-02 21:51:59 +02:00
|
|
|
* @author Jeroen De Meerleer <schaak@jeroened.be>
|
|
|
|
* @category Main
|
|
|
|
* @package Libpairtwo
|
|
|
|
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
|
2019-06-19 19:49:39 +02:00
|
|
|
*/
|
2019-05-27 13:01:37 +02:00
|
|
|
abstract class IOFactory
|
|
|
|
{
|
2019-06-19 19:49:39 +02:00
|
|
|
/**
|
|
|
|
* Compatible readers
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
*/
|
2019-09-28 20:31:38 +02:00
|
|
|
private static $Readers = [
|
2020-11-22 17:13:13 +01:00
|
|
|
'Swar-4' => Readers\Swar4::class,
|
2021-11-08 17:00:17 +01:00
|
|
|
'Swar-5' => Readers\Swar5::class,
|
2019-05-28 10:16:34 +02:00
|
|
|
'Pairtwo-6' => Readers\Pairtwo6::class,
|
|
|
|
'Pairtwo-5' => Readers\Pairtwo6::class // File structure identical
|
2019-05-27 13:01:37 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a reader for $type
|
|
|
|
*
|
2019-07-15 13:40:33 +02:00
|
|
|
* Compatible types are Swar-4, Pairtwo-5, Pairtwo-6
|
2019-06-20 14:53:26 +02:00
|
|
|
*
|
2020-11-22 17:13:13 +01:00
|
|
|
* @param string $type
|
|
|
|
*
|
2019-05-27 13:01:37 +02:00
|
|
|
* @return ReaderInterface
|
2019-06-20 14:53:26 +02:00
|
|
|
* @throws LibpairtwoException
|
2019-05-27 13:01:37 +02:00
|
|
|
*/
|
|
|
|
public static function createReader(string $type): ReaderInterface
|
|
|
|
{
|
2020-11-22 17:13:13 +01:00
|
|
|
if (!isset(self::$Readers[ $type ])) {
|
2019-05-27 13:01:37 +02:00
|
|
|
throw new LibpairtwoException("Cannot read type $type");
|
|
|
|
}
|
|
|
|
|
|
|
|
// create reader class
|
2020-11-22 17:13:13 +01:00
|
|
|
$readerClass = self::$Readers[ $type ];
|
2019-05-27 13:01:37 +02:00
|
|
|
|
2020-08-02 21:51:59 +02:00
|
|
|
return new $readerClass();
|
2019-05-27 13:01:37 +02:00
|
|
|
}
|
|
|
|
}
|