use Org\Mxchange\CoreFramework\Middleware\BaseMiddleware;
use Org\Mxchange\CoreFramework\Middleware\Debug\DebugMiddleware;
+// Import SPL stuff
+use \InvalidArgumentException;
+
/**
* Database selector class
*
/**
* The real database layer
*/
- private $dbLayer = NULL;
+ private $backendInstance = NULL;
/**
* An instance of this class
/**
* Creates a new database connection layer
*
- * @param $debugInstance An instance of a DebugMiddleware class
- * @param $dbLayer An instance of a DatabaseBackend class
+ * @param $debugInstance An instance of a DebugMiddleware class
+ * @param $backendInstance An instance of a DatabaseBackend class
* @todo $debugInstance is currently not used
*/
- public static final function createDatabaseConnection (DebugMiddleware $debugInstance, DatabaseBackend $dbLayer) {
+ public static final function createDatabaseConnection (DebugMiddleware $debugInstance, DatabaseBackend $backendInstance) {
// Get instance
$databaseInstance = new DatabaseConnection();
// Set database layer
- $databaseInstance->setDatabaseLayer($dbLayer);
+ $databaseInstance->setDatabaseLayer($backendInstance);
// Set db instance
self::$selfInstance = $databaseInstance;
/**
* Setter for the real database layer
- * @param $dbLayer An instance of the real database layer
+ * @param $backendInstance An instance of a DatabaseBackend class
* @return void
*/
- public final function setDatabaseLayer (DatabaseBackend $dbLayer) {
- $this->dbLayer = $dbLayer;
+ public final function setDatabaseLayer (DatabaseBackend $backendInstance) {
+ $this->backendInstance = $backendInstance;
}
/**
* @return $indexKey Index key
*/
public final function getIndexKey () {
- return $this->dbLayer->getIndexKey();
+ return $this->backendInstance->getIndexKey();
}
/**
* @param $tableName Name of the 'table' we shall query
* @param $criteriaInstance An instance of a Criteria class
* @return $result The result as an array
+ * @throws InvalidArgumentException If a parameter is empty
*/
public function doSelectByTableCriteria (string $tableName, Criteria $criteriaInstance) {
+ // Validate parameter
+ if (empty($tableName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "tableName" is empty');
+ }
+
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Get result from query
- $result = $this->dbLayer->querySelect($tableName, $criteriaInstance);
+ $result = $this->backendInstance->querySelect($tableName, $criteriaInstance);
// Return the result
return $result;
* @return $exceptionInstance Last thrown exception
*/
public final function getLastException () {
- $exceptionInstance = $this->dbLayer->getLastException();
+ $exceptionInstance = $this->backendInstance->getLastException();
return $exceptionInstance;
}
*/
public function queryInsertDataSet (StoreableCriteria $dataSetInstance) {
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Ask the database layer
- $this->dbLayer->queryInsertDataSet($dataSetInstance);
+ $this->backendInstance->queryInsertDataSet($dataSetInstance);
}
/**
*/
public function queryUpdateDataSet (StoreableCriteria $dataSetInstance) {
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Ask the database layer
- $this->dbLayer->queryUpdateDataSet($dataSetInstance);
+ $this->backendInstance->queryUpdateDataSet($dataSetInstance);
}
/**
*
* @param $tableName Name of table we need the primary key column from
* @return $primaryKey Primary key column of requested table
+ * @throws InvalidArgumentException If a parameter is empty
*/
public function getPrimaryKeyOfTable (string $tableName) {
+ // Validate parameter
+ if (empty($tableName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "tableName" is empty');
+ }
+
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Ask the database layer
- $primaryKey = $this->dbLayer->getPrimaryKeyOfTable($tableName);
+ $primaryKey = $this->backendInstance->getPrimaryKeyOfTable($tableName);
// Return the value
return $primaryKey;
*/
public function removeNonPublicDataFromArray (array $data) {
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Call database backend
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DB-CONNECTION[' . $this->__toString() . ']: Calling this->dbLayer->removeNonPublicDataFromArray(data) ...');
- $data = $this->dbLayer->removeNonPublicDataFromArray($data);
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DB-CONNECTION[' . $this->__toString() . ']: Calling this->backendInstance->removeNonPublicDataFromArray(data) ...');
+ $data = $this->backendInstance->removeNonPublicDataFromArray($data);
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DB-CONNECTION[' . $this->__toString() . ']: data[]=' . gettype($data));
return $data;
*
* @param $tableName Table name
* @return $count Total row count
+ * @throws InvalidArgumentException If a parameter is empty
*/
public function countTotalRows (string $tableName) {
+ // Validate parameter
+ if (empty($tableName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "tableName" is empty');
+ }
+
// Connect to the database
- $this->dbLayer->connectToDatabase();
+ $this->backendInstance->connectToDatabase();
// Ask the database layer
- $count = $this->dbLayer->countTotalRows($tableName);
+ $count = $this->backendInstance->countTotalRows($tableName);
// Return the value
return $count;