X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffactories%2Fstacks%2Fclass_FileStackFactory.php;h=99600730f6ef40da6985ccb4afc8beb2a89c6d65;hp=637b8ceed290557da99aae5ab81504abce9a4c7c;hb=HEAD;hpb=4f9cf34b521892cb99fae9b21b92787f3d555b74 diff --git a/framework/main/classes/factories/stacks/class_FileStackFactory.php b/framework/main/classes/factories/stacks/class_FileStackFactory.php index 637b8cee..32d6326f 100644 --- a/framework/main/classes/factories/stacks/class_FileStackFactory.php +++ b/framework/main/classes/factories/stacks/class_FileStackFactory.php @@ -4,15 +4,21 @@ namespace Org\Mxchange\CoreFramework\Factory\Stack; // Import framework stuff use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap; -use Org\Mxchange\CoreFramework\Factory\ObjectFactory; -use Org\Mxchange\CoreFramework\Registry\Registry; +use Org\Mxchange\CoreFramework\Factory\BaseFactory; +use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory; +use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; +use Org\Mxchange\CoreFramework\Registry\Object\ObjectRegistry; + +// Import SPL stuff +use \InvalidArgumentException; +use \SplFileInfo; /** * A factory class for file-based stacks * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2023 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -29,13 +35,13 @@ use Org\Mxchange\CoreFramework\Registry\Registry; * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class FileStackFactory extends ObjectFactory { +class FileStackFactory extends BaseFactory { /** * Protected constructor * * @return void */ - protected function __construct () { + private function __construct () { // Call parent constructor parent::__construct(__CLASS__); } @@ -47,28 +53,39 @@ class FileStackFactory extends ObjectFactory { * @param $stackName Name of the stack * @return $stackInstance An instance of a StackableFile class */ - public static final function createFileStackInstance ($prefix, $stackName) { + public static final function createFileStackInstance (string $prefix, string $stackName) { + // Validate parameter + //* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('FILE-STACK-FACTORY: prefix=%s,stackName=%s - CALLED!', $prefix, $stackName)); + if (empty($prefix)) { + // Throw IAE + throw new InvalidArgumentException('Parameter "prefix" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } elseif (empty($stackName)) { + // Throw it again + throw new InvalidArgumentException('Paramter "stackName" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } + // Construct file stack name - $stackFileName = sprintf('%s%s/%s.%s', - FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('framework_base_path'), + $fileInfoInstance = new SplFileInfo(sprintf('%s%s/%s.%s', + FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('root_base_path'), FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('base_file_stacks_path'), $stackName, FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('file_stacks_extension') - ); + )); // If there is no handler? - if (Registry::getRegistry()->instanceExists($stackName . '_stack')) { + if (ObjectRegistry::getRegistry('factory')->instanceExists($stackName . '_stack')) { // Get handler from registry - $stackInstance = Registry::getRegistry()->getInstance($stackName . '_stack'); + $stackInstance = ObjectRegistry::getRegistry('factory')->getInstance($stackName . '_stack'); } else { // Get the handler instance - $stackInstance = self::createObjectByConfiguredName($prefix . '_' . $stackName . '_stack_class', array($stackFileName, $prefix . '_' . $stackName)); + $stackInstance = ObjectFactory::createObjectByConfiguredName($prefix . '_' . $stackName . '_stack_class', array($fileInfoInstance, $prefix . '_' . $stackName)); // Add it to the registry - Registry::getRegistry()->addInstance($stackName . '_stack', $stackInstance); + ObjectRegistry::getRegistry('factory')->addInstance($stackName . '_stack', $stackInstance); } // Return the instance + //* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('FILE-STACK-FACTORY: stackInstance=%s - EXIT!', $stackInstance->__toString())); return $stackInstance; }