X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Foutput%2Fraw%2Fclass_FrameworkRawFileOutputPointer.php;h=6d2c3a26b4189fd59c0300bad7cf93b91dbd152a;hp=19071401129722930f68b79fea15c0ba849301e6;hb=refs%2Fheads%2Fmaster;hpb=f57dd51863ec9baacba447d76b46d5c709b9b02e diff --git a/framework/main/classes/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php b/framework/main/classes/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php index 19071401..6d2c3a26 100644 --- a/framework/main/classes/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php +++ b/framework/main/classes/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php @@ -3,20 +3,23 @@ namespace Org\Mxchange\CoreFramework\Filesystem\Pointer\Output; // Import framework stuff -use Org\Mxchange\CoreFramework\FileSystem\BaseFileIo; +use Org\Mxchange\CoreFramework\Filesystem\BaseFileIo; +use Org\Mxchange\CoreFramework\Filesystem\FileIoException; use Org\Mxchange\CoreFramework\Filesystem\Pointer\OutputPointer; +use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; use Org\Mxchange\CoreFramework\Generic\NullPointerException; // Import SPL stuff use \InvalidArgumentException; use \SplFileInfo; +use \SplFileObject; /** * A class for writing files * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2019 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 * @@ -39,7 +42,7 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * * @return void */ - protected function __construct () { + private function __construct () { // Call parent constructor parent::__construct(__CLASS__); } @@ -48,33 +51,41 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * Create a file pointer based on the given file. The file will also * be verified here. * - * @param $infoInstance An instance of a SplFileInfo class + * @param $fileInstance An instance of a SplFileInfo class * @param $mode The output mode ('w', 'a' are valid) + * @return void * @throws InvalidArgumentException If parameter mode is empty * @throws FileIoException If fopen() returns not a file resource - * @return void */ - public static final function createFrameworkRawFileOutputPointer (SplFileInfo $infoInstance, $mode) { - // Some pre-sanity checks... - if (is_null($mode)) { - // No infoInstance given - throw new InvalidArgumentException('Parameter "mode" is empty'); - } // END - if + public static final function createFrameworkRawFileOutputPointer (SplFileInfo $fileInstance, string $mode) { + // Is the parameter valid? + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('RAW-FILE-OUTPUT-POINTER: fileInstance=%s,mode=%s - CALLED!', $fileInstance->__toString(), $mode)); + if (empty($mode)) { + // No fileInstance given + throw new InvalidArgumentException('Parameter "mode" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } // Try to open a handler - $fileObject = $infoInstance->openFile($mode); - if ((is_null($fileObject)) || ($fileObject === false)) { + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('RAW-FILE-OUTPUT-POINTER: Invoking fileInstance->openFile(%s) ...', $mode)); + $fileObject = $fileInstance->openFile($mode); + + // Is it valid? + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-OUTPUT-POINTER: fileObject[]=%s', gettype($fileObject))); + if (!($fileObject instanceof SplFileObject)) { // Something bad happend - throw new FileIoException($infoInstance, self::EXCEPTION_FILE_POINTER_INVALID); - } // END - if + throw new FileIoException($fileInstance, self::EXCEPTION_FILE_POINTER_INVALID); + } // Create new instance + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('RAW-FILE-OUTPUT-POINTER: Creating pointer instance ...'); $pointerInstance = new FrameworkRawFileOutputPointer(); // Set file pointer and file name + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-OUTPUT-POINTER: pointerInstance=%s,fileObject=%s', $pointerInstance->__toString(), get_class($fileObject))); $pointerInstance->setFileObject($fileObject); // Return the instance + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('RAW-FILE-OUTPUT-POINTER: pointerInstance=%s - EXIT!', $pointerInstance->__toString())); return $pointerInstance; } @@ -83,19 +94,26 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * * @param $dataStream The data stream we shall write to the file * @return mixed Number of writes bytes or false on error + * @throws InvalidArgumentException If a parameter is invalid * @throws NullPointerException If the file pointer instance is not set by setFileObject() * @throws LogicException If there is no object being set */ - public function writeToFile ($dataStream) { - if (is_null($this->getFileObject())) { + public function writeToFile (string $dataStream) { + // Validate parameter and class own attributes + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('RAW-FILE-OUTPUT-POINTER: dataStream(%d)=%s (trimmed) - CALLED!', strlen($dataStream), trim($dataStream))); + if (empty($dataStream)) { + // Empty data stream + throw new InvalidArgumentException('Parameter "dataStream" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } elseif (is_null($this->getFileObject())) { // Pointer not initialized - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + throw new NullPointerException($this, FrameworkInterface::EXCEPTION_IS_NULL_POINTER); } elseif (!is_object($this->getFileObject())) { // Pointer is not a valid resource! - throw new LogicException(sprintf('this->fileObject[]=%s is no object', gettype($this->getFileObject()))); + throw new LogicException(sprintf('this->fileObject[]=%s is no object', gettype($this->getFileObject())), FrameworkInterface::EXCEPTION_LOGIC_EXCEPTION); } // Write data to the file pointer and return written bytes + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('RAW-FILE-OUTPUT-POINTER: Invoking this->fileObject->fwrite(dataStream()=%d - EXIT!', strlen($dataStream))); return $this->getFileObject()->fwrite($dataStream); } @@ -107,8 +125,8 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * @return void * @throws UnsupportedOperationException If this method is called */ - public function analyzeFile () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + public function analyzeFileStructure () { + throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -119,8 +137,8 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * @return mixed Number of writes bytes or false on error * @throws UnsupportedOperationException If this method is called */ - public function writeAtPosition ($seedPosition, $data) { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + public function writeAtPosition (int $seedPosition, string $data) { + throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -130,7 +148,7 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * @throws UnsupportedOperationException If this method is called */ public function next () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -141,7 +159,7 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * @throws UnsupportedOperationException If this method is called */ public function valid () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -151,7 +169,7 @@ class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer * @throws UnsupportedOperationException If this method is called */ public function key () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION); } }