From 3f585d6e71e008a921f620b230d4cf1bdb7bc7ef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 24 Nov 2020 03:23:38 +0100 Subject: [PATCH] Continued: - moved $searchInstance + getter/setter from monolithic BaseFrameworkSystem to proper classes/interfaces - moved interfaces in own sub directories and not "extended" MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../classes/class_BaseFrameworkSystem.php | 25 ----- .../dataset/class_DataSetCriteria.php | 97 ++++++++++++------- .../criteria/update/class_UpdateCriteria.php | 25 +++++ .../class_CachedLocalFileDatabase.php | 2 +- .../frontend/class_UserDatabaseWrapper.php | 2 +- .../class_UserPointsDatabaseWrapper.php | 2 +- .../result/class_CachedDatabaseResult.php | 10 +- .../main/classes/points/class_UserPoints.php | 4 +- .../main/classes/user/class_BaseUser.php | 2 +- .../class_AddableCriteria.php | 0 .../class_LocalSearchCriteria.php | 0 .../class_StoreableCriteria.php | 52 ++++++---- .../class_LocalUpdateCriteria.php | 22 +++++ .../interfaces/database/class_Updateable.php | 2 +- .../wrapper/class_BookablePointsWrapper.php | 2 +- .../class_ManageableAccountWrapper.php | 2 +- 16 files changed, 156 insertions(+), 93 deletions(-) rename framework/main/interfaces/criteria/{extended => add}/class_AddableCriteria.php (100%) rename framework/main/interfaces/criteria/{extended => search}/class_LocalSearchCriteria.php (100%) rename framework/main/interfaces/criteria/{extended => store}/class_StoreableCriteria.php (79%) rename framework/main/interfaces/criteria/{extended => update}/class_LocalUpdateCriteria.php (67%) diff --git a/framework/main/classes/class_BaseFrameworkSystem.php b/framework/main/classes/class_BaseFrameworkSystem.php index 0cfc19bb..91af004f 100644 --- a/framework/main/classes/class_BaseFrameworkSystem.php +++ b/framework/main/classes/class_BaseFrameworkSystem.php @@ -5,7 +5,6 @@ namespace Org\Mxchange\CoreFramework\Object; // Import framework stuff use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap; use Org\Mxchange\CoreFramework\Criteria\Criteria; -use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria; use Org\Mxchange\CoreFramework\Crypto\Cryptable; use Org\Mxchange\CoreFramework\Database\Frontend\DatabaseWrapper; use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint; @@ -77,11 +76,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac */ private $realClass = __CLASS__; - /** - * Search criteria instance - */ - private $searchInstance = NULL; - /** * Database result instance */ @@ -478,25 +472,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->resultInstance; } - /** - * 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; - } - /** * Setter for debug instance * diff --git a/framework/main/classes/criteria/dataset/class_DataSetCriteria.php b/framework/main/classes/criteria/dataset/class_DataSetCriteria.php index b68b36f1..0547f501 100644 --- a/framework/main/classes/criteria/dataset/class_DataSetCriteria.php +++ b/framework/main/classes/criteria/dataset/class_DataSetCriteria.php @@ -4,6 +4,7 @@ namespace Org\Mxchange\CoreFramework\Criteria\DataSet; // 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; @@ -48,7 +49,12 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { /** * Primary keys */ - private $primaryKeys = array(); + private $primaryKeys = []; + + /** + * Search criteria instance + */ + private $searchInstance = NULL; /** * Protected constructor @@ -66,7 +72,7 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { * @param $tableName Name of the table * @return $criteriaInstance An instance of this criteria */ - public static final function createDataSetCriteria ($tableName) { + public static final function createDataSetCriteria (string $tableName) { // Get a new instance $criteriaInstance = new DataSetCriteria(); @@ -83,8 +89,8 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { * @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; } /** @@ -102,8 +108,8 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { * @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; } /** @@ -115,6 +121,55 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { 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 * @@ -193,34 +248,4 @@ class DataSetCriteria extends BaseCriteria implements StoreableCriteria { 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; - } - } diff --git a/framework/main/classes/criteria/update/class_UpdateCriteria.php b/framework/main/classes/criteria/update/class_UpdateCriteria.php index 3de68715..06b947c4 100644 --- a/framework/main/classes/criteria/update/class_UpdateCriteria.php +++ b/framework/main/classes/criteria/update/class_UpdateCriteria.php @@ -4,6 +4,7 @@ namespace Org\Mxchange\CoreFramework\Criteria\Update; // Import framework stuff use Org\Mxchange\CoreFramework\Criteria\BaseCriteria; +use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria; use Org\Mxchange\CoreFramework\Criteria\Local\LocalUpdateCriteria; /** @@ -31,6 +32,11 @@ use Org\Mxchange\CoreFramework\Criteria\Local\LocalUpdateCriteria; * along with this program. If not, see . */ class UpdateCriteria extends BaseCriteria implements LocalUpdateCriteria { + /** + * Search criteria instance + */ + private $searchInstance = NULL; + /** * Protected constructor * @@ -63,4 +69,23 @@ class UpdateCriteria extends BaseCriteria implements LocalUpdateCriteria { return $this->getCriteriaArray(); } + /** + * 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; + } + } diff --git a/framework/main/classes/database/backend/lfdb_legacy/class_CachedLocalFileDatabase.php b/framework/main/classes/database/backend/lfdb_legacy/class_CachedLocalFileDatabase.php index 7ba7a968..1171aab9 100644 --- a/framework/main/classes/database/backend/lfdb_legacy/class_CachedLocalFileDatabase.php +++ b/framework/main/classes/database/backend/lfdb_legacy/class_CachedLocalFileDatabase.php @@ -563,7 +563,7 @@ class CachedLocalFileDatabase extends BaseDatabaseBackend implements DatabaseBac /** * "Updates" a data set instance with a database layer * - * @param $dataSetInstance A storeable data set + * @param $dataSetInstance An instance of a StorableCriteria class * @return void * @throws SqlException If an SQL error occurs */ diff --git a/framework/main/classes/database/frontend/class_UserDatabaseWrapper.php b/framework/main/classes/database/frontend/class_UserDatabaseWrapper.php index c24a66e6..f729abeb 100644 --- a/framework/main/classes/database/frontend/class_UserDatabaseWrapper.php +++ b/framework/main/classes/database/frontend/class_UserDatabaseWrapper.php @@ -97,7 +97,7 @@ class UserDatabaseWrapper extends BaseDatabaseWrapper implements ManageableAccou /** * Updates an user database entry with given result * - * @param $resultInstance An instance of a Updateable database result + * @param $resultInstance An instance of a UpdateableResult class * @return void * @throws NullPointerException If $updateInstance or $searchInstance is null */ diff --git a/framework/main/classes/database/frontend/class_UserPointsDatabaseWrapper.php b/framework/main/classes/database/frontend/class_UserPointsDatabaseWrapper.php index dc013e70..096cb90e 100644 --- a/framework/main/classes/database/frontend/class_UserPointsDatabaseWrapper.php +++ b/framework/main/classes/database/frontend/class_UserPointsDatabaseWrapper.php @@ -96,7 +96,7 @@ class UserPointsDatabaseWrapper extends BaseDatabaseWrapper implements BookableP /** * Updates an user database entry with given result * - * @param $resultInstance An instance of a Updateable database result + * @param $resultInstance An instance of a UpdateableResult class * @return void */ public function doUpdateByResult (UpdateableResult $resultInstance) { diff --git a/framework/main/classes/database/result/class_CachedDatabaseResult.php b/framework/main/classes/database/result/class_CachedDatabaseResult.php index 9f08757b..9aca86df 100644 --- a/framework/main/classes/database/result/class_CachedDatabaseResult.php +++ b/framework/main/classes/database/result/class_CachedDatabaseResult.php @@ -277,16 +277,16 @@ class CachedDatabaseResult extends BaseDatabaseResult implements SearchableResul * Adds an update request to the database result for writing it to the * database layer * - * @param $criteriaInstance An instance of a updateable criteria + * @param $updateInstance An instance of a updateable criteria * @return void * @throws ResultUpdateException If no result was updated */ - public function add2UpdateQueue (LocalUpdateCriteria $criteriaInstance) { + public function add2UpdateQueue (LocalUpdateCriteria $updateInstance) { // Rewind the pointer $this->rewind(); // Get search criteria - $searchInstance = $criteriaInstance->getSearchInstance(); + $searchInstance = $updateInstance->getSearchInstance(); // And start looking for the result $foundEntries = $this->getAffectedRows(); @@ -298,7 +298,7 @@ class CachedDatabaseResult extends BaseDatabaseResult implements SearchableResul // Is this entry found? if ($searchInstance->ifEntryMatches($currentEntry)) { // Update this entry - $this->updateCurrentEntryByCriteria($criteriaInstance); + $this->updateCurrentEntryByCriteria($updateInstance); // Count one up $foundEntries++; @@ -315,7 +315,7 @@ class CachedDatabaseResult extends BaseDatabaseResult implements SearchableResul $this->setAffectedRows($foundEntries); // Set update instance - $this->setUpdateInstance($criteriaInstance); + $this->setUpdateInstance($updateInstance); } /** diff --git a/framework/main/classes/points/class_UserPoints.php b/framework/main/classes/points/class_UserPoints.php index 0d9c329d..b07858db 100644 --- a/framework/main/classes/points/class_UserPoints.php +++ b/framework/main/classes/points/class_UserPoints.php @@ -147,10 +147,10 @@ class UserPoints extends BaseFrameworkSystem implements Registerable, BookablePo // Do we have an entry? if ($this->getResultInstance()->next()) { // Get the entry - $entry = $this->getResultInstance()->current(); + $currentEntry = $this->getResultInstance()->current(); // Add the points - $amount += $entry[UserPointsDatabaseWrapper::DB_COLUMN_POINTS]; + $amount += $currentEntry[UserPointsDatabaseWrapper::DB_COLUMN_POINTS]; // Now get another criteria $updateInstance = ObjectFactory::createObjectByConfiguredName('update_criteria_class'); diff --git a/framework/main/classes/user/class_BaseUser.php b/framework/main/classes/user/class_BaseUser.php index 1d58dcd2..36791ab5 100644 --- a/framework/main/classes/user/class_BaseUser.php +++ b/framework/main/classes/user/class_BaseUser.php @@ -320,7 +320,7 @@ abstract class BaseUser extends BaseFrameworkSystem implements Updateable { * @return void * @todo Try to make this method more generic so we can move it in BaseFrameworkSystem */ - public function updateDatabaseField ($fieldName, $fieldValue) { + public function updateDatabaseField (string $fieldName, $fieldValue) { // Get a critieria instance $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); diff --git a/framework/main/interfaces/criteria/extended/class_AddableCriteria.php b/framework/main/interfaces/criteria/add/class_AddableCriteria.php similarity index 100% rename from framework/main/interfaces/criteria/extended/class_AddableCriteria.php rename to framework/main/interfaces/criteria/add/class_AddableCriteria.php diff --git a/framework/main/interfaces/criteria/extended/class_LocalSearchCriteria.php b/framework/main/interfaces/criteria/search/class_LocalSearchCriteria.php similarity index 100% rename from framework/main/interfaces/criteria/extended/class_LocalSearchCriteria.php rename to framework/main/interfaces/criteria/search/class_LocalSearchCriteria.php diff --git a/framework/main/interfaces/criteria/extended/class_StoreableCriteria.php b/framework/main/interfaces/criteria/store/class_StoreableCriteria.php similarity index 79% rename from framework/main/interfaces/criteria/extended/class_StoreableCriteria.php rename to framework/main/interfaces/criteria/store/class_StoreableCriteria.php index b056662b..948a3098 100644 --- a/framework/main/interfaces/criteria/extended/class_StoreableCriteria.php +++ b/framework/main/interfaces/criteria/store/class_StoreableCriteria.php @@ -4,6 +4,7 @@ namespace Org\Mxchange\CoreFramework\Criteria\Storing; // Import framework stuff use Org\Mxchange\CoreFramework\Criteria\Criteria; +use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria; /** * An interface for storeable data sets @@ -34,7 +35,7 @@ interface StoreableCriteria extends Criteria { * @param $tableName Name of the table to set * @return void */ - function setTableName ($tableName); + function setTableName (string $tableName); /** * Getter for table name @@ -49,7 +50,7 @@ interface StoreableCriteria extends Criteria { * @param $uniqueKey Column to use as unique key * @return void */ - function setUniqueKey ($uniqueKey); + function setUniqueKey (string $uniqueKey); /** * Getter for unique key @@ -58,27 +59,13 @@ interface StoreableCriteria extends Criteria { */ function getUniqueKey (); - /** - * Getter for unique key value - * - * @return $uniqueValue Value of the unique key - */ - function getUniqueValue (); - - /** - * Getter for primary key or unique key if not set - * - * @return $primaryKey Primary key or unique key if not set - */ - function getPrimaryKey (); - /** * Setter for primary key * * @param $primaryKey Primary key to set * @return void */ - function setPrimaryKey ($primaryKey); + function setPrimaryKey (string $primaryKey); /** * Setter for primary key array @@ -86,7 +73,7 @@ interface StoreableCriteria extends Criteria { * @param $primaryKeys Primary key array to set * @return void */ - function setPrimaryKeyCombined (array $primaryKeys); + public function setPrimaryKeyCombined (array $primaryKeys); /** * Getter for primary keys @@ -95,4 +82,33 @@ interface StoreableCriteria extends Criteria { */ function getPrimaryKeys (); + /** + * Setter for search instance + * + * @param $searchInstance Searchable criteria instance + * @return void + */ + function setSearchInstance (LocalSearchCriteria $searchInstance); + + /** + * Getter for search instance + * + * @return $searchInstance Searchable criteria instance + */ + function getSearchInstance (); + + /** + * Getter for unique key value + * + * @return $uniqueValue Value of the unique key + */ + function getUniqueValue (); + + /** + * Getter for primary key or unique key if not set + * + * @return $primaryKey Primary key or unique key if not set + */ + function getPrimaryKey (); + } diff --git a/framework/main/interfaces/criteria/extended/class_LocalUpdateCriteria.php b/framework/main/interfaces/criteria/update/class_LocalUpdateCriteria.php similarity index 67% rename from framework/main/interfaces/criteria/extended/class_LocalUpdateCriteria.php rename to framework/main/interfaces/criteria/update/class_LocalUpdateCriteria.php index 78edf3f6..1c332a34 100644 --- a/framework/main/interfaces/criteria/extended/class_LocalUpdateCriteria.php +++ b/framework/main/interfaces/criteria/update/class_LocalUpdateCriteria.php @@ -4,6 +4,7 @@ namespace Org\Mxchange\CoreFramework\Criteria\Local; // Import framework stuff use Org\Mxchange\CoreFramework\Criteria\Criteria; +use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria; /** * An interface for local criterias @@ -28,5 +29,26 @@ use Org\Mxchange\CoreFramework\Criteria\Criteria; * along with this program. If not, see . */ interface LocalUpdateCriteria extends Criteria { + /** + * Getter for update criteria array + * + * @return $updateCriteria Array holding the update criteria + */ + function getUpdateCriteria (); + + /** + * Setter for search instance + * + * @param $searchInstance Searchable criteria instance + * @return void + */ + function setSearchInstance (LocalSearchCriteria $searchInstance); + + /** + * Getter for search instance + * + * @return $searchInstance Searchable criteria instance + */ + function getSearchInstance (); } diff --git a/framework/main/interfaces/database/class_Updateable.php b/framework/main/interfaces/database/class_Updateable.php index 6fd756a1..a502e087 100644 --- a/framework/main/interfaces/database/class_Updateable.php +++ b/framework/main/interfaces/database/class_Updateable.php @@ -35,6 +35,6 @@ interface Updateable extends FrameworkInterface { * @param $fieldValue New value to store * @return void */ - function updateDatabaseField ($fieldName, $fieldValue); + function updateDatabaseField (string $fieldName, $fieldValue); } diff --git a/framework/main/interfaces/database/wrapper/class_BookablePointsWrapper.php b/framework/main/interfaces/database/wrapper/class_BookablePointsWrapper.php index 51d96dce..a1c65263 100644 --- a/framework/main/interfaces/database/wrapper/class_BookablePointsWrapper.php +++ b/framework/main/interfaces/database/wrapper/class_BookablePointsWrapper.php @@ -40,7 +40,7 @@ interface BookablePointsWrapper extends DatabaseWrapper { /** * Updates an user database entry with given result * - * @param $resultInstance An instance of a Updateable database result + * @param $resultInstance An instance of a UpdateableResult class * @return void */ function doUpdateByResult (UpdateableResult $resultInstance); diff --git a/framework/main/interfaces/database/wrapper/class_ManageableAccountWrapper.php b/framework/main/interfaces/database/wrapper/class_ManageableAccountWrapper.php index 556c9811..e22a5c5b 100644 --- a/framework/main/interfaces/database/wrapper/class_ManageableAccountWrapper.php +++ b/framework/main/interfaces/database/wrapper/class_ManageableAccountWrapper.php @@ -41,7 +41,7 @@ interface ManageableAccountWrapper extends DatabaseWrapper { /** * Updates an user database entry with given result * - * @param $resultInstance An instance of a Updateable database result + * @param $resultInstance An instance of a UpdateableResult class * @return void */ function doUpdateByResult (UpdateableResult $resultInstance); -- 2.39.2