// Import framework stuff
use Org\Mxchange\CoreFramework\Criteria\BaseCriteria;
+use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria;
use Org\Mxchange\CoreFramework\Criteria\Storing\StoreableCriteria;
use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint;
+// Import SPL stuff
+use \InvalidArgumentException;
+
/**
* A set of data storeable in databases
*
* @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.shipsimu.org
*
/**
* Primary keys
*/
- private $primaryKeys = array();
+ private $primaryKeys = [];
+
+ /**
+ * Search criteria instance
+ */
+ private $searchInstance = NULL;
/**
* Protected constructor
*
* @return void
*/
- protected function __construct () {
+ private function __construct () {
// Call parent constructor
parent::__construct(__CLASS__);
}
*
* @param $tableName Name of the table
* @return $criteriaInstance An instance of this criteria
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- public static final function createDataSetCriteria ($tableName) {
+ public static final function createDataSetCriteria (string $tableName) {
+ // Validate parameter
+ if (empty($tableName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "tableName" is empty');
+ }
+
// Get a new instance
$criteriaInstance = new DataSetCriteria();
* @param $tableName Name of the table to set
* @return void
*/
- public final function setTableName ($tableName) {
- $this->tableName = (string) $tableName;
+ public final function setTableName (string $tableName) {
+ $this->tableName = $tableName;
}
/**
* @param $uniqueKey Column to use as unique key
* @return void
*/
- public final function setUniqueKey ($uniqueKey) {
- $this->uniqueKey = (string) $uniqueKey;
+ public final function setUniqueKey (string $uniqueKey) {
+ $this->uniqueKey = $uniqueKey;
}
/**
return $this->uniqueKey;
}
+ /**
+ * Setter for primary key
+ *
+ * @param $primaryKey Primary key to set
+ * @return void
+ */
+ public final function setPrimaryKey (string $primaryKey) {
+ $this->primaryKey = $primaryKey;
+ }
+
+ /**
+ * Setter for primary key array
+ *
+ * @param $primaryKeys Primary key array to set
+ * @return void
+ */
+ public function setPrimaryKeyCombined (array $primaryKeys) {
+ $this->primaryKeys = $primaryKeys;
+ }
+
+ /**
+ * Getter for primary keys
+ *
+ * @return $primaryKeys Primary key array
+ */
+ public final function getPrimaryKeys () {
+ // Return it
+ return $this->primaryKeys;
+ }
+
+ /**
+ * Setter for search instance
+ *
+ * @param $searchInstance Searchable criteria instance
+ * @return void
+ */
+ public final function setSearchInstance (LocalSearchCriteria $searchInstance) {
+ $this->searchInstance = $searchInstance;
+ }
+
+ /**
+ * Getter for search instance
+ *
+ * @return $searchInstance Searchable criteria instance
+ */
+ public final function getSearchInstance () {
+ return $this->searchInstance;
+ }
+
/**
* Getter for unique key value
*
$primaryKeys = $this->getPrimaryKeys();
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: tableName=' . $this->getTableName() . ',primaryKey=' . $primaryKey . ',primaryKeys()=' . count($primaryKeys));
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DATA-SET-CRITERIA: tableName=' . $this->getTableName() . ',primaryKey=' . $primaryKey . ',primaryKeys()=' . count($primaryKeys));
/*
* If this is not set, this could mean a badly written frontend as
foreach ($primaryKeys as $primaryKey) {
// Add it
$return .= trim($this->getCriteriaElemnent($primaryKey));
- } // END - foreach
+ }
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: tableName=' . $this->getTableName() . ',return=' . $return . ' - EXIT!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DATA-SET-CRITERIA: tableName=' . $this->getTableName() . ',return=' . $return . ' - EXIT!');
// Return it
return $return;
return $primaryKey;
} else {
// @TODO Issue a warning
- self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: Primary key not set for table ' . $this->getTableName() . ', please fix your table. Falling back to unique key ...');
+ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DATA-SET-CRITERIA: Primary key not set for table ' . $this->getTableName() . ', please fix your table. Falling back to unique key ...');
// Get unique key
$uniqueKey = trim($this->getCriteriaElemnent($this->getUniqueKey()));
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: tableName=' . $this->getTableName() . ',uniqueKey=' . $uniqueKey);
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DATA-SET-CRITERIA: tableName=' . $this->getTableName() . ',uniqueKey=' . $uniqueKey);
// Is it empty, too?
if (empty($uniqueKey)) {
if (empty($primaryKey)) {
// Get uniqueKey
$primaryKey = $this->getUniqueKey();
- } // END - if
+ }
// Return it
return $primaryKey;
}
- /**
- * Setter for primary key
- *
- * @param $primaryKey Primary key to set
- * @return void
- */
- public final function setPrimaryKey ($primaryKey) {
- $this->primaryKey = (string) $primaryKey;
- }
-
- /**
- * Setter for primary key array
- *
- * @param $primaryKeys Primary key array to set
- * @return void
- */
- public function setPrimaryKeyCombined (array $primaryKeys) {
- $this->primaryKeys = $primaryKeys;
- }
-
- /**
- * Getter for primary keys
- *
- * @return $primaryKeys Primary key array
- */
- public final function getPrimaryKeys () {
- // Return it
- return $this->primaryKeys;
- }
-
}