<?php
-
-// Die Schiffsbesatzung
+/**
+ * The general simulator personell class
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @version 0.0.0
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu 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 SimulatorPersonell extends BasePersonell {
// Personell list
private $personellList = null;
private $cacheCond = null;
/**
- * Private constructor
+ * Protected constructor
*
* @return void
*/
- private function __construct () {
- // Eltern-Konstruktor aufrufen
- parent::constructor(__CLASS__);
-
- if (((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.<br />\n",
- $this->__toString()
- ));
-
- // Set description
- $this->setPartDescr("Simulationspersonal");
-
- // Create unique ID
- $this->createUniqueID();
-
- // Clean-up a little
- $this->removeSystemArray();
+ protected function __construct () {
+ // Call parent constructor
+ parent::__construct(__CLASS__);
}
/**
*
* @param $amountPersonell Number of personell we shall
* generate
- * @return $personellInstance An instance of this object with a
+ * @return $personellInstance An instance of this object with a
* list of personells
*/
- public static function createSimulatorPersonell ($amountPersonell) {
+ public final static function createSimulatorPersonell ($amountPersonell) {
// Make sure only integer can pass
$amountPersonell = (int) $amountPersonell;
// Get a new instance
$personellInstance = new SimulatorPersonell();
- // Generate unique ID number
- $personellInstance->createUniqueID();
-
// Debug message
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->getDebugInstance()->output(sprintf("[%s:%d] Es werden <strong>%d</strong> Personal bereitgestellt.<br />\n",
+ if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->debugOutput(sprintf("[%s:%d] Es werden <strong>%d</strong> Personal bereitgestellt.",
__CLASS__,
__LINE__,
$amountPersonell
// Create requested amount of personell
for ($idx = 0; $idx < $amountPersonell; $idx++) {
- $personellInstance->addPersonell();
+ $personellInstance->addRandomPersonell();
}
// Debug message
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->getDebugInstance()->output(sprintf("[%s:%d] <strong>%d</strong> Personal bereitgestellt.<br />\n",
+ if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->debugOutput(sprintf("[%s:%d] <strong>%d</strong> Personal bereitgestellt.",
__CLASS__,
__LINE__,
$amountPersonell
* Create a SimulatorPersonell object by loading the specified personell
* list from an existing database backend
*
- * @param $idNumber The ID number (only right part) of the list
- * @return $personellInstance An instance of
- * @throws InvalidIDFormatException If the given id number
- * $idNumber is invalid
- * @throws NullPointerException If a null pointer (instance)
- * has been returned.
- * @throws NoObjectException If a non-object has been
- * returned
- * @throws MissingMethodException If a required method is missing
- * @throws MissingSimulatorIDException If an ID number was not found
+ * @param $idNumber The ID number (only right part) of the list
+ * @return $personellInstance An instance of this class
+ * @throws InvalidIDFormatException If the given id number
+ * $idNumber is invalid
+ * @throws MissingSimulatorIdException If an ID number was not found
+ * @deprecated
*/
public final static function createSimulatorPersonellByID ($idNumber) {
- // Add the class name if it was not found
- if (count(explode("@", $idNumber)) < 2) {
- // Add class name in front of the incomplete ID number
- $tempID = sprintf("%s@%s", __CLASS__, $idNumber);
- } else {
- // Use the direct ID number
- $tempID = $idNumber;
- }
-
- // Validate the ID number
- if (!preg_match(sprintf("/%s\@([a-f0-9]){32}/i", __CLASS__), $tempID)) {
- // Invalid format
- throw new InvalidIDFormatException(new SimulatorPersonell(), self::EXCEPTION_ID_IS_INVALID_FORMAT);
- }
-
// Get instance
$personellInstance = new SimulatorPersonell(false);
-
- // Get database instance
- $dbInstance = $personellInstance->getDatabaseInstance();
-
- // Is this a valid database instance?
- if (is_null($dbInstance)) {
- // No class returned
- throw new NullPointerException($personellInstance, self::EXCEPTION_IS_NULL_POINTER);
- } elseif (!is_object($dbInstance)) {
- // Not an object! ;-(
- throw new NoObjectException($dbInstance, self::EXCEPTION_IS_NO_OBJECT);
- } elseif (!method_exists($dbInstance, 'isUniqueIdUsed')) {
- // Required method not found
- throw new MissingMethodException(array($dbInstance, 'isUniqueIdUsed'), self::EXCEPTION_MISSING_METHOD);
- }
-
- // Is the unique ID already used? Then it must be there!
- if (!$dbInstance->isUniqueIdUsed($tempID)) {
- // Entry not found!
- throw new MissingSimulatorIDException(array($personellInstance, $idNumber), self::EXCEPTION_SIMULATOR_ID_INVALID);
- }
-
- // Load the personell list and add it to this object
- $personellInstance->loadPersonellList($tempID);
-
- // Clean-up a little
- $personellInstance->removeGender();
- $personellInstance->removeNames();
- $personellInstance->removeBirthday();
- $personellInstance->removeSalary();
- $personellInstance->removeEmployed();
- $personellInstance->removeMarried();
- $personellInstance->removeNumberFormaters();
- //$personellInstance->removeCache();
- $personellInstance->removeSystemArray();
-
- // Return instance
- return $personellInstance;
+ $personellInstance->makeDeprecated();
}
// Create personell list
public function createPersonellList () {
- if (is_null($this->personellList)) {
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Personell-Liste erstellt.<br />\n",
- __CLASS__,
- __LINE__
- ));
- $this->personellList = new FrameworkArrayObject();
- } else {
+ // Is the list already created?
+ if ($this->personelllList instanceof FrameworkArrayObject) {
+ // Throw an exception
throw new PersonellListAlreadyCreatedException($this, self::EXCEPTION_DIMENSION_ARRAY_INVALID);
- }
+ } // END - if
+
+ // Initialize the array
+ $this->personellList = new FrameworkArrayObject("FakedPersonellList");
}
// Remove the personell list
- private function removePersonellList () {
- if (defined('DEBUG_PERSONELL')) $this->getDebugInstance()->output(sprintf("[%s:%d] Personell-Liste entfernt.<br />\n",
- __CLASS__,
- __LINE__
- ));
+ private final function removePersonellList () {
unset($this->personellList);
}
// Add new personell object to our list
- public function addPersonell () {
+ public function addRandomPersonell () {
// Gender list...
- $genders = array('M', 'F');
+ $genders = array("M", "F");
// Create new personell members
$personellInstance = new SimulatorPersonell();
// The same (last) conditions?
if (($serialized == $this->cacheCond) && (!is_null($this->cacheCond))) {
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Gecachte Liste wird verwendet.<br />\n",
+ if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Gecachte Liste wird verwendet.",
__CLASS__,
__LINE__
));
}
// Output debug message
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Personalliste wird nach Kriterien durchsucht...<br />\n",
+ if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Personalliste wird nach Kriterien durchsucht...",
__CLASS__,
__LINE__
));
$this->setCacheCond($serialized);
// Create cached list
- $this->setAllCacheList(new FrameworkArrayObject());
+ $this->setAllCacheList(new FrameworkArrayObject('FakedCacheList'));
// Search all unemployed personells
for ($idx = $this->personellList->getIterator(); $idx->valid(); $idx->next()) {
*
* @return $count Amount of unemployed personell
*/
- public function getAllUnemployed () {
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Es werden alle erwerbslosen Personen gesucht.<br />\n",
- __CLASS__,
- __LINE__
- ));
-
+ public final function getAllUnemployed () {
// Get a temporary list
$list = $this->getSpecialPersonellList(false);
* @return void
*/
private function removeCache () {
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Cache-Attribute entfernt.<br />\n",
- __CLASS__,
- __LINE__
- ));
-
// Remove cache data
unset($this->cacheList);
unset($this->cacheCond);
* @param $cacheList The new cache list to set or null for initialization/reset
* @return void
*/
- private function setAllCacheList (FrameworkArrayObject $cacheList = null) {
+ private final function setAllCacheList (FrameworkArrayObject $cacheList = null) {
$this->cacheList = $cacheList;
}
* @param $cacheCond The new cache conditions to set
* @return void
*/
- private function setCacheCond ($cacheCond) {
+ private final function setCacheCond ($cacheCond) {
$this->cacheCond = (string) $cacheCond;
}
* @return void
*/
public function resetCache () {
- if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Cache-Liste zurückgesetzt.<br />\n",
- __CLASS__,
- __LINE__
- ));
$this->setAllCacheList(null);
$this->setCacheCond("");
}
* Getter for surname. If no surname is set then default surnames are set
* for male and female personells.
*
- * @return $surname The personell' surname
+ * @return $surname The personell' surname
*/
public final function getSurname () {
$surname = parent::getSurname();
+
// Make sure every one has a surname...
if (empty($surname)) {
if ($this->isMale()) {
// Set typical family name
parent::setFamily("Smith");
- }
- return $surname;
- }
-
- /**
- * Saves only the personell list to the database
- *
- * @return void
- */
- public function saveObjectToDatabase () {
- // Get the database
- $dbInstance = $this->getDatabaseInstance();
-
- // Prepare the limitation object. We just need the personellList array object.
- $limitInstance = ObjectLimits::createObjectLimits(array("personellList"));
-
- // Limitate the saving amount
- $dbInstance->limitObject($limitInstance);
+ } // END - if
- // Save this object
- $dbInstance->saveObject($this);
+ // Return surname
+ return $surname;
}
/**
*
* @return $personellList The list of all personells
*/
- public function getPersonellList () {
+ public final function getPersonellList () {
return $this->personellList;
}
/**
* Loads the mostly pre-cached personell list
*
- * @param $idNumber The ID number we shall use for looking up
+ * @param $idNumber The ID number we shall use for looking up
* the right data.
* @return void
- * @throws ContainerItemIsNullException If a container item is null
- * @throws ContainerItemIsNoArrayException If a container item is
- * not an array
- * @throws ContainerMaybeDamagedException If the container item
- * is missing the indexes
- * 'name' and/or 'value'
- * @see SerializationContainer A special container class which
- * helps storing only some attributes
- * of a class.
+ * @deprecated
*/
public function loadPersonellList ($idNumber) {
- // Get database instance
- $dbInstance = $this->getDatabaseInstance();
-
- // Get the serialization container within the personell list from
- // the database layer
- $containerInstance = $dbInstance->getObjectFromCachedData($idNumber);
-
- // Iterate through the whole container
- for ($idx = $containerInstance->getIterator(); $idx->valid(); $idx->next()) {
- // Get current item from container
- $item = $idx->current();
-
- // Validate it a bit
- if (is_null($item)) {
- // Is null
- throw new ContainerItemIsNullException($this, self::EXCEPTION_CONTAINER_ITEM_IS_NULL);
- } elseif (!is_array($item)) {
- // Is not an array
- throw new ContainerItemIsNoArrayException($this, self::EXCEPTION_ITEM_IS_NO_ARRAY);
- } elseif ((!isset($item['name'])) || (!isset($item['value']))) {
- // Missing elements
- throw new ContainerMaybeDamagedException($this, self::EXCEPTION_CONTAINER_MAYBE_DAMAGED);
- }
-
- // Okay, now we can get the item and generate a valid command for eval().
- // We need to convert the first letter to lower-case but keep all others intact
- $eval = sprintf("\$this->%s = \$item['value'];",
- strtolower(substr($item['name'], 0, 1))
- .
- substr($item['name'], 1)
- );
-
- // Debug message
- if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
- __CLASS__,
- __LINE__,
- htmlentities($eval)
- ));
-
- // Run the command
- @eval($eval);
- }
+ $this->makeDeprecated();
}
}