]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/database/backend/lfdb_legacy/class_CachedLocalFileDatabase.php
Continued:
[core.git] / framework / main / classes / database / backend / lfdb_legacy / class_CachedLocalFileDatabase.php
index 37426c86d83891a0d974dc2706eb4ce4272617d7..7bdd9d4083f7b0c1615d2cacf6d61ea62c508062 100644 (file)
@@ -12,10 +12,12 @@ use Org\Mxchange\CoreFramework\Database\Backend\DatabaseBackend;
 use Org\Mxchange\CoreFramework\Factory\ObjectFactory;
 use Org\Mxchange\CoreFramework\Filesystem\FileNotFoundException;
 use Org\Mxchange\CoreFramework\Generic\FrameworkException;
+use Org\Mxchange\CoreFramework\Result\Database\BaseDatabaseResult;
 use Org\Mxchange\CoreFramework\Traits\Compressor\Channel\CompressorChannelTrait;
 use Org\Mxchange\CoreFramework\Traits\Handler\Io\IoHandlerTrait;
 
 // Import SPL stuff
+use \InvalidArgumentException;
 use \SplFileInfo;
 
 /**
@@ -350,12 +352,19 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
         * @param       $tableName                      Name of the database table
         * @param       $searchInstance         Local search criteria class
         * @return      $resultData                     Result data of the query
+        * @throws      InvalidArgumentException        If a parameter is not valid
         * @throws      UnsupportedCriteriaException    If the criteria is unsupported
         * @throws      SqlException                                    If an 'SQL error' occurs
         */
        public function querySelect (string $tableName, LocalSearchCriteria $searchInstance) {
-               // The result is null by any errors
+               // Validate parameter
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: tableName=%s,searchInstance=%s - CALLED!', $tableName, $searchInstance->__toString()));
+               if (empty($tableName)) {
+                       // Throw IAE
+                       throw new InvalidArgumentException('Parameter "tableName" is empty');
+               }
+
+               // The result is null by any errors
                $resultData = NULL;
 
                // Create full path name
@@ -371,10 +380,10 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                        $directoryInstance = ObjectFactory::createObjectByConfiguredName('directory_class', array($pathName));
 
                        // Initialize the result data, this need to be rewritten e.g. if a local file cannot be read
-                       $resultData = array(
-                               BaseDatabaseBackend::RESULT_INDEX_STATUS => self::RESULT_OKAY,
-                               BaseDatabaseBackend::RESULT_INDEX_ROWS   => []
-                       );
+                       $resultData = [
+                               BaseDatabaseResult::RESULT_NAME_STATUS => self::RESULT_OKAY,
+                               BaseDatabaseResult::RESULT_NAME_ROWS   => []
+                       ];
 
                        // Initialize limit/skip
                        $limitFound = 0;
@@ -390,7 +399,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: Skipping fileInfoInstance->filename=%s ...', $fileInfoInstance->getFilename()));
                                        $directoryInstance->getDirectoryIteratorInstance()->next();
                                        continue;
-                               } // END - if
+                               }
 
                                // Read the file
                                $dataArray = $this->getDataArrayFromFile($fileInfoInstance);
@@ -410,7 +419,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                                // Found one entry?
                                                $isFound = (($isFound === true) && ($searchInstance->isCriteriaMatching($key, $value)));
                                                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: key=%s,value[%s]=%s,isFound=%s', $key, gettype($value), $value, intval($isFound)));
-                                       } // END - foreach
+                                       }
 
                                        // Is all found?
                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: isFound=%d,limitFound=%d,limit=%d', intval($isFound), $limitFound, $searchInstance->getLimit()));
@@ -424,20 +433,20 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                                                // Skip this entry
                                                                $skipFound++;
                                                                break;
-                                                       } // END - if
-                                               } // END - if
+                                                       }
+                                               }
 
                                                // Set id number
                                                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: Setting dataArray[%s]=%d', $this->getIndexKey(), $idx));
                                                $dataArray[$this->getIndexKey()] = $idx;
 
                                                // Entry found!
-                                               array_push($resultData[BaseDatabaseBackend::RESULT_INDEX_ROWS], $dataArray);
+                                               array_push($resultData[BaseDatabaseResult::RESULT_NAME_ROWS], $dataArray);
 
                                                // Count found entries up
-                                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: resultData[%s]()=%d', BaseDatabaseBackend::RESULT_INDEX_ROWS, count($resultData[BaseDatabaseBackend::RESULT_INDEX_ROWS])));
+                                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('CACHED-LFDB: resultData[%s]()=%d', BaseDatabaseResult::RESULT_NAME_ROWS, count($resultData[BaseDatabaseResult::RESULT_NAME_ROWS])));
                                                $limitFound++;
