Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
CRAP | |
100.00% |
34 / 34 |
| GenericConfigLoader | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
14 | |
100.00% |
34 / 34 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setConfigFile | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getConfigFile | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| loadAndValidate | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| getGenericGeneratorConfigList | |
100.00% |
1 / 1 |
5 | |
100.00% |
14 / 14 |
|||
| initializeGenericGeneratorConfig | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| <?php | |
| namespace Siesta\Config; | |
| use Siesta\Model\ValidationLogger; | |
| use Siesta\Util\ArrayUtil; | |
| use Siesta\Util\File; | |
| /** | |
| * @author Gregor Müller | |
| */ | |
| class GenericConfigLoader | |
| { | |
| const ERROR_CONFIG_DOES_NOT_EXIST = "Generator Config file '%s' does not exist."; | |
| const ERROR_CONFIG_DOES_NOT_EXIST_CODE = 1; | |
| const ERROR_CONFIG_FILE_IS_EMPTY = "Generator Config file '%s' is invalid or empty"; | |
| const ERROR_CONFIG_FILE_IS_EMPTY_CODE = 2; | |
| const ERROR_CONFIG_FILE_MISSES_GEN = "Generator Config file '%s' has no 'generatorList' array"; | |
| const ERROR_CONFIG_FILE_MISSES_GEN_CODE = 3; | |
| const ERROR_NO_GENERIC_GENERATORS_DEFINED = "Generator Config file '%s' has no generators defined."; | |
| const ERROR_NO_GENERIC_GENERATORS_DEFINED_CODE = 4; | |
| const GENERATOR_LIST = "generatorList"; | |
| /** | |
| * @var null|File | |
| */ | |
| protected $configFile; | |
| public function __construct() | |
| { | |
| } | |
| /** | |
| * @param File $file | |
| */ | |
| public function setConfigFile(File $file) | |
| { | |
| $this->configFile = $file; | |
| } | |
| /** | |
| * @return File | |
| */ | |
| protected function getConfigFile() : File | |
| { | |
| if ($this->configFile === null) { | |
| $this->configFile = new File(__DIR__ . "/siesta.generator.config.json"); | |
| } | |
| return $this->configFile; | |
| } | |
| /** | |
| * @param ValidationLogger $logger | |
| * | |
| * @return GenericGeneratorConfig[] | |
| */ | |
| public function loadAndValidate(ValidationLogger $logger) | |
| { | |
| $genericGeneratorConfigList = $this->getGenericGeneratorConfigList($logger, $this->getConfigFile()); | |
| if ($genericGeneratorConfigList === null) { | |
| return []; | |
| } | |
| $configList = $this->initializeGenericGeneratorConfig($logger, $genericGeneratorConfigList); | |
| if (sizeof($configList) === 0) { | |
| $error = sprintf(self::ERROR_NO_GENERIC_GENERATORS_DEFINED, $this->configFile->getAbsoluteFileName()); | |
| $logger->error($error, self::ERROR_NO_GENERIC_GENERATORS_DEFINED_CODE); | |
| } | |
| return $configList; | |
| } | |
| /** | |
| * @param ValidationLogger $logger | |
| * @param File $file | |
| * | |
| * @return null|string[] | |
| */ | |
| protected function getGenericGeneratorConfigList(ValidationLogger $logger, File $file) | |
| { | |
| if (!$file->exists()) { | |
| $error = sprintf(self::ERROR_CONFIG_DOES_NOT_EXIST, $file->getAbsoluteFileName()); | |
| $logger->error($error, self::ERROR_CONFIG_DOES_NOT_EXIST_CODE); | |
| return null; | |
| } | |
| $configValues = $file->loadAsJSONArray(); | |
| if ($configValues === null) { | |
| $error = sprintf(self::ERROR_CONFIG_FILE_IS_EMPTY, $file->getAbsoluteFileName()); | |
| $logger->error($error, self::ERROR_CONFIG_FILE_IS_EMPTY_CODE); | |
| return null; | |
| } | |
| $genericGeneratorConfigList = ArrayUtil::getFromArray($configValues, self::GENERATOR_LIST); | |
| if ($genericGeneratorConfigList === null || !is_array($genericGeneratorConfigList)) { | |
| $error = sprintf(self::ERROR_CONFIG_FILE_MISSES_GEN, $file->getAbsoluteFileName()); | |
| $logger->error($error, self::ERROR_CONFIG_FILE_MISSES_GEN_CODE); | |
| } | |
| return $genericGeneratorConfigList; | |
| } | |
| /** | |
| * @param ValidationLogger $logger | |
| * @param array $genericGeneratorConfigList | |
| * | |
| * @return GenericGeneratorConfig[] | |
| */ | |
| protected function initializeGenericGeneratorConfig(ValidationLogger $logger, array $genericGeneratorConfigList) : array | |
| { | |
| $genericGeneratorConfig = []; | |
| foreach ($genericGeneratorConfigList as $genericGeneratorConfigValues) { | |
| $genericConfig = new GenericGeneratorConfig($genericGeneratorConfigValues); | |
| $genericConfig->validate($logger); | |
| $genericGeneratorConfig[] = $genericConfig; | |
| } | |
| return $genericGeneratorConfig; | |
| } | |
| } |