X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fdatabase%2Fdatabases%2Fclass_LocalFileDatabase.php;h=5ba5e22fc58a71ed63959626f6eb678db4e4d53f;hp=8187f96e54bc091305abccaffc93159a068628fb;hb=0567c3a1bb112844a02a18986e99e77e5de55f63;hpb=361e6320e50a8bb1a3ccb675388b8042361669ae diff --git a/inc/classes/main/database/databases/class_LocalFileDatabase.php b/inc/classes/main/database/databases/class_LocalFileDatabase.php index 8187f96e..5ba5e22f 100644 --- a/inc/classes/main/database/databases/class_LocalFileDatabase.php +++ b/inc/classes/main/database/databases/class_LocalFileDatabase.php @@ -6,7 +6,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007 - 2009 Roland Haeder, this is free software + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -24,26 +24,28 @@ * along with this program. If not, see . */ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontendInterface { - // Constants for MySQL backward-compatiblity (PLEASE FIX THEM!) const DB_CODE_TABLE_MISSING = 0x100; const DB_CODE_TABLE_UNWRITEABLE = 0x101; const DB_CODE_DATA_FILE_CORRUPT = 0x102; + // Status results + const RESULT_OKAY = 'ok'; + /** * Save path for "file database" */ - private $savePath = ""; + private $savePath = ''; /** * The file's extension */ - private $fileExtension = "serialized"; + private $fileExtension = 'serialized'; /** * The last read file's name */ - private $lastFile = ""; + private $lastFile = ''; /** * The last read file's content including header information @@ -58,7 +60,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend /** * Last error message */ - private $lastError = ""; + private $lastError = ''; /** * Last exception @@ -73,7 +75,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend /** * Element for index */ - private $indexKey = "__idx"; + private $indexKey = '__idx'; /** * The protected constructor. Do never instance from outside! You need to @@ -94,10 +96,10 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend * Create an object of LocalFileDatabase and set the save path for local files. * This method also validates the given file path. * - * @param $savePath The local file path string - * @param $ioInstance The input/output handler. This - * should be FileIoHandler - * @return $dbInstance An instance of LocalFileDatabase + * @param $savePath The local file path string + * @param $ioInstance The input/output handler. This + * should be FileIoHandler + * @return $dbInstance An instance of LocalFileDatabase */ public final static function createLocalFileDatabase ($savePath, FileIoHandler $ioInstance) { // Get an instance @@ -173,7 +175,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend * @return void */ private final function resetLastError () { - $this->lastError = ""; + $this->lastError = ''; $this->lastException = null; } @@ -283,7 +285,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend $infoArray = array(); // Create FQFN for getting the table information file - $fqfn = $this->getSavePath() . $dataSetInstance->getTableName() . '/info.' . $this->getFileExtension(); + $fqfn = $this->generateFqfnFromDataSet($dataSetInstance, 'info'); // Get the file contents try { @@ -296,6 +298,21 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend return $infoArray; } + /** + * Generates an FQFN from given dataset instance and string + * + * @param $dataSetInstance An instance of a database set class + * @param $rowName Name of the row + * @return $fqfn The FQFN for this row + */ + private function generateFqfnFromDataSet (StorableCriteria $dataSetInstance, $rowName) { + // This is the FQFN + $fqfn = $this->getSavePath() . $dataSetInstance->getTableName() . '/' . $rowName . '.' . $this->getFileExtension(); + + // Return it + return $fqfn; + } + /** * Creates the table info file from given dataset instance * @@ -304,7 +321,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend */ private function createTableInfoFile (StoreableCriteria $dataSetInstance) { // Create FQFN for creating the table information file - $fqfn = $this->getSavePath() . $dataSetInstance->getTableName() . '/info.' . $this->getFileExtension(); + $fqfn = $this->generateFqfnFromDataSet($dataSetInstance, 'info'); // Get the data out from dataset in a local array $this->tableInfo[$dataSetInstance->getTableName()] = array( @@ -331,7 +348,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend if (!isset($this->tableInfo['primary'])) { // Then create the info file $this->createTableInfoFile($dataSetInstance); - } elseif (($this->getConfigInstance()->readConfig('db_update_primary_forced') === "Y") && ($dataSetInstance->getPrimaryKey() != $this->tableInfo['primary'])) { + } elseif (($this->getConfigInstance()->getConfigEntry('db_update_primary_forced') == 'Y') && ($dataSetInstance->getPrimaryKey() != $this->tableInfo['primary'])) { // Set the array element $this->tableInfo[$dataSetInstance->getTableName()]['primary'] = $dataSetInstance->getPrimaryKey(); @@ -353,12 +370,12 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend * Starts a SELECT query on the database by given return type, table name * and search criteria * - * @param $resultType Result type ("array", "object" and "indexed" are valid) + * @param $resultType Result type ('array', 'object' and 'indexed' are valid) * @param $tableName Name of the database table * @param $criteria Local search criteria class * @return $resultData Result data of the query * @throws UnsupportedCriteriaException If the criteria is unsupported - * @throws SqlException If an "SQL error" occurs + * @throws SqlException If an 'SQL error' occurs */ public function querySelect ($resultType, $tableName, LocalSearchCriteria $criteriaInstance) { // The result is null by any errors @@ -367,15 +384,15 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend // Create full path name $pathName = $this->getSavePath() . $tableName . '/'; - // A "select" query is not that easy on local files, so first try to - // find the "table" which is in fact a directory on the server + // A 'select' query is not that easy on local files, so first try to + // find the 'table' which is in fact a directory on the server try { // Get a directory pointer instance $directoryInstance = FrameworkDirectoryPointer::createFrameworkDirectoryPointer($pathName); // Initialize the result data, this need to be rewritten e.g. if a local file cannot be read $resultData = array( - 'status' => "ok", + 'status' => LocalfileDatabase::RESULT_OKAY, 'rows' => array() ); @@ -385,7 +402,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend $idx = 1; // Read the directory with some exceptions - while (($dataFile = $directoryInstance->readDirectoryExcept(array(".", "..", ".htaccess", ".svn", "info." . $this->getFileExtension()))) && ($limitFound < $criteriaInstance->getLimit())) { + while (($dataFile = $directoryInstance->readDirectoryExcept(array('.', '..', '.htaccess', '.svn', "info." . $this->getFileExtension()))) && ($limitFound < $criteriaInstance->getLimit())) { // Does the extension match? if (substr($dataFile, -(strlen($this->getFileExtension()))) !== $this->getFileExtension()) { // Skip this file! @@ -467,12 +484,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend */ public function queryInsertDataSet (StoreableCriteria $dataSetInstance) { // Create full path name - $fqfn = sprintf("%s%s/%s.%s", - $this->getSavePath(), - $dataSetInstance->getTableName(), - md5($dataSetInstance->getUniqueValue()), - $this->getFileExtension() - ); + $fqfn = $this->generateFqfnFromDataSet($dataSetInstance, md5($dataSetInstance->getUniqueValue())); // Try to save the request away try { @@ -521,7 +533,7 @@ class LocalFileDatabase extends BaseDatabaseFrontend implements DatabaseFrontend $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()) { // Skip this file!