From d486e92d5d45e5c82c2dc226e0539dae5ca59f6e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 18 Feb 2023 21:54:06 +0100 Subject: [PATCH] Continued: - checked more parameter - added more debug messages (stub messages will come) --- .../middleware/io/class_FileIoHandler.php | 75 ++++++++++++++++--- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/framework/main/middleware/io/class_FileIoHandler.php b/framework/main/middleware/io/class_FileIoHandler.php index 9d0a84a9..1f40fba8 100644 --- a/framework/main/middleware/io/class_FileIoHandler.php +++ b/framework/main/middleware/io/class_FileIoHandler.php @@ -12,6 +12,7 @@ use Org\Mxchange\CoreFramework\Traits\Streamer\File\Input\FileInputStreamerTrait use Org\Mxchange\CoreFramework\Traits\Streamer\File\Output\FileOutputStreamerTrait; // Import SPL stuff +use \InvalidArgumentException; use \SplFileInfo; /** @@ -54,28 +55,34 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { */ private function __construct () { // Call parent constructor + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CONSTRUCTED!'); parent::__construct(__CLASS__); // Set own instance self::$selfInstance = $this; + + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } /** * Creates an instance of this class and prepares the IO system. This is * being done by setting the default file IO class * - * @return $ioInstance A prepared instance of FilIOHandler + * @return $ioHandlerInstance A prepared instance of FilIoHandler */ public static final function createFileIoHandler () { // Get instance - $ioHandler = new FileIoHandler(); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!'); + $ioHandlerInstance = new FileIoHandler(); // Set the *real* file IO instances (both the same) - $ioHandler->setInputStreamerInstance(ObjectFactory::createObjectByConfiguredName('file_input_class')); - $ioHandler->setOutputStreamerInstance(ObjectFactory::createObjectByConfiguredName('file_output_class')); + $ioHandlerInstance->setInputStreamerInstance(ObjectFactory::createObjectByConfiguredName('file_input_class')); + $ioHandlerInstance->setOutputStreamerInstance(ObjectFactory::createObjectByConfiguredName('file_output_class')); // Return instance - return $ioHandler; + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: ioHandlerInstance=%s - EXIT!', $ioHandlerInstance->__toString())); + return $ioHandlerInstance; } /** @@ -84,6 +91,8 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @return $selfInstance An instance of this class */ public static final function getSelfInstance () { + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: Returning self::selfInstance[]=%s - EXIT!', gettype(self::$selfInstance))); return self::$selfInstance; } @@ -97,7 +106,8 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @throws UnsupportedOperationException If this method is called */ public function saveFile (SplFileInfo $infoInstance, array $dataArray) { - self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('infoInstance.pathname=' . $infoInstance->getPathname() . ',dataArray()=' . count($dataArray)); + // Trace message for logging parameters + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: infoInstance.pathname=%s,dataArray()=%d - CALLED!', $infoInstance->getPathname(), count($dataArray))); throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } @@ -108,25 +118,35 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @param $dataStream File data stream * @param $objectInstance An instance of a FrameworkInterface class (default: NULL) * @return void + * @throws InvalidArgumentException If a parameter has an invalid value */ public function saveStreamToFile (SplFileInfo $infoInstance, string $dataStream, FrameworkInterface $objectInstance = NULL) { + // Check parameters + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: infoInstance=%s,dataStream()=%d,objectInstance[]=%s - CALLED!', $infoInstance->__toString(), strlen($dataStream), gettype($objectInstance))); + if (empty($dataStream)) { + // Throw IAE + throw new InvalidArgumentException('Parameter "dataStream" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } + // Default is this array $className = $this->__toString(); // Is the object instance set? + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('FILE-IO-HANDLER: className=%s - BEFORE!', $className)); if ($objectInstance instanceof FrameworkInterface) { // Then use this $className = $objectInstance->__toString(); } - // Prepare output array - $dataArray = [ + // Send the infoInstance and data array to the output handler + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('FILE-IO-HANDLER: className=%s - AFTER!', $className)); + $this->getOutputStreamerInstance()->saveFile($infoInstance, [ 0 => $className, 1 => $dataStream - ]; + ]); - // Send the infoInstance and dataArray to the output handler - $this->getOutputStreamerInstance()->saveFile($infoInstance, $dataArray); + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } /** Loads data from a file over the input handler @@ -136,6 +156,7 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { */ public function loadFileContents (SplFileInfo $infoInstance) { // Read from the input handler + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: infoInstance=%s - CALLED!', $infoInstance->__toString())); return $this->getInputStreamerInstance()->loadFileContents($infoInstance); } @@ -146,7 +167,12 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @todo 0% done */ public function determineSeekPosition () { + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!'); $this->partialStub(); + + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } /** @@ -155,18 +181,38 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @param $offset Offset to seek to (or used as "base" for other seeks) * @param $whence Added to offset (default: only use offset to seek to) * @return void + * @throws InvalidArgumentException If a parameter has an invalid value */ public function seek (int $offset, int $whence = SEEK_SET) { + // Check parameter + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-IO-HANDLER: offset=%d,whence=%d - CALLED!', $offset, $whence)); + if ($offset < 0) { + // Throw IAE + throw new InvalidArgumentException('Parameter "offset" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } + + // @TODO Unfinished work $this->partialStub('offset=' . $offset . ',whence=' . $whence); + + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } /** * Size of file stack * * @return $size Size (in bytes) of file + * @todo 0% done */ public function size () { + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!'); + + // @TODO: Unfinished method: $this->partialStub(); + + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } /** @@ -176,7 +222,14 @@ class FileIoHandler extends BaseMiddleware implements IoHandler { * @todo 0% done */ public function getPosition () { + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!'); + + // @TODO: Unfinished method: $this->partialStub(); + + // Trace message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!'); } } -- 2.39.5