}
/**
- * Close a file source and set it's instance to null and the file name
- * to empty
+ * Getter for the file pointer
*
- * @return void
- * @todo ~10% done?
+ * @return $filePointer The file pointer which shall be a valid file resource
+ * @throws UnsupportedOperationException If this method is called
*/
- public function closeFile () {
- $this->partialStub('Unfinished method.');
-
- // Remove file name
- $this->setFileName('');
+ public final function getPointer () {
+ self::createDebugInstance(__CLASS__)->debugOutput('Unhandled ' . strlen($data) . ' bytes in this stream.');
+ throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
}
/**
return $this->fileName;
}
+ /**
+ * Initializes this file class
+ *
+ * @param $fileName Name of this abstract file
+ * @return void
+ */
+ protected function initFile ($fileName) {
+ // Get a file i/o pointer instance
+ $pointerInstance = ObjectFactory::createObjectByConfiguredName('file_raw_input_output_class', array($fileName));
+
+ // ... and set it here
+ $this->setPointerInstance($pointerInstance);
+ }
+
+ /**
+ * 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('');
+ }
+
/**
* Determines seek position
*
* @return $seekPosition Current seek position
- * @todo 0% done
*/
- public final function determineSeekPosition () {
- $this->partialStub('Unfinished method.');
+ public function determineSeekPosition () {
+ return $this->getPointerInstance()->determineSeekPosition();
}
/**
* @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.');
+ return $this->getPointerInstance()->seek($offset, $whence);
}
/**
*
* @return $size Size (in bytes) of file
* @todo Handle seekStatus
- * @todo 0% done
*/
public function size () {
- $this->partialStub('Unfinished method.');
+ return $this->getPointerInstance()->size();
+ }
+
+ /**
+ * 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 () {
+ return $this->getPointerInstance()->readFromFile();
+ }
+
+ /**
+ * Reads given amount of bytes from file.
+ *
+ * @param $bytes Amount of bytes to read
+ * @return $data Data read from file
+ */
+ public function read ($bytes) {
+ return $this->getPointerInstance()->read($bytes);
+ }
+
+ /**
+ * 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) {
+ return $this->getPointerInstance()->writeToFile($dataStream);
+ }
+
+ /**
+ * Rewinds to the beginning of the file
+ *
+ * @return $status Status of this operation
+ */
+ public function rewind () {
+ return $this->getPointerInstance()->rewind();
}
}