*
* @author Roland Haeder <webmaster@ship-simu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
+ * @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
*
private $lastContents = array();
/**
- * Wether the "connection is already up
+ * Whether the "connection is already up
*/
private $alreadyConnected = false;
- /**
- * Last error message
- */
- private $lastError = '';
-
- /**
- * Last exception
- */
- private $lastException = NULL;
-
/**
* Table information array
*/
return $databaseInstance;
}
- /**
- * Getter for last error message
- *
- * @return $lastError Last error message
- */
- public final function getLastError () {
- return $this->lastError;
- }
-
- /**
- * Getter for last exception
- *
- * @return $lastException Last thrown exception
- */
- public final function getLastException () {
- return $this->lastException;
- }
-
/**
* Setter for the last read file
*
$this->lastFile = (string) $fqfn;
}
- /**
- * Reset the last error and exception instance. This should be done after
- * a successfull "query"
- *
- * @return void
- */
- private final function resetLastError () {
- $this->lastError = '';
- $this->lastException = NULL;
- }
-
/**
* Getter for last read file
*
* @return $dataArray
*/
private function getDataArrayFromFile ($fqfn) {
+ // Debug message
+ //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Reading elements from database file ' . $fqfn . ' ...');
+
// Get a file pointer
$fileInstance = FrameworkFileInputPointer::createFrameworkFileInputPointer($fqfn);
// Unserialize it
$dataArray = unserialize($serializedData);
+ // Debug message
+ //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Read ' . count($dataArray) . ' elements from database file ' . $fqfn . '.');
+
// Finally return it
return $dataArray;
}
* @return void
*/
private function writeDataArrayToFqfn ($fqfn, array $dataArray) {
+ // Debug message
+ //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file ' . $fqfn . ' ...');
+
// Get a file pointer instance
$fileInstance = FrameworkFileOutputPointer::createFrameworkFileOutputPointer($fqfn, 'w');
// Close the file pointer
$fileInstance->closeFile();
+
+ // Debug message
+ //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file completed.');
}
/**
// Get criteria element
$criteria = $criteriaInstance->getCriteriaElemnent($key);
- // Is the criteria met?
- //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: criteria[' . gettype($criteria) . ']=' . $criteria . ',()=' . strlen($criteria) . ',value=' . $value . ',()=' . strlen($value));
- if ((!is_null($criteria)) && ($criteria == $value)) {
+ // Is the criteria met or none set?
+ //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: criteria[' . gettype($criteria) . ']=' . $criteria . ';()=' . strlen($criteria) . ',criteriaInstance()=' . $criteriaInstance->count() . ',value(' . strlen($value) . ')=' . $value);
+ if (((!is_null($criteria)) && ($criteria == $value)) || ($criteriaInstance->count() == 0)) {
// Shall we skip this entry?
if ($criteriaInstance->getSkip() > 0) {
// We shall skip some entries
$directoryInstance->closeDirectory();
unset($directoryInstance);
- // Reset last error message and exception
- $this->resetLastError();
+ // Reset last exception
+ $this->resetLastException();
} catch (PathIsNoDirectoryException $e) {
// Path not found means "table not found" for real databases...
- $this->lastException = $e;
- $this->lastError = $e->getMessage();
+ $this->setLastException($e);
// So throw an SqlException here with faked error message
throw new SqlException (array($this, sprintf("Table '%s' not found", $tableName), self::DB_CODE_TABLE_MISSING), self::EXCEPTION_SQL_QUERY);
} catch (FrameworkException $e) {
// Catch all exceptions and store them in last error
- $this->lastException = $e;
- $this->lastError = $e->getMessage();
+ $this->setLastException($e);
}
// Return the gathered result
// Update the primary key
$this->updatePrimaryKey($dataSetInstance);
- // Reset last error message and exception
- $this->resetLastError();
+ // Reset last exception
+ $this->resetLastException();
} catch (FrameworkException $e) {
// Catch all exceptions and store them in last error
- $this->lastException = $e;
- $this->lastError = $e->getMessage();
+ $this->setLastException($e);
// Throw an SQL exception
throw new SqlException(array($this, sprintf("Cannot write data to table '%s', is the table created?", $dataSetInstance->getTableName()), self::DB_CODE_TABLE_UNWRITEABLE), self::EXCEPTION_SQL_QUERY);
$searchInstance = $dataSetInstance->getSearchInstance();
// Read the directory with some exceptions
- while (($dataFile = $directoryInstance->readDirectoryExcept(array('.', '..', '.htaccess', '.svn', "info." . $this->getFileExtension()))) && ($limitFound < $searchInstance->getLimit())) {
+ while (($dataFile = $directoryInstance->readDirectoryExcept(array('.', '..', '.htaccess', '.svn', 'info.' . $this->getFileExtension()))) && ($limitFound < $searchInstance->getLimit())) {
// Does the extension match?
if (substr($dataFile, -(strlen($this->getFileExtension()))) !== $this->getFileExtension()) {
+ // Debug message
+ /* NOISY-DEBUG: */ $this->debugOutput('DATABASE: dataFile=' . $dataFile . ',getFileExtension()=' . $this->getFileExtension());
// Skip this file!
continue;
- }
+ } // END - if
// Open this file for reading
$dataArray = $this->getDataArrayFromFile($pathName . $dataFile);
$criteria = $searchInstance->getCriteriaElemnent($key);
// Is the criteria met?
- if ((!is_null($criteria)) && ($criteria == $value)) {
-
+ if (((!is_null($criteria)) && ($criteria == $value)) || ($searchInstance->count() == 0)) {
// Shall we skip this entry?
if ($searchInstance->getSkip() > 0) {
// We shall skip some entries
// Update the primary key
$this->updatePrimaryKey($dataSetInstance);
- // Reset last error message and exception
- $this->resetLastError();
+ // Reset last exception
+ $this->resetLastException();
} catch (FrameworkException $e) {
// Catch all exceptions and store them in last error
- $this->lastException = $e;
- $this->lastError = $e->getMessage();
+ $this->setLastException($e);
// Throw an SQL exception
throw new SqlException(array($this, sprintf("Cannot write data to table '%s', is the table created?", $dataSetInstance->getTableName()), self::DB_CODE_TABLE_UNWRITEABLE), self::EXCEPTION_SQL_QUERY);