-                                       } // END - if
+                                       }
                                } else {
                                        // Throw an exception here
                                        throw new SqlException(array($this, sprintf('File '%s' contains invalid data.', $fileInfoInstance->getPathname()), self::DB_CODE_DATA_FILE_CORRUPT), self::EXCEPTION_SQL_QUERY);
@@ -448,7 +457,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
 
                                // Advance to next entry
                                $directoryInstance->getDirectoryIteratorInstance()->next();
-                       } // END - while
+                       }
 
                        // Close directory and throw the instance away
                        $directoryInstance->closeDirectory();
@@ -546,7 +555,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: fileInfoInstance.extension=' . $fileInfoInstance->getExtension() . ',getFileExtension()=' . $this->getFileExtension() . ' - SKIPPED!');
                                        $directoryInstance->getDirectoryIteratorInstance()->next();
                                        continue;
-                               } // END - if
+                               }
 
                                // Open this file for reading
                                $dataArray = $this->getDataArrayFromFile($fileInfoInstance);
@@ -564,7 +573,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
 
                                                // Found one entry?
                                                $isFound = (($isFound === true) && ($searchInstance->isCriteriaMatching($key, $value)));
-                                       } // END - foreach
+                                       }
 
                                        // Is all found?
                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: isFound=' . intval($isFound));
@@ -577,8 +586,8 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                                                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: Found entry, but skipping ...');
                                                                $skipFound++;
                                                                break;
-                                                       } // END - if
-                                               } // END - if
+                                                       }
+                                               }
 
                                                // Entry found, so update it
                                                foreach ($searchArray as $searchKey => $searchValue) {
@@ -589,7 +598,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                                        // Debug message + add/update it
                                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: criteriaKey=' . $searchKey . ',criteriaValue=' . $searchValue);
                                                        $dataArray[$searchKey] = $searchValue;
-                                               } // END - foreach
+                                               }
 
                                                // Write the data to a local file
                                                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: Writing data[]=' . count($dataArray) . ' to ' . $fileInfoInstance->getPathname() . ' ...');
@@ -597,12 +606,12 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
 
                                                // Count found entries up
                                                $limitFound++;
-                                       } // END - if
-                               } // END - if
+                                       }
+                               }
 
                                // Advance to next entry
                                $directoryInstance->getDirectoryIteratorInstance()->next();
-                       } // END - while
+                       }
 
                        // Close the file pointer
                        $directoryInstance->closeDirectory();
@@ -627,9 +636,16 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
         *
         * @param       $tableName              Name of the table we need the primary key from
         * @return      $primaryKey             Primary key column of the given table
+        * @throws      InvalidArgumentException        If a parameter is not valid
         * @todo        Rename method to getPrimaryKeyFromTableInfo()
         */
        public function getPrimaryKeyOfTable (string $tableName) {
+               // Validate parameter
+               if (empty($tableName)) {
+                       // Throw IAE
+                       throw new InvalidArgumentException('Parameter "tableName" is empty');
+               }
+
                // Default key is null
                $primaryKey = NULL;
 
@@ -637,7 +653,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                if (isset($this->tableInfo[$tableName])) {
                        // Then return the primary key
                        $primaryKey = $this->tableInfo[$tableName]['primary'];
-               } // END - if
+               }
 
                // Return the column
                return $primaryKey;
@@ -664,14 +680,22 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
         *
         * @param       $tableName      Table name
         * @return      $count          Total rows of given table
+        * @throws      InvalidArgumentException        If a parameter is not valid
         */
        public function countTotalRows (string $tableName) {
+               // Validate parameter
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: tableName=' . $tableName . ' - CALLED!');
+               if (empty($tableName)) {
+                       // Throw IAE
+                       throw new InvalidArgumentException('Parameter "tableName" is empty');
+               }
+
 
                // Create full path name
                $pathName = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('local_database_path') . $tableName . DIRECTORY_SEPARATOR;
 
                // Try all the requests
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: pathName=' . $pathName);
                try {
                        // Get a file pointer instance
                        $directoryInstance = ObjectFactory::createObjectByConfiguredName('directory_class', array($pathName));
@@ -688,12 +712,12 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac
                                        //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: fileInfoInstance.extension=' . $fileInfoInstance->getExtension() . ',getFileExtension()=' . $this->getFileExtension() . ' - SKIPPED!');
                                        // Skip this file!
                                        continue;
-                               } // END - if
+                               }
 
                                // Count this row up
                                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('CACHED-LFDB: fileInfoInstance.pathname=' . $fileInfoInstance->getPathname() . ',getFileExtension()=' . $this->getFileExtension() . ' - COUNTED!');
                                $count++;
-                       } // END - while
+                       }
                } catch (FrameworkException $e) {
                        // Catch all exceptions and store them in last error
                        $this->setLastException($e);