X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fdatabase%2Fdatabases%2Fclass_LocalFileDatabase.php;h=375ec98ece9a00742edf85e71ba7e241d9d027d2;hp=d92c29b41d940278c3ce1df9be1abb67cdd80f7a;hb=e7040f10e90178e789f97ef7e195b479250e241a;hpb=4cfe82256d609b7d6cdffb7baa2286bd026040d5 diff --git a/inc/classes/main/database/databases/class_LocalFileDatabase.php b/inc/classes/main/database/databases/class_LocalFileDatabase.php index d92c29b4..375ec98e 100644 --- a/inc/classes/main/database/databases/class_LocalFileDatabase.php +++ b/inc/classes/main/database/databases/class_LocalFileDatabase.php @@ -89,6 +89,12 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn // Set the compressor channel $databaseInstance->setCompressorChannel($compressorInstance); + // Get a file IO handler + $fileIoInstance = ObjectFactory::createObjectByConfiguredName('file_io_class'); + + // ... and set it + $databaseInstance->setFileIoInstance($fileIoInstance); + // "Connect" to the database $databaseInstance->connectToDatabase(); @@ -162,16 +168,13 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn */ 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); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Reading elements from database file ' . $fqfn . ' ...'); - // Get the raw data and BASE64-decode it - $compressedData = base64_decode($fileInstance->readLinesFromFile()); + // Init compressed data + $compressedData = $this->getFileIoInstance()->loadFileContents($fqfn); + $compressedData = $compressedData['data']; // Close the file and throw the instance away - $fileInstance->closeFile(); unset($fileInstance); // Decompress it @@ -181,7 +184,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn $dataArray = unserialize($serializedData); // Debug message - //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Read ' . count($dataArray) . ' elements from database file ' . $fqfn . '.'); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Read ' . count($dataArray) . ' elements from database file ' . $fqfn . '.'); // Finally return it return $dataArray; @@ -196,22 +199,19 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn */ 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'); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file ' . $fqfn . ' ...'); // Serialize and compress it $compressedData = $this->getCompressorChannel()->getCompressor()->compressStream(serialize($dataArray)); - // Write this data BASE64 encoded to the file - $fileInstance->writeToFile(base64_encode($compressedData)); + // Write data + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Writing ' . strlen($compressedData) . ' bytes ...'); - // Close the file pointer - $fileInstance->closeFile(); + // Write this data BASE64 encoded to the file + $this->getFileIoInstance()->saveFile($fqfn, $compressedData); // Debug message - //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file completed.'); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file completed.'); } /** @@ -350,6 +350,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn // Read the file $dataArray = $this->getDataArrayFromFile($pathName . $dataFile); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataFile=' . $dataFile . ',dataArray='.print_r($dataArray,true)); // Is this an array? if (is_array($dataArray)) { @@ -359,7 +360,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn $criteria = $criteriaInstance->getCriteriaElemnent($key); // 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); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->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) { @@ -375,7 +376,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn $dataArray[$this->getIndexKey()] = $idx; // Entry found! - //* NOISY-DEBUG: */ $this->debugOutput('DATABASE: indexKey=' . $this->getIndexKey() . ',idx=' . $idx . ',dataArray=' . print_r($dataArray, true)); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: indexKey=' . $this->getIndexKey() . ',idx=' . $idx . ',dataArray=' . print_r($dataArray, true)); $resultData[BaseDatabaseBackend::RESULT_INDEX_ROWS][] = $dataArray; // Count found entries up @@ -474,13 +475,14 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn // Does the extension match? if (substr($dataFile, -(strlen($this->getFileExtension()))) !== $this->getFileExtension()) { // Debug message - /* NOISY-DEBUG: */ $this->debugOutput('DATABASE: dataFile=' . $dataFile . ',getFileExtension()=' . $this->getFileExtension()); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataFile=' . $dataFile . ',getFileExtension()=' . $this->getFileExtension() . ' - SKIPPED!'); // Skip this file! continue; } // END - if // Open this file for reading $dataArray = $this->getDataArrayFromFile($pathName . $dataFile); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataFile=' . $dataFile . ',dataArray='.print_r($dataArray,true)); // Is this an array? if (is_array($dataArray)) { @@ -488,6 +490,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn foreach ($dataArray as $key => $value) { // Get criteria element $criteria = $searchInstance->getCriteriaElemnent($key); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataFile=' . $dataFile . ',key=' . $key . ',criteria=' . $criteria); // Is the criteria met? if (((!is_null($criteria)) && ($criteria == $value)) || ($searchInstance->count() == 0)) { @@ -503,6 +506,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn // Entry found, so update it foreach ($criteriaArray as $criteriaKey => $criteriaValue) { + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue); $dataArray[$criteriaKey] = $criteriaValue; } // END - foreach