]> git.mxchange.org Git - core.git/blobdiff - framework/main/middleware/io/class_FileIoHandler.php
Continued:
[core.git] / framework / main / middleware / io / class_FileIoHandler.php
index 2b0aa9bc65f3beed2da5985de035bd4962f7ea8f..f6c649d0da9eda2a470d3ca4443fe14812739094 100644 (file)
@@ -8,10 +8,12 @@ use Org\Mxchange\CoreFramework\Generic\FrameworkInterface;
 use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException;
 use Org\Mxchange\CoreFramework\Handler\Stream\IoHandler;
 use Org\Mxchange\CoreFramework\Middleware\BaseMiddleware;
+use Org\Mxchange\CoreFramework\Middleware\Debug\DebugMiddleware;
 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;
 
 /**
@@ -20,7 +22,7 @@ use \SplFileInfo;
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 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.shipsimu.org
  *
@@ -52,30 +54,36 @@ class FileIoHandler extends BaseMiddleware implements IoHandler {
         *
         * @return      void
         */
-       protected function __construct () {
+       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 +92,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,8 +107,9 @@ 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));
-               throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+               // 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 +119,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();
-               } // END - if
+               }
 
-               // Prepare output array
-               $dataArray = array(
+               // 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 +157,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 +168,12 @@ class FileIoHandler extends BaseMiddleware implements IoHandler {
         * @todo        0% done
         */
        public function determineSeekPosition () {
-               $this->partialStub();
+               // Trace message
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!');
+               DebugMiddleware::getSelfInstance()->partialStub();
+
+               // Trace message
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!');
        }
 
        /**
@@ -155,18 +182,36 @@ 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) {
-               $this->partialStub('offset=' . $offset . ',whence=' . $whence);
+               // 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
+               DebugMiddleware::getSelfInstance()->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 () {
-               $this->partialStub();
+               // @TODO: Unfinished method:
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!');
+               DebugMiddleware::getSelfInstance()->partialStub();
+
+               // Trace message
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!');
        }
 
        /**
@@ -176,7 +221,12 @@ class FileIoHandler extends BaseMiddleware implements IoHandler {
         * @todo        0% done
         */
        public function getPosition () {
-               $this->partialStub();
+               // @TODO: Unfinished method:
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: CALLED!');
+               DebugMiddleware::getSelfInstance()->partialStub();
+
+               // Trace message
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('FILE-IO-HANDLER: EXIT!');
        }
 
 }