Added abstraction classes for file-based stacks and index files, some setter
authorRoland Haeder <roland@mxchange.org>
Tue, 20 May 2014 21:03:07 +0000 (23:03 +0200)
committerRoland Haeder <roland@mxchange.org>
Tue, 20 May 2014 21:03:07 +0000 (23:03 +0200)
have now access level 'protected' as 'public' was not a such good idea.

Signed-off-by: Roland H├Ąder <roland@mxchange.org>
inc/classes/main/file_directories/class_BaseFile.php [new file with mode: 0644]
inc/classes/main/file_directories/class_BaseFileIo.php
inc/classes/main/file_directories/index/.htaccess [new file with mode: 0644]
inc/classes/main/file_directories/index/class_IndexFile.php [new file with mode: 0644]
inc/classes/main/file_directories/stack/.htaccess [new file with mode: 0644]
inc/classes/main/file_directories/stack/class_StackFile.php [new file with mode: 0644]

diff --git a/inc/classes/main/file_directories/class_BaseFile.php b/inc/classes/main/file_directories/class_BaseFile.php
new file mode 100644 (file)
index 0000000..bcc6166
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+/**
+ * A general file class
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 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 <http://www.gnu.org/licenses/>.
+ */
+class BaseFile extends BaseFrameworkSystem {
+       /**
+        * The current file we are working in
+        */
+       private $fileName = '';
+
+       /**
+        * Protected constructor
+        *
+        * @param       $className      Name of the class
+        * @return      void
+        */
+       protected function __construct ($className) {
+               // Call parent constructor
+               parent::__construct($className);
+       }
+
+       /**
+        * Destructor for cleaning purposes, etc
+        *
+        * @return      void
+        */
+       public final function __destruct() {
+               // Try to close a file
+               $this->closeFile();
+
+               // Call the parent destructor
+               parent::__destruct();
+       }
+
+       /**
+        * Close a file source and set it's instance to null and the file name
+        * to empty
+        *
+        * @return      void
+        * @todo        ~10% done?
+        */
+       public function closeFile () {
+               $this->partialStub('Unfinished method.');
+
+               // Remove file name
+               $this->setFileName('');
+       }
+
+       /**
+        * Setter for file name
+        *
+        * @param       $fileName       The new file name
+        * @return      void
+        */
+       protected final function setFileName ($fileName) {
+               $fileName = (string) $fileName;
+               $this->fileName = $fileName;
+       }
+
+       /**
+        * Getter for file name
+        *
+        * @return      $fileName       The current file name
+        */
+       public final function getFileName () {
+               return $this->fileName;
+       }
+
+       /**
+        * Determines seek position
+        *
+        * @return      $seekPosition   Current seek position
+        * @todo        0% done
+        */
+       public final function determineSeekPosition () {
+               $this->partialStub('Unfinished method.');
+       }
+
+       /**
+        * Seek to given offset (default) or other possibilities as fseek() gives.
+        *
+        * @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      $status         Status of file seek: 0 = success, -1 = failed
+        * @todo        0% done
+        */
+       public function seek ($offset, $whence = SEEK_SET) {
+               $this->partialStub('Unfinished method.');
+       }
+
+       /**
+        * Size of this file
+        *
+        * @return      $size   Size (in bytes) of file
+        * @todo        Handle seekStatus
+        * @todo        0% done
+        */
+       public function size () {
+               $this->partialStub('Unfinished method.');
+       }
+}
+
+// [EOF]
+?>
index 16e905d..cd07f7f 100644 (file)
@@ -89,7 +89,7 @@ class BaseFileIo extends BaseFrameworkSystem {
         * @param       $filePointer    File resource
         * @return      void
         */
-       public final function setPointer ($filePointer) {
+       protected final function setPointer ($filePointer) {
                $this->filePointer = $filePointer;
        }
 
@@ -109,7 +109,7 @@ class BaseFileIo extends BaseFrameworkSystem {
         * @param       $fileName       The new file name
         * @return      void
         */
-       public final function setFileName ($fileName) {
+       protected final function setFileName ($fileName) {
                $fileName = (string) $fileName;
                $this->fileName = $fileName;
        }
diff --git a/inc/classes/main/file_directories/index/.htaccess b/inc/classes/main/file_directories/index/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/main/file_directories/index/class_IndexFile.php b/inc/classes/main/file_directories/index/class_IndexFile.php
new file mode 100644 (file)
index 0000000..2859fd8
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * An index file class
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 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 <http://www.gnu.org/licenses/>.
+ */
+class IndexFile extends BaseFile implements SeekableWritableFileIterator {
+       /**
+        * 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
+        *
+        * @return      $fileInstance   An instance of this File class
+        */
+       public final static function createIndexFile () {
+               // Get a new instance
+               $fileInstance = new IndexFile();
+
+               // Return the prepared instance
+               return $fileInstance;
+       }
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/file_directories/stack/.htaccess b/inc/classes/main/file_directories/stack/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/main/file_directories/stack/class_StackFile.php b/inc/classes/main/file_directories/stack/class_StackFile.php
new file mode 100644 (file)
index 0000000..23ffe84
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * A stack file class
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 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 <http://www.gnu.org/licenses/>.
+ */
+class StackFile extends BaseFile implements SeekableWritableFileIterator {
+       /**
+        * 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
+        *
+        * @return      $fileInstance   An instance of this File class
+        */
+       public final static function createStackFile () {
+               // Get a new instance
+               $fileInstance = new StackFile();
+
+               // Return the prepared instance
+               return $fileInstance;
+       }
+}
+
+// [EOF]
+?>