+++ /dev/null
-<?php
-
-// Die Haendler-Klasse
-class Merchant extends BaseFrameworkSystem {
- // Name des Haendlers
- private $merchantName = "Namenloser Händler";
-
- // Preislite (Objekte wiedermal!)
- private $priceList = null;
-
- // Zugewiesener Hafen
- private $harborInstance = null;
-
- // Konstruktor
- private function __construct () {
- // Eltern-Konstruktor aufrufen
- parent::constructor(__CLASS__);
-
- // Debug message
- if (((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) {
- $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.<br />\n",
- __CLASS__,
- __LINE__
- ));
- }
-
- // Beschreibung setzen
- $this->setPartDescr("Händler");
-
- // Unique-ID erzeugen
- $this->createUniqueID();
-
- // Clean up a little
- $this->removeSystemArray();
- }
-
- // Haendler mit Namen erzeugen
- public static function createMerchant ($merchantName, Harbor $harborInstance) {
- // String absichern
- $merchantName = (string) $merchantName;
-
- // Instanz holen
- $merchantInstance = new Merchant();
-
- // Debug message
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) {
- $merchantInstance->getDebugInstance()->output(sprintf("[%s:%d] Ein Händler <strong>%s</strong> wird angelegt und soll sich am <strong>%s</strong> niederlassen.<br />\n",
- __CLASS__,
- __LINE__,
- $merchantName,
- $harborInstance->getHarborName()
- ));
- }
-
- // Haendlernamen setzen
- $merchantInstance->setMerchantName($merchantName);
-
- // In dem angegebenen Hafen den Haendler ansiedeln
- $merchantInstance->setHarborInstance($harborInstance);
-
- // Preisliste initialisieren
- $merchantInstance->createPriceList();
-
- // Instanz zurueckliefern
- return $merchantInstance;
- }
-
- // Initialize pricing list
- private function createPriceList () {
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händler <strong>%s</strong> erhält eine leere Preisliste.<br />\n",
- __CLASS__,
- __LINE__,
- $this->getMerchantName()
- ));
- $this->priceList = new FrameworkArrayObject();
- }
-
- // Setter for merchant name
- public function setMerchantName ($merchantName) {
- // Secure string
- $merchantName = (string) $merchantName;
-
- // Debug message
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händlername <strong>%s</strong> ist nun bekannt.<br />\n",
- __CLASS__,
- __LINE__,
- $merchantName
- ));
- $this->merchantName = $merchantName;
- }
-
- // Getter for merchant name
- public function getMerchantName () {
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händlername <strong>%s</strong> wird verlangt.<br />\n",
- __CLASS__,
- __LINE__,
- $this->merchantName
- ));
- return $this->merchantName;
- }
-
- // Setter for harbor instance
- public function setHarborInstance (Harbor $harborInstance) {
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händler <strong>%s</strong> lässt sich am <strong>%s</strong> nieder.<br />\n",
- __CLASS__,
- __LINE__,
- $this->getMerchantName(),
- $harborInstance->getHarborName()
- ));
- $this->harborInstance = $harborInstance;
- }
-
- // Getter for harbor instance
- public function getHarborInstance () {
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händler <strong>%s</strong> hat sich am <strong>%s</strong> niedergelassen.<br />\n",
- __CLASS__,
- __LINE__,
- $this->getMerchantName(),
- $harborInstance->getHarborName()
- ));
- return $this->harborInstance;
- }
-
- // Add new item to merchant's price list
- public function addItemToPriceList (ItemIsTradeable $itemInstance, $price) {
- // Secure pricing
- $price = (float) $price;
-
- // Debug message
- if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Händler <strong>%s</strong> kann nun das Schiffsteil <strong>%s</strong> "<strong>%s</strong>" zu <strong>%s</strong> verkaufen.<br />\n",
- __CLASS__,
- __LINE__,
- $this->getMerchantName(),
- $itemInstance->__toString(),
- $itemInstance->getPartDescr(),
- $this->formatCurrency($price)
- ));
-
- // Construct pricing item and add it to the list
- $this->priceList->append(array(
- 'item' => $itemInstance,
- 'price' => $price
- ));
-
- // Remove price attribute
- $itemInstance->removePrice();
- }
-
- // Get a price from the merchant's list
- public function getPriceFromList (ItemIsTradeable $itemInstance) {
- $price = 0;
-
- // Iterate throw whole list
- for ($iter = $this->priceList->getIterator(); $iter->valid(); $iter->next()) {
- // Get current item
- $item = $iter->current();
-
- // Does this item match? The unique ID may not work...
- if ($item['item']->itemMatches($itemInstance)) {
- // Extract price and stop searching
- $price = $item['price'];
- break;
- }
- }
-
- // Was the item found?
- if ($price === 0) {
- // Throw exception
- throw new ItemNotInPriceListException($itemInstance, self::EXCEPTION_ITEM_NOT_IN_PRICE_LIST);
- }
-
- // Return price
- return $price;
- }
-
- /**
- * Stub!
- */
- public function saveObjectToDatabase () {
- $this->getDebugInstance()->output(sprintf("[%s:] Stub <strong>%s</strong> erreicht.",
- $this->__toString(),
- __FUNCTION__
- ));
- }
-}
-
-// [EOF]
-?>