From: Roland Haeder Date: Sat, 10 Jan 2015 21:49:15 +0000 (+0100) Subject: Added new classes + moved some in sub folders: X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=c77663981dbaefb7d8ff039967509aa1204ee556 Added new classes + moved some in sub folders: - Added input and output classes (duplicated + correct functions used) for text files + added iniFile() in corresponding "base" classes - Moved "raw" input/output classes to sub folders to allow separation, still there may be a "base" class missing for both of them Signed-off-by: Roland Häder --- diff --git a/inc/classes/main/file_directories/input/class_FrameworkFileInputPointer.php b/inc/classes/main/file_directories/input/class_FrameworkFileInputPointer.php deleted file mode 100644 index 982a07cb..00000000 --- a/inc/classes/main/file_directories/input/class_FrameworkFileInputPointer.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.shipsimu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class FrameworkFileInputPointer extends BaseFileIo implements InputPointer { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Create a file pointer based on the given file. The file will also - * be verified here. - * - * @param $fileName The file name we shall pass to fopen() - * @throws FileIsEmptyException If the provided file name is empty. - * @throws FileIoException If fopen() returns not a file resource - * @return void - */ - public static final function createFrameworkFileInputPointer ($fileName) { - // Some pre-sanity checks... - if ((is_null($fileName)) || (empty($fileName))) { - // No filename given - throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!file_exists($fileName)) { - // File does not exist! - throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_FOUND); - } elseif (!is_readable($fileName)) { - // File does not exist! - throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); - } - - // Try to open a handler - $filePointer = fopen($fileName, 'rb'); - if ((is_null($filePointer)) || ($filePointer === FALSE)) { - // Something bad happend - throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); - } // END - if - - // Create new instance - $pointerInstance = new FrameworkFileInputPointer(); - - // Set file pointer and file name - $pointerInstance->setPointer($filePointer); - $pointerInstance->setFileName($fileName); - - // Return the instance - return $pointerInstance; - } - - /** - * Read data a file pointer - * - * @return mixed The result of fread() - * @throws NullPointerException If the file pointer instance - * is not set by setPointer() - * @throws InvalidResourceException If there is being set - */ - public function readFromFile () { - if (is_null($this->getPointer())) { - // Pointer not initialized - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } elseif (!is_resource($this->getPointer())) { - // Pointer is not a valid resource! - throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); - } - - // Read data from the file pointer and return it - return $this->read(1024); - } - - /** - * Reads given amount of bytes from file. - * - * @param $bytes Amount of bytes to read - * @return $data Data read from file - */ - public function read ($bytes) { - // Try to read given characters - $data = fread($this->getPointer(), $bytes); - - // Was this successfull? - assert(is_string($data)); - - // Then return it - return $data; - } - - /** - * Analyzes entries in index file. This will count all found (and valid) - * entries, mark invalid as damaged and count gaps ("fragmentation"). If - * only gaps are found, the file is considered as "virgin" (no entries). - * - * @return void - * @throws UnsupportedOperationException If this method is called - */ - public function analyzeFile () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Advances to next "block" of bytes - * - * @return void - * @throws UnsupportedOperationException If this method is called - */ - public function next () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Checks wether the current entry is valid (not at the end of the file). - * This method will return TRUE if an emptied (nulled) entry has been found. - * - * @return $isValid Whether the next entry is valid - * @throws UnsupportedOperationException If this method is called - */ - public function valid () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Gets current seek position ("key"). - * - * @return $key Current key in iteration - * @throws UnsupportedOperationException If this method is called - */ - public function key () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } -} - -// [EOF] -?> diff --git a/inc/classes/main/file_directories/input/raw/.htaccess b/inc/classes/main/file_directories/input/raw/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/file_directories/input/raw/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/file_directories/input/raw/class_FrameworkRawFileInputPointer.php b/inc/classes/main/file_directories/input/raw/class_FrameworkRawFileInputPointer.php new file mode 100644 index 00000000..8c4f6529 --- /dev/null +++ b/inc/classes/main/file_directories/input/raw/class_FrameworkRawFileInputPointer.php @@ -0,0 +1,158 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Create a file pointer based on the given file. The file will also + * be verified here. + * + * @param $fileName The file name we shall pass to fopen() + * @throws FileIsEmptyException If the provided file name is empty. + * @throws FileIoException If fopen() returns not a file resource + * @return void + */ + public static final function createFrameworkRawFileInputPointer ($fileName) { + // Some pre-sanity checks... + if ((is_null($fileName)) || (empty($fileName))) { + // No filename given + throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!file_exists($fileName)) { + // File does not exist! + throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_FOUND); + } elseif (!is_readable($fileName)) { + // File does not exist! + throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + } + + // Try to open a handler + $filePointer = fopen($fileName, 'rb'); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { + // Something bad happend + throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + } // END - if + + // Create new instance + $pointerInstance = new FrameworkRawFileInputPointer(); + + // Set file pointer and file name + $pointerInstance->setPointer($filePointer); + $pointerInstance->setFileName($fileName); + + // Return the instance + return $pointerInstance; + } + + /** + * Read data a file pointer + * + * @return mixed The result of fread() + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + */ + public function readFromFile () { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Read data from the file pointer and return it + return $this->read(1024); + } + + /** + * Reads given amount of bytes from file. + * + * @param $bytes Amount of bytes to read + * @return $data Data read from file + */ + public function read ($bytes) { + // Try to read given characters + $data = fread($this->getPointer(), $bytes); + + // Was this successfull? + assert(is_string($data)); + + // Then return it + return $data; + } + + /** + * Analyzes entries in index file. This will count all found (and valid) + * entries, mark invalid as damaged and count gaps ("fragmentation"). If + * only gaps are found, the file is considered as "virgin" (no entries). + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function analyzeFile () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Advances to next "block" of bytes + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function next () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Checks wether the current entry is valid (not at the end of the file). + * This method will return TRUE if an emptied (nulled) entry has been found. + * + * @return $isValid Whether the next entry is valid + * @throws UnsupportedOperationException If this method is called + */ + public function valid () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Gets current seek position ("key"). + * + * @return $key Current key in iteration + * @throws UnsupportedOperationException If this method is called + */ + public function key () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/input/text/.htaccess b/inc/classes/main/file_directories/input/text/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/file_directories/input/text/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/file_directories/input/text/class_FrameworkTextFileInputPointer.php b/inc/classes/main/file_directories/input/text/class_FrameworkTextFileInputPointer.php new file mode 100644 index 00000000..6dc36c31 --- /dev/null +++ b/inc/classes/main/file_directories/input/text/class_FrameworkTextFileInputPointer.php @@ -0,0 +1,158 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Create a file pointer based on the given file. The file will also + * be verified here. + * + * @param $fileName The file name we shall pass to fopen() + * @throws FileIsEmptyException If the provided file name is empty. + * @throws FileIoException If fopen() returns not a file resource + * @return void + */ + public static final function createFrameworkTextFileInputPointer ($fileName) { + // Some pre-sanity checks... + if ((is_null($fileName)) || (empty($fileName))) { + // No filename given + throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!file_exists($fileName)) { + // File does not exist! + throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_FOUND); + } elseif (!is_readable($fileName)) { + // File does not exist! + throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + } + + // Try to open a handler + $filePointer = fopen($fileName, 'r'); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { + // Something bad happend + throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + } // END - if + + // Create new instance + $pointerInstance = new FrameworkTextFileInputPointer(); + + // Set file pointer and file name + $pointerInstance->setPointer($filePointer); + $pointerInstance->setFileName($fileName); + + // Return the instance + return $pointerInstance; + } + + /** + * Read data a file pointer + * + * @return mixed The result of fread() + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + */ + public function readFromFile () { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Read data from the file pointer and return it + return $this->read(1024); + } + + /** + * Reads given amount of bytes from file. + * + * @param $bytes Amount of bytes to read + * @return $data Data read from file + */ + public function read ($bytes) { + // Try to read given characters + $data = fgets($this->getPointer(), $bytes); + + // Was this successfull? + assert(is_string($data)); + + // Then return it + return $data; + } + + /** + * Analyzes entries in index file. This will count all found (and valid) + * entries, mark invalid as damaged and count gaps ("fragmentation"). If + * only gaps are found, the file is considered as "virgin" (no entries). + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function analyzeFile () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Advances to next "block" of bytes + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function next () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Checks wether the current entry is valid (not at the end of the file). + * This method will return TRUE if an emptied (nulled) entry has been found. + * + * @return $isValid Whether the next entry is valid + * @throws UnsupportedOperationException If this method is called + */ + public function valid () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Gets current seek position ("key"). + * + * @return $key Current key in iteration + * @throws UnsupportedOperationException If this method is called + */ + public function key () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/output/class_FrameworkFileOutputPointer.php b/inc/classes/main/file_directories/output/class_FrameworkFileOutputPointer.php deleted file mode 100644 index 2d0aa8e1..00000000 --- a/inc/classes/main/file_directories/output/class_FrameworkFileOutputPointer.php +++ /dev/null @@ -1,150 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.shipsimu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class FrameworkFileOutputPointer extends BaseFileIo implements OutputPointer { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Create a file pointer based on the given file. The file will also - * be verified here. - * - * @param $fileName The file name we shall pass to fopen() - * @param $mode The output mode ('w', 'a' are valid) - * @throws FileIsEmptyException If the provided file name is empty. - * @throws FileIoException If fopen() returns not a file resource - * @return void - */ - public static final function createFrameworkFileOutputPointer ($fileName, $mode) { - // Some pre-sanity checks... - if (is_null($fileName)) { - // No filename given - throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } // END - if - - // Try to open a handler - $filePointer = @fopen($fileName, $mode); - if ((is_null($filePointer)) || ($filePointer === FALSE)) { - // Something bad happend - throw new FileIoException ($fileName, self::EXCEPTION_FILE_POINTER_INVALID); - } // END - if - - // Create new instance - $pointerInstance = new FrameworkFileOutputPointer(); - - // Set file pointer and file name - $pointerInstance->setPointer($filePointer); - $pointerInstance->setFileName($fileName); - - // Return the instance - return $pointerInstance; - } - - /** - * Write data to a file pointer - * - * @param $dataStream The data stream we shall write to the file - * @return mixed Number of writes bytes or FALSE on error - * @throws NullPointerException If the file pointer instance - * is not set by setPointer() - * @throws InvalidResourceException If there is being set - * an invalid file resource - */ - public function writeToFile ($dataStream) { - if (is_null($this->getPointer())) { - // Pointer not initialized - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } elseif (!is_resource($this->getPointer())) { - // Pointer is not a valid resource! - throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); - } - - // Write data to the file pointer and return written bytes - return fwrite($this->getPointer(), $dataStream); - } - - /** - * Analyzes entries in index file. This will count all found (and valid) - * entries, mark invalid as damaged and count gaps ("fragmentation"). If - * only gaps are found, the file is considered as "virgin" (no entries). - * - * @return void - * @throws UnsupportedOperationException If this method is called - */ - public function analyzeFile () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Writes at given position by seeking to it. - * - * @param $seekPosition Seek position in file - * @param $data Data to be written - * @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); - } - - /** - * Advances to next "block" of bytes - * - * @return void - * @throws UnsupportedOperationException If this method is called - */ - public function next () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Checks wether the current entry is valid (not at the end of the file). - * This method will return TRUE if an emptied (nulled) entry has been found. - * - * @return $isValid Whether the next entry is valid - * @throws UnsupportedOperationException If this method is called - */ - public function valid () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } - - /** - * Gets current seek position ("key"). - * - * @return $key Current key in iteration - * @throws UnsupportedOperationException If this method is called - */ - public function key () { - throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); - } -} - -// [EOF] -?> diff --git a/inc/classes/main/file_directories/output/raw/.htaccess b/inc/classes/main/file_directories/output/raw/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/file_directories/output/raw/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php b/inc/classes/main/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php new file mode 100644 index 00000000..1ce29eac --- /dev/null +++ b/inc/classes/main/file_directories/output/raw/class_FrameworkRawFileOutputPointer.php @@ -0,0 +1,150 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Create a file pointer based on the given file. The file will also + * be verified here. + * + * @param $fileName The file name we shall pass to fopen() + * @param $mode The output mode ('w', 'a' are valid) + * @throws FileIsEmptyException If the provided file name is empty. + * @throws FileIoException If fopen() returns not a file resource + * @return void + */ + public static final function createFrameworkRawFileOutputPointer ($fileName, $mode) { + // Some pre-sanity checks... + if (is_null($fileName)) { + // No filename given + throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } // END - if + + // Try to open a handler + $filePointer = @fopen($fileName, $mode); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { + // Something bad happend + throw new FileIoException ($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + } // END - if + + // Create new instance + $pointerInstance = new FrameworkRawFileOutputPointer(); + + // Set file pointer and file name + $pointerInstance->setPointer($filePointer); + $pointerInstance->setFileName($fileName); + + // Return the instance + return $pointerInstance; + } + + /** + * Write data to a file pointer + * + * @param $dataStream The data stream we shall write to the file + * @return mixed Number of writes bytes or FALSE on error + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + * an invalid file resource + */ + public function writeToFile ($dataStream) { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Write data to the file pointer and return written bytes + return fwrite($this->getPointer(), $dataStream); + } + + /** + * Analyzes entries in index file. This will count all found (and valid) + * entries, mark invalid as damaged and count gaps ("fragmentation"). If + * only gaps are found, the file is considered as "virgin" (no entries). + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function analyzeFile () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Writes at given position by seeking to it. + * + * @param $seekPosition Seek position in file + * @param $data Data to be written + * @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); + } + + /** + * Advances to next "block" of bytes + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function next () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Checks wether the current entry is valid (not at the end of the file). + * This method will return TRUE if an emptied (nulled) entry has been found. + * + * @return $isValid Whether the next entry is valid + * @throws UnsupportedOperationException If this method is called + */ + public function valid () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Gets current seek position ("key"). + * + * @return $key Current key in iteration + * @throws UnsupportedOperationException If this method is called + */ + public function key () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/output/text/.htaccess b/inc/classes/main/file_directories/output/text/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/file_directories/output/text/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/file_directories/output/text/class_FrameworkTextFileOutputPointer.php b/inc/classes/main/file_directories/output/text/class_FrameworkTextFileOutputPointer.php new file mode 100644 index 00000000..1ce29eac --- /dev/null +++ b/inc/classes/main/file_directories/output/text/class_FrameworkTextFileOutputPointer.php @@ -0,0 +1,150 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class FrameworkRawFileOutputPointer extends BaseFileIo implements OutputPointer { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Create a file pointer based on the given file. The file will also + * be verified here. + * + * @param $fileName The file name we shall pass to fopen() + * @param $mode The output mode ('w', 'a' are valid) + * @throws FileIsEmptyException If the provided file name is empty. + * @throws FileIoException If fopen() returns not a file resource + * @return void + */ + public static final function createFrameworkRawFileOutputPointer ($fileName, $mode) { + // Some pre-sanity checks... + if (is_null($fileName)) { + // No filename given + throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } // END - if + + // Try to open a handler + $filePointer = @fopen($fileName, $mode); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { + // Something bad happend + throw new FileIoException ($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + } // END - if + + // Create new instance + $pointerInstance = new FrameworkRawFileOutputPointer(); + + // Set file pointer and file name + $pointerInstance->setPointer($filePointer); + $pointerInstance->setFileName($fileName); + + // Return the instance + return $pointerInstance; + } + + /** + * Write data to a file pointer + * + * @param $dataStream The data stream we shall write to the file + * @return mixed Number of writes bytes or FALSE on error + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + * an invalid file resource + */ + public function writeToFile ($dataStream) { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Write data to the file pointer and return written bytes + return fwrite($this->getPointer(), $dataStream); + } + + /** + * Analyzes entries in index file. This will count all found (and valid) + * entries, mark invalid as damaged and count gaps ("fragmentation"). If + * only gaps are found, the file is considered as "virgin" (no entries). + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function analyzeFile () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Writes at given position by seeking to it. + * + * @param $seekPosition Seek position in file + * @param $data Data to be written + * @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); + } + + /** + * Advances to next "block" of bytes + * + * @return void + * @throws UnsupportedOperationException If this method is called + */ + public function next () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Checks wether the current entry is valid (not at the end of the file). + * This method will return TRUE if an emptied (nulled) entry has been found. + * + * @return $isValid Whether the next entry is valid + * @throws UnsupportedOperationException If this method is called + */ + public function valid () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } + + /** + * Gets current seek position ("key"). + * + * @return $key Current key in iteration + * @throws UnsupportedOperationException If this method is called + */ + public function key () { + throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/text/csv/.htaccess b/inc/classes/main/file_directories/text/csv/.htaccess deleted file mode 100644 index 3a428827..00000000 --- a/inc/classes/main/file_directories/text/csv/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all diff --git a/inc/classes/main/file_directories/text/csv/class_CsvFile.php b/inc/classes/main/file_directories/text/csv/class_CsvFile.php deleted file mode 100644 index dbe99aa0..00000000 --- a/inc/classes/main/file_directories/text/csv/class_CsvFile.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class CsvFile extends BaseTextFile implements CsvInputStreamer { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Creates an instance of this File class and prepares it for usage - * - * @param $fileName Name of the index file - * @return $fileInstance An instance of this File class - */ - public final static function createCsvFile ($fileName) { - // Get a new instance - $fileInstance = new CsvFile(); - - // Set file name - $fileInstance->setFileName($fileName); - - // Init this abstract file - $fileInstance->initFile($fileName); - - // Return the prepared instance - return $fileInstance; - } -} - -// [EOF] -?> diff --git a/inc/classes/main/file_directories/text/input/class_BaseTextInputFile.php b/inc/classes/main/file_directories/text/input/class_BaseTextInputFile.php new file mode 100644 index 00000000..d5d2d0cb --- /dev/null +++ b/inc/classes/main/file_directories/text/input/class_BaseTextInputFile.php @@ -0,0 +1,52 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class BaseInputTextFile extends BaseTextFile { + /** + * Protected constructor + * + * @param $className Name of the class + * @return void + */ + protected function __construct ($className) { + // Call parent constructor + parent::__construct($className); + } + + /** + * Initializes this text file for reading + * + * @param $fileName File's name + * @return void + */ + protected function initFile ($fileName) { + // Get a file i/o pointer instance + $pointerInstance = ObjectFactory::createObjectByConfiguredName('text_file_input_class', array($fileName)); + + // ... and set it here + $this->setPointerInstance($pointerInstance); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/text/input/csv/.htaccess b/inc/classes/main/file_directories/text/input/csv/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/file_directories/text/input/csv/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/file_directories/text/input/csv/class_CsvInputFile.php b/inc/classes/main/file_directories/text/input/csv/class_CsvInputFile.php new file mode 100644 index 00000000..b6c8d5e6 --- /dev/null +++ b/inc/classes/main/file_directories/text/input/csv/class_CsvInputFile.php @@ -0,0 +1,57 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class CsvInputFile extends BaseInputTextFile implements CsvInputStreamer { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this File class and prepares it for usage + * + * @param $fileName Name of the index file + * @return $fileInstance An instance of this File class + */ + public final static function createCsvInputFile ($fileName) { + // Get a new instance + $fileInstance = new CsvInputFile(); + + // Set file name + $fileInstance->setFileName($fileName); + + // Init this abstract file + $fileInstance->initFile($fileName); + + // Return the prepared instance + return $fileInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/file_directories/text/output/class_BaseTextOutputFile.php b/inc/classes/main/file_directories/text/output/class_BaseTextOutputFile.php new file mode 100644 index 00000000..13e51ebd --- /dev/null +++ b/inc/classes/main/file_directories/text/output/class_BaseTextOutputFile.php @@ -0,0 +1,52 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class BaseTextFile extends BaseFile { + /** + * Protected constructor + * + * @param $className Name of the class + * @return void + */ + protected function __construct ($className) { + // Call parent constructor + parent::__construct($className); + } + + /** + * Initializes this text file for reading + * + * @param $fileName File's name + * @return void + */ + protected function initFile ($fileName) { + // Get a file i/o pointer instance + $pointerInstance = ObjectFactory::createObjectByConfiguredName('text_file_output_class', array($fileName)); + + // ... and set it here + $this->setPointerInstance($pointerInstance); + } +} + +// [EOF] +?> diff --git a/inc/config.php b/inc/config.php index b022da0a..1a855b97 100644 --- a/inc/config.php +++ b/inc/config.php @@ -359,17 +359,20 @@ $cfg->setConfigEntry('database_cache_enabled', FALSE); // CFG: DIRECTORY-CLASS $cfg->setConfigEntry('directory_class', 'FrameworkDirectoryPointer'); -// CFG: FILE-INPUT-CLASS -$cfg->setConfigEntry('file_raw_input_class', 'FrameworkFileInputPointer'); +// CFG: FILE-RAW-INPUT-CLASS +$cfg->setConfigEntry('file_raw_input_class', 'FrameworkRawFileInputPointer'); -// CFG: FILE-OUTPUT-CLASS -$cfg->setConfigEntry('file_raw_output_class', 'FrameworkFileOutputPointer'); +// CFG: FILE-RAW-OUTPUT-CLASS +$cfg->setConfigEntry('file_raw_output_class', 'FrameworkRawFileOutputPointer'); -// CFG: FILE-INPUT-OUTPUT-CLASS +// CFG: FILE-RAW-INPUT-OUTPUT-CLASS $cfg->setConfigEntry('file_raw_input_output_class', 'FrameworkFileInputOutputPointer'); -// CFG: CSV-FILE-CLASS -$cfg->setConfigEntry('csv_file_class', 'CsvFile'); +// CFG: TEXT-FILE-INPUT-CLASS +$cfg->setConfigEntry('text_file_input_class', 'FrameworkTextFileInputPointer'); + +// CFG: CSV-INPUT-FILE-CLASS +$cfg->setConfigEntry('csv_input_file_class', 'CsvInputFile'); // CFG: FILE-ITERATOR-CLASS $cfg->setConfigEntry('file_iterator_class', 'FileIterator');