X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Finput%2Ftext%2Fclass_FrameworkTextFileInputPointer.php;h=1998583754986df452db1fc08f17bda967e49c0d;hb=5c9360c9139b761d2b09351930c1e843d33af240;hp=734042760cbd5ba6ee3e19f60795de32f1891f76;hpb=f57dd51863ec9baacba447d76b46d5c709b9b02e;p=core.git diff --git a/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php b/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php index 73404276..19985837 100644 --- a/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php +++ b/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php @@ -4,23 +4,26 @@ namespace Org\Mxchange\CoreFramework\Filesystem\Pointer\Input; // Import framework stuff use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap; -use Org\Mxchange\CoreFramework\FileSystem\BaseFileIo; +use Org\Mxchange\CoreFramework\Filesystem\BaseFileIo; +use Org\Mxchange\CoreFramework\Filesystem\FileIoException; use Org\Mxchange\CoreFramework\Filesystem\FileNotFoundException; -use Org\Mxchange\CoreFramework\FileSystem\FileReadProtectedException; +use Org\Mxchange\CoreFramework\Filesystem\FileReadProtectedException; use Org\Mxchange\CoreFramework\Filesystem\Pointer\InputPointer; +use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; use Org\Mxchange\CoreFramework\Generic\NullPointerException; use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException; use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem; // Import SPL stuff use \SplFileInfo; +use \SplFileObject; /** * A class for reading text 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 - 2022 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -43,7 +46,7 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * * @return void */ - protected function __construct () { + private function __construct () { // Call parent constructor parent::__construct(__CLASS__); } @@ -57,30 +60,29 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * @throws FileReadProtectedException If the file cannot be read from * @return void */ - public static final function createFrameworkTextFileInputPointer (SplFileInfo $infoInstance) { + public static final function createFrameworkTextFileInputPointer (SplFileInfo $fileInstance) { // Check parameter - if (!FrameworkBootstrap::isReachableFilePath($infoInstance)) { + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-INPUT-POINTER: fileInstance[%s]=%s - CALLED!', get_class($fileInstance), $fileInstance->__toString())); + if (!FrameworkBootstrap::isReachableFilePath($fileInstance)) { // File cannot be reached - throw new FileIoException($infoInstance, self::EXCEPTION_FILE_NOT_REACHABLE); - } elseif ((!FrameworkBootstrap::isReadableFile($infoInstance)) && (!$infoInstance->isFile())) { + throw new FileIoException($fileInstance, self::EXCEPTION_FILE_NOT_REACHABLE); + } elseif ((!FrameworkBootstrap::isReadableFile($fileInstance)) && (!$fileInstance->isFile())) { // File does not exist! - throw new FileNotFoundException($infoInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); - } elseif ((!FrameworkBootstrap::isReadableFile($infoInstance)) && ($infoInstance->isFile())) { + throw new FileNotFoundException($fileInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); + } elseif ((!FrameworkBootstrap::isReadableFile($fileInstance)) && ($fileInstance->isFile())) { // File cannot be read from (but exists) - throw new FileReadProtectedException($infoInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); + throw new FileReadProtectedException($fileInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); } // Try to open a handler - $fileObject = $infoInstance->openFile('r'); - - // Debug message - /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TEXT-FILE-INPUT: fileObject[]=' . gettype($fileObject)); + $fileObject = $fileInstance->openFile('r'); // Is it valid? - if ((is_null($fileObject)) || ($fileObject === false)) { + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TEXT-FILE-INPUT-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 $pointerInstance = new FrameworkTextFileInputPointer(); @@ -89,6 +91,7 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { $pointerInstance->setFileObject($fileObject); // Return the instance + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TEXT-FILE-INPUT-POINTER: pointerInstance=%s - EXIT!', $pointerInstance->__toString())); return $pointerInstance; } @@ -117,21 +120,25 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * * @param $bytes Amount of bytes to read or whole line (only text files) * @return $data Data read from file + * @throws OutOfBoundsException If the position is not seekable * @throws NullPointerException If the file pointer instance is not set by setFileObject() - * @throws InvalidResourceException If there is no object being set + * @throws LogicException If $fileObject is not an object */ - public function read ($bytes = NULL) { + public function read (int $bytes = 0) { // Some sanity checks - if (is_null($this->getFileObject())) { + if ($bytes < 0) { + // Cannot be below zero + throw new OutOfBoundsException(sprintf('bytes=%d is not valid', $bytes)); + } elseif (is_null($this->getFileObject())) { // Pointer not initialized throw new NullPointerException($this, self::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); } // Is $bytes set? - if (is_int($bytes)) { + if ($bytes > 0) { // Try to read given characters $data = $this->getFileObject()->fread($bytes); } else { @@ -151,8 +158,8 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * @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__], self::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -162,7 +169,7 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * @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__], self::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -173,7 +180,7 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * @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__], self::EXCEPTION_UNSPPORTED_OPERATION); } /** @@ -183,7 +190,7 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * @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__], self::EXCEPTION_UNSPPORTED_OPERATION); } }