<?php
// Own namespace
-namespace CoreFramework\Criteria;
+namespace Org\Mxchange\CoreFramework\Criteria;
// Import framework stuff
-use CoreFramework\Criteria\Search\SearchCriteria;
-use CoreFramework\Object\BaseFrameworkSystem;
+use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap;
+use Org\Mxchange\CoreFramework\Criteria\Search\SearchCriteria;
+use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
+use Org\Mxchange\CoreFramework\Utils\String\StringUtils;
/**
* A general crtieria class
*
* @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.shipsimu.org
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class BaseCriteria extends BaseFrameworkSystem implements Criteria {
+abstract class BaseCriteria extends BaseFrameworkSystem implements Criteria {
/**
* Wrapper class name stored in config entry
*/
* @param $className Name of the class
* @return void
*/
- protected function __construct ($className) {
+ protected function __construct (string $className) {
// Call parent constructor
parent::__construct($className);
} // END - foreach
}
+ /**
+ * Count the criteria, e.g. useful to find out if a database query has no
+ * limitation (search criteria).
+ *
+ * @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
+ * @return $count Count of all criteria entries
+ */
+ protected final function count (string $criteriaType = 'default') {
+ // Return it
+ return $this->countGenericArrayGroup('criteria', $criteriaType);
+ }
+
/**
* Checks whether given key is set
*
* @param $criteriaKey Criteria key
* @return $isSet Whether key is set
*/
- public function isKeySet ($criteriaType, $criteriaKey) {
+ public function isKeySet (string $criteriaType, string $criteriaKey) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false));
// Determine it
$isSet = $this->isGenericArrayElementSet('criteria', $criteriaType, 'entries', $criteriaKey);
* @param $criteriaKey Criteria key
* @return $isSet Whether key is set
*/
- public function isChoiceKeySet ($criteriaKey) {
+ public function isChoiceKeySet (string $criteriaKey) {
// Call inner method
return $this->isKeySet('choice', $criteriaKey);
}
* @param $criteriaKey Criteria key
* @return $isSet Whether key is set
*/
- public function isExcludeKeySet ($criteriaKey) {
+ public function isExcludeKeySet (string $criteriaKey) {
// Call inner method
return $this->isKeySet('exclude', $criteriaKey);
}
* @param $wrapperConfigEntry Configuration entry which hold the wrapper class' name
* @return void
*/
- public final function setWrapperConfigEntry ($wrapperConfigEntry) {
- $this->wrapperConfigEntry = (string) $wrapperConfigEntry;
+ public final function setWrapperConfigEntry (string $wrapperConfigEntry) {
+ $this->wrapperConfigEntry = $wrapperConfigEntry;
}
/**
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return $criteria
*/
- public final function getCriteriaArray ($criteriaType = 'default') {
+ public final function getCriteriaArray (string $criteriaType = 'default') {
return $this->getGenericArrayKey('criteria', $criteriaType, 'entries');
}
* @param $criteriaKey Criteria key to unset
* @return void
*/
- public final function unsetCriteria ($criteriaKey) {
+ public final function unsetCriteria (string $criteriaKey) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// "Walk" through all criterias
foreach ($this->getGenericArray('criteria') as $criteriaType => $dummy) {
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return void
*/
- public final function addCriteria ($criteriaKey, $criteriaValue, $criteriaType = 'default') {
+ public final function addCriteria (string $criteriaKey, $criteriaValue, string $criteriaType = 'default') {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue . ',criteriaType=' . $criteriaType . ' - CALLED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue . ',criteriaType=' . $criteriaType . ' - CALLED!');
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue)));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false) && (!is_bool($criteriaValue)));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey);
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA: criteriaKey=' . $criteriaKey);
// Append it
$this->appendStringToGenericArrayElement('criteria', $criteriaType, 'entries', $criteriaKey, $criteriaValue);
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return void
*/
- public final function setCriteria ($criteriaKey, $criteriaValue, $criteriaType = 'default') {
+ public final function setCriteria (string $criteriaKey, $criteriaValue, string $criteriaType = 'default') {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue . ',criteriaType=' . $criteriaType . ' - CALLED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue . ',criteriaType=' . $criteriaType . ' - CALLED!');
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue)));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false) && (!is_bool($criteriaValue)));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey);
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA: criteriaKey=' . $criteriaKey);
// Set it
$this->setStringGenericArrayElement('criteria', $criteriaType, 'entries', $criteriaKey, $criteriaValue);
* @param $criteriaValue Criteria value
* @return void
*/
- public final function addChoiceCriteria ($criteriaKey, $criteriaValue) {
+ public final function addChoiceCriteria (string $criteriaKey, $criteriaValue) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue)));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false) && (!is_bool($criteriaValue)));
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue);
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue);
// Add it
- $this->pushValueToGenericArrayElement('criteria', 'choice', 'entries', self::convertDashesToUnderscores($criteriaKey), (string) $criteriaValue);
+ $this->pushValueToGenericArrayElement('criteria', 'choice', 'entries', StringUtils::convertDashesToUnderscores($criteriaKey), (string) $criteriaValue);
}
/**
* @param $criteriaValue Criteria value
* @return void
*/
- public final function addExcludeCriteria ($criteriaKey, $criteriaValue) {
+ public final function addExcludeCriteria (string $criteriaKey, $criteriaValue) {
// Add it with generic method
$this->addCriteria($criteriaKey, $criteriaValue, 'exclude');
}
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return void
*/
- public final function addConfiguredCriteria ($criteriaKey, $configEntry, $criteriaType = 'default') {
+ public final function addConfiguredCriteria ($criteriaKey, $configEntry, string $criteriaType = 'default') {
// Add the configuration entry as a criteria
- $value = $this->getConfigInstance()->getConfigEntry($configEntry);
+ $value = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry($configEntry);
$this->addCriteria($criteriaKey, $value, $criteriaType);
}
/**
- * Get criteria element or FALSE if not found
+ * Get criteria element or false if not found
*
* @param $criteriaKey The requested criteria key
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
- * @return $value Whether the value of the critera or FALSE
+ * @return $value Whether the value of the critera or false
*/
- public function getCriteriaElemnent ($criteriaKey, $criteriaType = 'default') {
+ public function getCriteriaElemnent ($criteriaKey, string $criteriaType = 'default') {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaType=' . $criteriaType . ' - CALLED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA: criteriaKey=' . $criteriaKey . ',criteriaType=' . $criteriaType . ' - CALLED!');
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteria()=' . $this->countGenericArrayGroup('criteria', $criteriaType));
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA: criteriaKey=' . $criteriaKey . ',criteria()=' . $this->countGenericArrayGroup('criteria', $criteriaType));
// Default is not found
- $value = FALSE;
+ $value = false;
// Is the criteria there?
if ($this->isKeySet($criteriaType, $criteriaKey)) {
} // END - if
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __METHOD__ . ':' . __LINE__ . ']: value=' . $value . ' - EXIT!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA: value=' . $value . ' - EXIT!');
// Return the value
return $value;
}
/**
- * Get criteria element or FALSE if not found for 'choice' type
+ * Get criteria element or false if not found for 'choice' type
*
* @param $criteriaKey The requested criteria key
- * @return $value Whether the value of the critera or FALSE
+ * @return $value Whether the value of the critera or false
*/
- public function getCriteriaChoiceElemnent ($criteriaKey) {
+ public function getCriteriaChoiceElemnent (string $criteriaKey) {
// Call inner method
return $this->getCriteriaElemnent($criteriaKey, 'choice');
}
/**
- * Get criteria element or FALSE if not found for 'exclude' type
+ * Get criteria element or false if not found for 'exclude' type
*
* @param $criteriaKey The requested criteria key
- * @return $value Whether the value of the critera or FALSE
+ * @return $value Whether the value of the critera or false
*/
- public function getCriteriaExcludeElemnent ($criteriaKey) {
+ public function getCriteriaExcludeElemnent (string $criteriaKey) {
// Call inner method
return $this->getCriteriaElemnent($criteriaKey, 'exclude');
}
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return $matches Whether the entry matches or not
*/
- public function ifEntryMatches (array $entryArray, $criteriaType = 'default') {
+ public function ifEntryMatches (array $entryArray, string $criteriaType = 'default') {
// First nothing matches and nothing is counted
- $matches = FALSE;
+ $matches = false;
$counted = 0;
// Walk through all entries
foreach ($entryArray as $key => $entry) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($key, 'my-') === FALSE) && (strpos($key, 'my_') === FALSE));
+ assert((strpos($key, 'my-') === false) && (strpos($key, 'my_') === false));
// Convert dashes to underscore
- $key = self::convertDashesToUnderscores($key);
+ $key = StringUtils::convertDashesToUnderscores($key);
// Then walk through all search criteria
foreach ($this->getGenericArrayKey('criteria', $criteriaType, 'entries') as $criteriaKey => $criteriaValue) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue)));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false) && (!is_bool($criteriaValue)));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// Is the element found and does it match?
if (($key == $criteriaKey) && ($criteriaValue == $entry)) {
* @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
* @return $cacheKey The key suitable for the cache system
*/
- public function getCacheKey ($onlyKeys = array(), $criteriaType = 'default') {
+ public function getCacheKey (array $onlyKeys = [], string $criteriaType = 'default') {
// Debug message
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput($this->__toString() . ': criteriaType=' . $criteriaType . ',count()=' . $this->countGenericArray('criteria')));
// Now walk through all criterias
foreach ($this->getGenericArrayKey('criteria', $criteriaType, 'entries') as $criteriaKey => $criteriaValue) {
// Make sure no 'my-' or 'my_' passes this point
- assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue)));
+ assert((strpos($criteriaKey, 'my-') === false) && (strpos($criteriaKey, 'my_') === false) && (!is_bool($criteriaValue)));
// $criteriaValue cannot be an array
assert(!is_array($criteriaValue));
// Convert dashes to underscore
- $criteriaKey = self::convertDashesToUnderscores($criteriaKey);
+ $criteriaKey = StringUtils::convertDashesToUnderscores($criteriaKey);
// Is the value in array or is $onlyKeys empty?
if ((isset($onlyKeys[$criteriaKey])) || (count($onlyKeys) == 0)) {
* @param $onlyKeys Only use these keys for a cache key
* @return $cacheKey The key suitable for the cache system
*/
- public function getCacheKeyChoice ($onlyKeys = array()) {
+ public function getCacheKeyChoice (array $onlyKeys = []) {
// Call inner method
return $this->getCacheKey($onlyKeys, 'choice');
}
* @param $onlyKeys Only use these keys for a cache key
* @return $cacheKey The key suitable for the cache system
*/
- public function getCacheKeyExclude ($onlyKeys = array()) {
+ public function getCacheKeyExclude (array $onlyKeys = []) {
// Call inner method
return $this->getCacheKey($onlyKeys, 'exclude');
}
- /**
- * Count the criteria, e.g. useful to find out if a database query has no
- * limitation (search criteria).
- *
- * @param $criteriaType Type of this criteria, can be one of 'default' (default), 'choice' or 'exclude'
- * @return $count Count of all criteria entries
- */
- public final function count ($criteriaType = 'default') {
- // Return it
- return $this->countGenericArrayGroup('criteria', $criteriaType);
- }
-
/**
* Count 'choice' criteria, e.g. useful to find out if a database query
* has no limitation (search criteria).