]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/file_directories/io_stream/class_FileIoStream.php
Continued:
[core.git] / framework / main / classes / file_directories / io_stream / class_FileIoStream.php
index 51406cbea3bafa2399c0d2131dae505caba3aa9e..551791f3b33f321a4d39753d93ae3e825012988b 100644 (file)
@@ -1,22 +1,25 @@
 <?php
 // Own namespace
-namespace CoreFramework\Stream\Filesystem;
+namespace Org\Mxchange\CoreFramework\Stream\Filesystem;
 
 // Import framework stuff
-use CoreFramework\EntryPoint\ApplicationEntryPoint;
-use CoreFramework\Factory\ObjectFactory;
-use CoreFramework\Filesystem\FileNotFoundException;
-use CoreFramework\Generic\UnsupportedOperationException;
-use CoreFramework\Object\BaseFrameworkSystem;
-use CoreFramework\Stream\Filesystem\FileInputStreamer;
-use CoreFramework\Stream\Filesystem\FileOutputStreamer;
+use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint;
+use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
+use Org\Mxchange\CoreFramework\Filesystem\FileNotFoundException;
+use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException;
+use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
+use Org\Mxchange\CoreFramework\Stream\Filesystem\FileInputStreamer;
+use Org\Mxchange\CoreFramework\Stream\Filesystem\FileOutputStreamer;
+
+// Import SPL stuff
+use \SplFileInfo;
 
 /**
  * An universal class for file input/output streams.
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.shipsimu.org
  *
@@ -57,7 +60,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
        /**
         * Protected constructor
         */
-       protected function __construct () {
+       private function __construct () {
                // Call parent constructor
                parent::__construct(__CLASS__);
        }
@@ -79,13 +82,13 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
        /**
         * Saves data to a given local file and create missing directory structures
         *
-        * @param       $fileName       The file name for the to be saved file
+        * @param       $fileInfoInstance       An instance of a SplFileInfo class
         * @param       $dataArray      The data we shall store to the file
         * @return      void
         * @see         FileOutputStreamer
         * @todo        This method needs heavy rewrite
         */
-       public final function saveFile ($fileName, array $dataArray) {
+       public final function saveFile (SplFileInfo $fileInfoInstance, array $dataArray) {
                // Try it five times
                $dirName = '';
                $fileInstance = NULL;
@@ -93,12 +96,12 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                for ($idx = 0; $idx < 5; $idx++) {
                        // Get a file output pointer
                        try {
-                               $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_output_class', array($fileName, 'wb'));
+                               $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_output_class', array($fileInfoInstance, 'wb'));
                        } catch (FileNotFoundException $e) {
                                // Bail out
                                ApplicationEntryPoint::exitApplication('The application has made a fatal error. Exception: ' . $e->__toString() . ' with message: ' . $e->getMessage());
                        }
-               } // END - for
+               }
 
                // Write a header information for validation purposes
                $fileInstance->writeToFile(sprintf('%s%s%s%s%s%s%s%s%s' . PHP_EOL,
@@ -133,7 +136,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
 
                        // Advance to the next 50-chars block
                        $idx += 50;
-               } // END - while
+               }
 
                // Close the file
                unset($fileInstance);
@@ -142,20 +145,20 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
        /**
         * Reads from a local file
         *
-        * @param       $fqfn   The full-qualified file-name which we shall load
+        * @param       $infoInstance   An instance of a SplFileInfo class
         * @return      $array  An array with the element 'header' and 'data'
         * @see         FileInputStreamer
         */
-       public final function loadFileContents ($fqfn) {
+       public final function loadFileContents (SplFileInfo $infoInstance) {
                // Initialize some variables and arrays
                $inputBuffer = '';
                $lastBuffer = '';
-               $header = array();
-               $data = array();
+               $header = [];
+               $data = [];
                $readData = ''; // This will contain our read data
 
                // Get a file input handler
-               $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_input_class', array($fqfn));
+               $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_input_class', array($infoInstance));
 
                // Read all it's contents (we very and transparently decompress it below)
                while ($readRawLine = $fileInstance->readFromFile()) {
@@ -165,11 +168,11 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                        // Break infinite loop maybe caused by the input handler
                        if ($lastBuffer == $inputBuffer) {
                                break;
-                       } // END - if
+                       }
 
                        // Remember last read line for avoiding possible infinite loops
                        $lastBuffer = $inputBuffer;
-               } // END - while
+               }
 
                // Close directory handle
                unset($fileInstance);
@@ -195,7 +198,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                                if (count($header) != 4) {
                                        // Throw an exception
                                        throw new InvalidArrayCountException(array($this, 'header', count($header), 4), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT);
-                               } // END - if
+                               }
                        } elseif (substr($rawLine, 0, 5) == self::FILE_IO_DATA_BLOCK_ID) {
                                // Is a data line!
                                $data = explode(self::FILE_IO_SEPARATOR, $rawLine);
@@ -209,7 +212,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                                        if (md5($data[0]) != $data[1]) {
                                                // MD5 hash did not match!
                                                throw new InvalidMD5ChecksumException(array($this, md5($data[0]), $data[1]), self::EXCEPTION_MD5_CHECKSUMS_MISMATCH);
-                                       } // END - if
+                                       }
                                } else {
                                        // Invalid count!
                                        throw new InvalidArrayCountException(array($this, 'data', count($data), 2), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT);
@@ -221,19 +224,19 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                                // Other raw lines than header/data tagged lines and re-add the new-line char
                                $readData .= $rawLine . PHP_EOL;
                        }
-               } // END - foreach
+               }
 
                // Was raw lines read and no header/data?
                if ((!empty($readData)) && (count($header) == 0) && (count($data) == 0)) {
                        // Return raw lines back
                        return $readData;
-               } // END - if
+               }
 
                // Was a header found?
                if (count($header) != 4) {
                        // Throw an exception
                        throw new InvalidArrayCountException(array($this, 'header', count($header), 4), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT);
-               } // END - if
+               }
 
                // Decode all from Base64
                $readData = @base64_decode($readData);
@@ -242,13 +245,13 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
                if (strlen($readData) != $header[2]) {
                        // Size did not match
                        throw new InvalidDataLengthException(array($this, strlen($readData), $header[2]), self::EXCEPTION_UNEXPECTED_STRING_SIZE);
-               } // END - if
+               }
 
                // Validate the decoded data with the final MD5 hash
                if (md5($readData) != $header[3]) {
                        // MD5 hash did not match!
                        throw new InvalidMD5ChecksumException(array($this, md5($readData), $header[3]), self::EXCEPTION_MD5_CHECKSUMS_MISMATCH);
-               } // END - if
+               }
 
                // Return all in an array
                return array(
@@ -264,7 +267,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
         * @return      $data   The data (string mostly) to "stream"
         * @throws      UnsupportedOperationException   If this method is called
         */
-       public function streamData ($data) {
+       public function streamData (string $data) {
                self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('Unhandled ' . strlen($data) . ' bytes in this stream.');
                throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
        }
@@ -286,7 +289,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil
         * @param       $whence         Added to offset (default: only use offset to seek to)
         * @return      $status         Status of file seek: 0 = success, -1 = failed
         */
-       public function seek ($offset, $whence = SEEK_SET) {
+       public function seek (int $offset, int $whence = SEEK_SET) {
                $this->partialStub('offset=' . $offset . ',whence=' . $whence);
        }