that (an exception of the rules) an attribute must be defined at a 2nd location.
Signed-off-by: Roland Haeder <roland@mxchange.org>
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();
+++ /dev/null
-Deny from all
+++ /dev/null
-<?php
-/**
- * A factory class for cities
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @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 <http://www.gnu.org/licenses/>.
- */
-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]
-?>
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/**
+ * A factory class for cities
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @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 <http://www.gnu.org/licenses/>.
+ */
+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]
+?>
$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() . '.');
*/
public function execute (Requestable $requestInstance, Responseable $responseInstance) {
// Get city instance
- $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance();
+ $cityInstance = CityDaemonFactory::createCityDaemonInstance();
// Now bootstrap the daemon
$cityInstance->bootstrapInitCityDaemon();
// 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() ?
*/
public function execute (Requestable $requestInstance, Responseable $responseInstance) {
// Get city instance
- $cityInstance = CityDaemonObjectFactory::createCityDaemonInstance();
+ $cityInstance = CityDaemonFactory::createCityDaemonInstance();
// Now output the teaser
$cityInstance->outputConsoleTeaser();
*/
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();
*/
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');
$stateInstance = new CityActiveState();
// Get city instance and set 'active' flag
- CityDaemonObjectFactory::createCityDaemonInstance()->enableIsActive();
+ CityDaemonFactory::createCityDaemonInstance()->enableIsActive();
// Return the prepared instance
return $stateInstance;
--- /dev/null
+<?php
+/**
+ * A general CityTask class
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @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 <http://www.gnu.org/licenses/>.
+ */
+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]
+?>
* 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 CityDaemonBuildingGrowthTask extends BaseTask implements Taskable, Visitable {
+class CityDaemonBuildingGrowthTask extends BaseCityTask implements Taskable, Visitable {
/**
* Protected constructor
*
+++ /dev/null
-Deny from all
+++ /dev/null
-<?php
-/**
- * A MapExpander city daemon-task
- *
- * @author Roland Haeder <webmaster@ship-simu.org>
- * @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 <http://www.gnu.org/licenses/>.
- */
-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]
-?>
* 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 CityDaemonHouseholdGrowthTask extends BaseTask implements Taskable, Visitable {
+class CityDaemonHouseholdGrowthTask extends BaseCityTask implements Taskable, Visitable {
/**
* Protected constructor
*
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/**
+ * A map expander task for the daemon
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @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 <http://www.gnu.org/licenses/>.
+ */
+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]
+?>