Continued:
authorRoland Häder <roland@mxchange.org>
Sat, 18 Feb 2023 20:54:06 +0000 (21:54 +0100)
committerRoland Häder <roland@mxchange.org>
Sat, 18 Feb 2023 20:54:06 +0000 (21:54 +0100)
- checked more parameter
- added more debug messages (stub messages will come)

framework/main/middleware/io/class_FileIoHandler.php

index 9d0a84a9cd2c71a43c2f4f6df4dcde5bd7f40373..1f40fba89926c1204b1d6d5959a9618fb6ac40e0 100644 (file)
@@ -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!');
        }
 
 }