Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
57.14% |
4 / 7 |
CRAP | |
72.22% |
13 / 18 |
| SequencerFactory | |
0.00% |
0 / 1 |
|
57.14% |
4 / 7 |
10.74 | |
72.22% |
13 / 18 |
| getInstance | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| nextSequence | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| registerSequencer | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| addSequencer | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getSequencer | |
0.00% |
0 / 1 |
2.06 | |
75.00% |
3 / 4 |
|||
| getNextSequence | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| declare(strict_types = 1); | |
| namespace Siesta\Sequencer; | |
| use Siesta\Util\ArrayUtil; | |
| class SequencerFactory | |
| { | |
| const ERROR_SEQUENCER_NOT_REGISTERED = "Sequencer '%s' is not registered."; | |
| /** | |
| * @var SequencerFactory | |
| */ | |
| private static $instance; | |
| /** | |
| * @return SequencerFactory | |
| */ | |
| public static function getInstance() | |
| { | |
| if (self::$instance === null) { | |
| self::$instance = new SequencerFactory(); | |
| } | |
| return self::$instance; | |
| } | |
| /** | |
| * @param string $sequencerName | |
| * @param string $tableName | |
| * @param string|null $connectionName | |
| * | |
| * @return mixed | |
| */ | |
| public static function nextSequence(string $sequencerName, string $tableName, string $connectionName = null) | |
| { | |
| return self::getInstance()->getNextSequence($sequencerName, $tableName, $connectionName); | |
| } | |
| /** | |
| * @param string $name | |
| * @param Sequencer $sequencer | |
| */ | |
| public static function registerSequencer(string $name, Sequencer $sequencer) | |
| { | |
| self::getInstance()->addSequencer($name, $sequencer); | |
| } | |
| /** | |
| * @var Sequencer[] | |
| */ | |
| protected $sequencerList; | |
| /** | |
| * SequenceFactory constructor. | |
| */ | |
| protected function __construct() | |
| { | |
| $this->sequencerList = []; | |
| $this->sequencerList[UUIDSequencer::NAME] = new UUIDSequencer(); | |
| $this->sequencerList[AutoincrementSequencer::NAME] = new AutoincrementSequencer(); | |
| } | |
| /** | |
| * @param string $name | |
| * @param Sequencer $sequencer | |
| */ | |
| public function addSequencer(string $name, Sequencer $sequencer) | |
| { | |
| $this->sequencerList[$name] = $sequencer; | |
| } | |
| /** | |
| * @param string $sequencerName | |
| * | |
| * @return null|Sequencer | |
| */ | |
| protected function getSequencer(string $sequencerName) : Sequencer | |
| { | |
| $sequencer = ArrayUtil::getFromArray($this->sequencerList, $sequencerName); | |
| if ($sequencer === null) { | |
| throw new \RuntimeException(sprintf(self::ERROR_SEQUENCER_NOT_REGISTERED, $sequencerName)); | |
| } | |
| return $sequencer; | |
| } | |
| /** | |
| * @param string $sequencerName | |
| * @param string $tableName | |
| * @param string|null $connectionName | |
| * | |
| * @return mixed | |
| */ | |
| public function getNextSequence(string $sequencerName, string $tableName, string $connectionName = null) | |
| { | |
| $sequencer = $this->getSequencer($sequencerName); | |
| return $sequencer->getNextSequence($tableName, $connectionName); | |
| } | |
| } |