]> git.mxchange.org Git - core.git/blobdiff - inc/classes/main/database/databases/class_LocalFileDatabase.php
Update queries can now also be unlimited (limited in rows)
[core.git] / inc / classes / main / database / databases / class_LocalFileDatabase.php
index 655d14420e259e4d73546e62de9784b76d3b2bdc..4d14624b90b5dec8da691dd0d594cbc95fb4e824 100644 (file)
@@ -2,7 +2,11 @@
 /**
  * Database backend class for storing objects in locally created files.
  *
- * This class serializes objects and saves them to local files.
+ * This class serializes arrays stored in the dataset instance and saves them
+ * to local files. Every file (except 'info') represents a single line. Every
+ * directory within the 'db' (base) directory represents a table.
+ *
+ * A configurable 'file_io_class' is being used as "storage backend".
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
@@ -177,6 +181,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn
 
                // Debug message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Read ' . count($dataArray) . ' elements from database file ' . $fqfn . '.');
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataArray=' . print_r($dataArray, TRUE));
 
                // Finally return it
                return $dataArray;
@@ -192,6 +197,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn
        private function writeDataArrayToFqfn ($fqfn, array $dataArray) {
                // Debug message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: Flushing ' . count($dataArray) . ' elements to database file ' . $fqfn . ' ...');
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DATABASE: dataArray=' . print_r($dataArray, TRUE));
 
                // Serialize and compress it
                $compressedData = $this->getCompressorChannel()->getCompressor()->compressStream(serialize($dataArray));
@@ -414,11 +420,11 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn
         * @throws      SqlException    If an SQL error occurs
         */
        public function queryInsertDataSet (StoreableCriteria $dataSetInstance) {
-               // Create full path name
-               $fqfn = $this->generateFqfnFromDataSet($dataSetInstance, md5($dataSetInstance->getUniqueValue()));
-
                // Try to save the request away
                try {
+                       // Create full path name
+                       $fqfn = $this->generateFqfnFromDataSet($dataSetInstance, md5($dataSetInstance->getUniqueValue()));
+
                        // Write the data away
                        $this->writeDataArrayToFqfn($fqfn, $dataSetInstance->getCriteriaArray());
 
@@ -463,7 +469,7 @@ class LocalFileDatabase extends BaseDatabaseBackend implements DatabaseBackendIn
                        $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()) || ($searchInstance->getLimit() == 0))) {
                                // Does the extension match?
                                if (substr($dataFile, -(strlen($this->getFileExtension()))) !== $this->getFileExtension()) {
                                        // Debug message