From: Roland Haeder Date: Wed, 1 Jul 2015 00:49:12 +0000 (+0200) Subject: Renamed class + introduced BaseCityTask which expands BaseTask. This requires X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=9e9f3d45f19046eec33c9979a261224c645bb351;p=city.git Renamed class + introduced BaseCityTask which expands BaseTask. This requires that (an exception of the rules) an attribute must be defined at a 2nd location. Signed-off-by: Roland Haeder --- diff --git a/application/city/main/commands/console/class_CityConsoleDaemonCommand.php b/application/city/main/commands/console/class_CityConsoleDaemonCommand.php index a0f444b..08f564e 100644 --- a/application/city/main/commands/console/class_CityConsoleDaemonCommand.php +++ b/application/city/main/commands/console/class_CityConsoleDaemonCommand.php @@ -72,7 +72,7 @@ class CityConsoleDaemonCommand extends BaseCommand implements Commandable { self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Bootstrap finished.'); // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Add some city-specific filters, e.g. announcement $cityInstance->addExtraCityFilters(); diff --git a/application/city/main/factories/city/.htaccess b/application/city/main/factories/city/.htaccess deleted file mode 100644 index 3a42882..0000000 --- a/application/city/main/factories/city/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all diff --git a/application/city/main/factories/city/class_CityDaemonObjectFactory.php b/application/city/main/factories/city/class_CityDaemonObjectFactory.php deleted file mode 100644 index 0acfe5f..0000000 --- a/application/city/main/factories/city/class_CityDaemonObjectFactory.php +++ /dev/null @@ -1,89 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2015 City Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class CityDaemonObjectFactory extends ObjectFactory { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Returns a singleton (registry-based) CityHelper instance - * - * @param $requestInstance An instance of a class with an Requestable interface - * @param $responseInstance An instance of a class with an Responseable interface - * @return $cityInstance An instance of a CityHelper class - * @throws FactoryRequiredParameterException If not all parameters are set and no instance 'city' is set. - */ - public static final function createCityDaemonInstance (Requestable $requestInstance = NULL, Responseable $responseInstance = NULL) { - // Get new factory instance - $factoryInstance = new CityDaemonObjectFactory(); - - // If there is no handler? - if (Registry::getRegistry()->instanceExists('city')) { - // Get handler from registry - $cityInstance = Registry::getRegistry()->getInstance('city'); - } elseif (($requestInstance instanceof Requestable) && ($responseInstance instanceof Responseable)) { - // The default city-mode is from our configuration - $cityMode = $factoryInstance->getConfigInstance()->getConfigEntry('city_default_mode'); - - // Is the city 'mode' parameter set? - if ($requestInstance->isRequestElementSet('mode')) { - // Then use this which overrides the config entry temporarily - $cityMode = $requestInstance->getRequestElement('mode'); - } else { - // Set it for easier re-usage - $requestInstance->setRequestElement('mode', $cityMode); - } - - // Now convert the city-mode in a class name - $className = 'Simulation' . $factoryInstance->convertToClassName($cityMode) . 'CityDaemon'; - - // Get the city instance - $cityInstance = ObjectFactory::createObjectByName($className, array($requestInstance)); - - // Get a registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Set the app instance - $cityInstance->setApplicationInstance($applicationInstance); - - // Add city-specific filters - $cityInstance->addExtraFilters($applicationInstance->getControllerInstance(), $responseInstance); - } else { - // Throw an exception here - throw new FactoryRequiredParameterException($factoryInstance, self::EXCEPTION_FACTORY_REQUIRE_PARAMETER); - } - - // Return the instance - return $cityInstance; - } -} - -// [EOF] -?> diff --git a/application/city/main/factories/city_daemon/.htaccess b/application/city/main/factories/city_daemon/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/application/city/main/factories/city_daemon/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/application/city/main/factories/city_daemon/class_CityDaemonFactory.php b/application/city/main/factories/city_daemon/class_CityDaemonFactory.php new file mode 100644 index 0000000..ac34e8f --- /dev/null +++ b/application/city/main/factories/city_daemon/class_CityDaemonFactory.php @@ -0,0 +1,89 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2015 City Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class CityDaemonFactory extends ObjectFactory { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Returns a singleton (registry-based) CityHelper instance + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return $cityInstance An instance of a CityHelper class + * @throws FactoryRequiredParameterException If not all parameters are set and no instance 'city' is set. + */ + public static final function createCityDaemonInstance (Requestable $requestInstance = NULL, Responseable $responseInstance = NULL) { + // Get new factory instance + $factoryInstance = new CityDaemonFactory(); + + // If there is no handler? + if (Registry::getRegistry()->instanceExists('city')) { + // Get handler from registry + $cityInstance = Registry::getRegistry()->getInstance('city'); + } elseif (($requestInstance instanceof Requestable) && ($responseInstance instanceof Responseable)) { + // The default city-mode is from our configuration + $cityMode = $factoryInstance->getConfigInstance()->getConfigEntry('city_default_mode'); + + // Is the city 'mode' parameter set? + if ($requestInstance->isRequestElementSet('mode')) { + // Then use this which overrides the config entry temporarily + $cityMode = $requestInstance->getRequestElement('mode'); + } else { + // Set it for easier re-usage + $requestInstance->setRequestElement('mode', $cityMode); + } + + // Now convert the city-mode in a class name + $className = 'Simulation' . $factoryInstance->convertToClassName($cityMode) . 'CityDaemon'; + + // Get the city instance + $cityInstance = ObjectFactory::createObjectByName($className, array($requestInstance)); + + // Get a registry + $applicationInstance = Registry::getRegistry()->getInstance('app'); + + // Set the app instance + $cityInstance->setApplicationInstance($applicationInstance); + + // Add city-specific filters + $cityInstance->addExtraFilters($applicationInstance->getControllerInstance(), $responseInstance); + } else { + // Throw an exception here + throw new FactoryRequiredParameterException($factoryInstance, self::EXCEPTION_FACTORY_REQUIRE_PARAMETER); + } + + // Return the instance + return $cityInstance; + } +} + +// [EOF] +?> diff --git a/application/city/main/factories/states/city/class_CityStateFactory.php b/application/city/main/factories/states/city/class_CityStateFactory.php index 64c42d8..8332257 100644 --- a/application/city/main/factories/states/city/class_CityStateFactory.php +++ b/application/city/main/factories/states/city/class_CityStateFactory.php @@ -47,7 +47,7 @@ class CityStateFactory extends ObjectFactory { $stateInstance = self::createObjectByConfiguredName($className); // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Debug message self::createDebugInstance(__CLASS__)->debugOutput('CITY-STATE-FACTORY[' . __METHOD__ . ':' . __LINE__ . ']: City state has changed from ' . $cityInstance->getPrintableState() . ' to ' . $stateInstance->getStateName() . '.'); diff --git a/application/city/main/filter/bootstrap/init/class_CityDaemonBootstrapInitDaemonFilter.php b/application/city/main/filter/bootstrap/init/class_CityDaemonBootstrapInitDaemonFilter.php index 69c20ca..5bc30aa 100644 --- a/application/city/main/filter/bootstrap/init/class_CityDaemonBootstrapInitDaemonFilter.php +++ b/application/city/main/filter/bootstrap/init/class_CityDaemonBootstrapInitDaemonFilter.php @@ -56,7 +56,7 @@ class CityDaemonBootstrapInitDaemonFilter extends BaseCityFilter implements Filt */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Now bootstrap the daemon $cityInstance->bootstrapInitCityDaemon(); diff --git a/application/city/main/filter/city_daemon/class_CityDaemonInitializationFilter.php b/application/city/main/filter/city_daemon/class_CityDaemonInitializationFilter.php index 2a64d19..74a905e 100644 --- a/application/city/main/filter/city_daemon/class_CityDaemonInitializationFilter.php +++ b/application/city/main/filter/city_daemon/class_CityDaemonInitializationFilter.php @@ -56,7 +56,7 @@ class CityDaemonInitializationFilter extends BaseCityFilter implements Filterabl // Try to instance it by using a factory try { // Get an instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance($requestInstance, $responseInstance); + $cityInstance = CityDaemonFactory::createCityDaemonInstance($requestInstance, $responseInstance); } catch (ClassNotFoundException $e) { // This exception means, the city mode is invalid. // @TODO Can we rewrite this to app_exit() ? diff --git a/application/city/main/filter/city_daemon/class_CityDaemonWelcomeTeaserFilter.php b/application/city/main/filter/city_daemon/class_CityDaemonWelcomeTeaserFilter.php index caf11ed..d2b1533 100644 --- a/application/city/main/filter/city_daemon/class_CityDaemonWelcomeTeaserFilter.php +++ b/application/city/main/filter/city_daemon/class_CityDaemonWelcomeTeaserFilter.php @@ -56,7 +56,7 @@ class CityDaemonWelcomeTeaserFilter extends BaseCityFilter implements Filterable */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Now output the teaser $cityInstance->outputConsoleTeaser(); diff --git a/application/city/main/filter/shutdown/city/class_CityDaemonShutdownCityFilter.php b/application/city/main/filter/shutdown/city/class_CityDaemonShutdownCityFilter.php index 9a0faed..e92c27a 100644 --- a/application/city/main/filter/shutdown/city/class_CityDaemonShutdownCityFilter.php +++ b/application/city/main/filter/shutdown/city/class_CityDaemonShutdownCityFilter.php @@ -57,7 +57,7 @@ class CityDaemonShutdownCityFilter extends BaseCityFilter implements Filterable */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Shutdown the city. This should be the last line $cityInstance->doShutdown(); diff --git a/application/city/main/filter/task/city_daemon/class_CityDaemonTaskHandlerInitializerFilter.php b/application/city/main/filter/task/city_daemon/class_CityDaemonTaskHandlerInitializerFilter.php index f4b8fbf..1a0eeef 100644 --- a/application/city/main/filter/task/city_daemon/class_CityDaemonTaskHandlerInitializerFilter.php +++ b/application/city/main/filter/task/city_daemon/class_CityDaemonTaskHandlerInitializerFilter.php @@ -56,7 +56,7 @@ class CityDaemonTaskHandlerInitializerFilter extends BaseCityFilter implements F */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get city instance - $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance(); + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); // Get a new task handler instance $handlerInstance = ObjectFactory::createObjectByConfiguredName('task_handler_class'); diff --git a/application/city/main/states/city/active/class_CityActiveState.php b/application/city/main/states/city/active/class_CityActiveState.php index b3956da..cbf3b67 100644 --- a/application/city/main/states/city/active/class_CityActiveState.php +++ b/application/city/main/states/city/active/class_CityActiveState.php @@ -45,7 +45,7 @@ class CityActiveState extends BaseCityState implements Stateable { $stateInstance = new CityActiveState(); // Get city instance and set 'active' flag - CityDaemonObjectFactory::createCityDaemonInstance()->enableIsActive(); + CityDaemonFactory::createCityDaemonInstance()->enableIsActive(); // Return the prepared instance return $stateInstance; diff --git a/application/city/main/tasks/class_BaseCityTask.php b/application/city/main/tasks/class_BaseCityTask.php new file mode 100644 index 0000000..1be4e51 --- /dev/null +++ b/application/city/main/tasks/class_BaseCityTask.php @@ -0,0 +1,62 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2015 City Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class BaseCityTask extends BaseTask { + /** + * An instance of a city + */ + private $cityInstance = NULL; + + /** + * Protected constructor + * + * @param $className Name of the class + * @return void + */ + protected function __construct ($className) { + // Call parent constructor + parent::__construct($className); + } + + /** + * Getter for city instance + * + * @return $cityInstance An instance of a city city + */ + public final function getCityInstance () { + return $this->cityInstance; + } + + /** + * Setter for city instance + * + * @param $cityInstance An instance of a city city + * @return void + */ + protected final function setCityInstance (CityHelper $cityInstance) { + $this->cityInstance = $cityInstance; + } +} + +// [EOF] +?> diff --git a/application/city/main/tasks/daemon/building/class_CityDaemonBuildingGrowthTask.php b/application/city/main/tasks/daemon/building/class_CityDaemonBuildingGrowthTask.php index b133795..54d6903 100644 --- a/application/city/main/tasks/daemon/building/class_CityDaemonBuildingGrowthTask.php +++ b/application/city/main/tasks/daemon/building/class_CityDaemonBuildingGrowthTask.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class CityDaemonBuildingGrowthTask extends BaseTask implements Taskable, Visitable { +class CityDaemonBuildingGrowthTask extends BaseCityTask implements Taskable, Visitable { /** * Protected constructor * diff --git a/application/city/main/tasks/daemon/city_map/.htaccess b/application/city/main/tasks/daemon/city_map/.htaccess deleted file mode 100644 index 3a42882..0000000 --- a/application/city/main/tasks/daemon/city_map/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all diff --git a/application/city/main/tasks/daemon/city_map/class_CityDaemonMapExpanderTask.php b/application/city/main/tasks/daemon/city_map/class_CityDaemonMapExpanderTask.php deleted file mode 100644 index 6c0dad5..0000000 --- a/application/city/main/tasks/daemon/city_map/class_CityDaemonMapExpanderTask.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class CityDaemonMapExpanderTask extends BaseTask implements Taskable, Visitable { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Creates an instance of this class - * - * @return $taskInstance An instance of a Visitable class - */ - public final static function createCityDaemonMapExpanderTask () { - // Get new instance - $taskInstance = new CityDaemonMapExpanderTask(); - - // Return the prepared instance - return $taskInstance; - } - - /** - * Accepts the visitor to process the visitor - * - * @param $visitorInstance An instance of a Visitor class - * @return void - * @todo Maybe visit some sub-objects - */ - public function accept (Visitor $visitorInstance) { - // Visit this task - $visitorInstance->visitTask($this); - } - - /** - * Executes the task - * - * @return void - * @todo 0% done - */ - public function executeTask () { - $this->partialStub('Unimplemented task.'); - } - - /** - * Shuts down the task - * - * @return void - * @todo 0% done - */ - public function doShutdown () { - self::createDebugInstance(__CLASS__)->debugOutput('TASK[' . __METHOD__ . ':' . __LINE__ . ']: Shutting down...'); - } -} - -// [EOF] -?> diff --git a/application/city/main/tasks/daemon/household/class_CityDaemonHouseholdGrowthTask.php b/application/city/main/tasks/daemon/household/class_CityDaemonHouseholdGrowthTask.php index ea041ed..179a927 100644 --- a/application/city/main/tasks/daemon/household/class_CityDaemonHouseholdGrowthTask.php +++ b/application/city/main/tasks/daemon/household/class_CityDaemonHouseholdGrowthTask.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class CityDaemonHouseholdGrowthTask extends BaseTask implements Taskable, Visitable { +class CityDaemonHouseholdGrowthTask extends BaseCityTask implements Taskable, Visitable { /** * Protected constructor * diff --git a/application/city/main/tasks/daemon/map_expander/.htaccess b/application/city/main/tasks/daemon/map_expander/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/application/city/main/tasks/daemon/map_expander/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/application/city/main/tasks/daemon/map_expander/class_CityDaemonMapExpanderTask.php b/application/city/main/tasks/daemon/map_expander/class_CityDaemonMapExpanderTask.php new file mode 100644 index 0000000..4152e92 --- /dev/null +++ b/application/city/main/tasks/daemon/map_expander/class_CityDaemonMapExpanderTask.php @@ -0,0 +1,95 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class CityDaemonMapExpanderTask extends BaseCityTask implements Taskable, Visitable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this class + * + * @return $taskInstance An instance of a Visitable class + */ + public final static function createCityDaemonMapExpanderTask () { + // Get new instance + $taskInstance = new CityDaemonMapExpanderTask(); + + // Get city daemon instance + $cityInstance = CityDaemonFactory::createCityDaemonInstance(); + + // Set it here for "caching" it + $taskInstance->setCityInstance($cityInstance); + + // Return the prepared instance + return $taskInstance; + } + + /** + * Accepts the visitor to process the visitor + * + * @param $visitorInstance An instance of a Visitor class + * @return void + * @todo Maybe visit some sub-objects + */ + public function accept (Visitor $visitorInstance) { + // Visit this task + $visitorInstance->visitTask($this); + } + + /** + * Executes the task + * + * @return void + * @todo 0% done + */ + public function executeTask () { + // Get daemon instance + $cityInstance = $this->getCityInstance(); + + // Is there at least one map to expand? + if ($cityInstance->isMapPendingExpansion()) { + // Expand the map + $cityInstance->expandMaps(); + } // END - if + } + + /** + * Shuts down the task + * + * @return void + * @todo 0% done + */ + public function doShutdown () { + self::createDebugInstance(__CLASS__)->debugOutput('TASK[' . __METHOD__ . ':' . __LINE__ . ']: Shutting down...'); + } +} + +// [EOF] +?>