More renamed
[shipsimu.git] / application / ship-simu / main / class_WorksContract.php
index ebed5120a6bd20422328f0dc9b01431bc08602b0..bbe2f35aaad07e1fddf0156b640647d5057507bc 100644 (file)
@@ -2,11 +2,11 @@
 /**
  * The work constract class which can be used for contract parties
  *
- * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @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
+ * @link               http://www.shipsimu.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
@@ -44,19 +44,10 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
        protected function __construct () {
                // Call parent constructor
                parent::__construct(__CLASS__);
-
-               // Set description
-               $this->setObjectDescription("Bauvertrag");
-
-               // Unique-ID generieren
-               $this->generateUniqueId();
-
-               // Clean up a little
-               $this->removeSystemArray();
        }
 
        // Neuen Bauvertrag generieren
-       public final static function createWorksContract ($shipType, $shipName, ContractPartner $partnerInstance) {
+       public static final function createWorksContract ($shipType, $shipName, ContractPartner $partnerInstance) {
                // Strings absichern
                $shipType = (string) $shipType;
                $shipName = (string) $shipName;
@@ -64,22 +55,13 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                // Get new instance
                $contractInstance = new WorksContract();
 
-               // Debug-Meldung ausgeben
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $contractInstance->getDebugInstance()->output(sprintf("[%s:%d] Neuer Bauvertrag wird f&uuml;r das Schiff <strong>%s</strong> mit der <strong>%s</strong> <strong>%s</strong> erstellt.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $shipName,
-                       $partnerInstance->getObjectDescription(),
-                       $partnerInstance->getCompanyName()
-               ));
-
                // Schiffsnamen setzen
                $contractInstance->setShipName($shipName);
 
                // Existiert die Klasse ueberhaupt?
                if (!class_exists($shipType)) {
                        // Klasse nicht gefunden
-                       throw new ClassNotFoundException ($shipType, self::EXCEPTION_CLASS_NOT_FOUND);
+                       throw new NoClassException ($shipType, self::EXCEPTION_CLASS_NOT_FOUND);
                }
 
                // Schiff-Instanz temporaer erzeugen und in den Bauvertrag einfuegen
@@ -98,40 +80,21 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
 
        // Setter for ship instance
        private final function setShipInstance (ConstructableShip $shipInstance) {
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff <strong>%s</strong> wird in den Bauvertrag aufgenommen.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $shipInstance->getShipName()
-               ));
                $this->shipInstance = $shipInstance;
        }
 
        // Setter for ship name
        private final function setShipName ($shipName) {
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das neue Schiff wird <strong>%s</strong> heissen.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $shipName
-               ));
                $this->shipName = (string) $shipName;
        }
 
        // Getter for ship name
        public final function getShipName () {
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Schiffsname <strong>%s</strong> angefordert.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->shipName
-               ));
                return $this->shipName;
        }
 
        // Getter for ship instance
        public final function getShipInstance () {
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Schiff-Instanz angefordert.<br />\n",
-                       __CLASS__,
-                       __LINE__
-               ));
                return $this->shipInstance;
        }
 
@@ -142,7 +105,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                $parentPart = (string) $parentPart;
 
                // Debug message
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiffsteil <strong>%s</strong> wird zusammen mit dem Konstruktionsteil <strong>%s</strong> in den Bauvertrag aufgenommen.<br />\n",
+               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiffsteil <strong>%s</strong> wird zusammen mit dem Konstruktionsteil <strong>%s</strong> in den Bauvertrag aufgenommen.",
                        __CLASS__,
                        __LINE__,
                        $shipPart,
@@ -156,13 +119,13 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                try {
                        $partInstance = ObjectFactory::createObjectByName($shipPart, $dataArray);
                } catch (DimNotFoundInArrayException $e) {
-                       $this->getDebugInstance()->output(sprintf("[main:] Die <strong>%s</strong> konnte nicht vervollst&auml;ndigt werden. Grund: <strong>%s</strong><br />",
+                       $this->debugOutput(sprintf("[main:] Die <strong>%s</strong> konnte nicht vervollst&auml;ndigt werden. Grund: <strong>%s</strong><br />",
                                $this->getShipInstance()->getShipName(),
                                $e->getMessage()
                        ));
 
                        // Debug message
-                       if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Versuche ein Schiffsteil in den Bauvertrag aufzunehmen.<br />\n",
+                       if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Versuche ein Schiffsteil in den Bauvertrag aufzunehmen.",
                                __CLASS__,
                                __LINE__
                        ));
@@ -171,37 +134,22 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                        if (!$partInstance instanceof ConstructableShipPart) {
                                // Ship part not constructable!
                                throw new ShipPartNotConstructableException(array($shipPart), self::EXCEPTION_NOT_CONSTRUCTABLE);
-                       } elseif (!$this->getShipInstance()->createShipPart($partInstance, $parentPart)) {
+                       } elseif ($this->getShipInstance()->createShipPart($partInstance, $parentPart) === false) {
                                // Schiff konnte nicht gebaut werden!
                                throw new ShipNotConstructedException(sprintf("Das Schiff <strong>%s</strong> konnte wegen eines Fehlers nicht gebaut werden. Siehe obere Meldungen.",
                                        $this->getShipInstance()->getShipName()
                                ));
                        }
-               } catch (ClassNotFoundException $e) {
+               } catch (NoClassException $e) {
                        // Throw it again...
-                       throw new ClassNotFoundException($e->getMessage(), $e->getCode());
+                       throw new NoClassException($e->getMessage(), $e->getCode());
                }
 
                // Get price for this item
                $price = $this->getMerchantInstance()->getPriceFromList($partInstance);
 
-               // Final debug message
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] <strong>%s</strong> kostet <strong>%s</strong>.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $partInstance->getObjectDescription(),
-                       $this->getMerchantInstance()->formatCurrency($price)
-               ));
-
                // Add price
                $partInstance->setPrice($price);
-
-               // Final debug message
-               if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] <strong>%s</strong> wurde in den Bauvertrag aufgenommen.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $partInstance->getObjectDescription()
-               ));
        }
 
        // Setter for contract partner
@@ -258,7 +206,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) {
                        if ($partnerInstance->equals($partyInstance)) {
                                // With itself
-                               $this->getDebugInstance()->output(sprintf("[%s:%d] Die <strong>%s</strong> <em><strong>%s</strong></em> stimmt einem Bauvertrag &uuml;ber das <strong>%s</strong> <em><strong>%s</strong></em> zu.<br />\n",
+                               $this->debugOutput(sprintf("[%s:%d] Die <strong>%s</strong> <em><strong>%s</strong></em> stimmt einem Bauvertrag &uuml;ber das <strong>%s</strong> <em><strong>%s</strong></em> zu.",
                                        __CLASS__,
                                        __LINE__,
                                        $partnerInstance->getObjectDescription(),
@@ -268,7 +216,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                                ));
                        } else {
                                // Other contract party
-                               $this->getDebugInstance()->output(sprintf("[%s:%d] Die <strong>%s</strong> <em><strong>%s</strong></em> geht mit der <strong>%s</strong> <em><strong>%s</strong></em> einen Bauvertrag &uuml;ber das <strong>%s</strong> <em><strong>%s</strong></em> ein.<br />\n",
+                               $this->debugOutput(sprintf("[%s:%d] Die <strong>%s</strong> <em><strong>%s</strong></em> geht mit der <strong>%s</strong> <em><strong>%s</strong></em> einen Bauvertrag &uuml;ber das <strong>%s</strong> <em><strong>%s</strong></em> ein.",
                                        __CLASS__,
                                        __LINE__,
                                        $partnerInstance->getObjectDescription(),
@@ -303,7 +251,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                        throw new NullPointerException($shipInstance, self::EXCEPTION_IS_NULL_POINTER);
                } elseif (!is_object($shipInstance)) {
                        // Not an object! ;-(
-                       throw new NoObjectException($shipInstance, self::EXCEPTION_IS_NO_OBJECT);
+                       throw new InvalidObjectException($shipInstance, self::EXCEPTION_IS_NO_OBJECT);
                } elseif (!$shipInstance instanceof ConstructableShip) {
                        // Does not have the required feature (method)
                        throw new ShipIsInvalidException(array($shipInstance), self::EXCEPTION_INVALID_SHIP_INSTANCE);
@@ -332,8 +280,8 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                                throw new NullPointerException($item, self::EXCEPTION_IS_NULL_POINTER);
                        } elseif (!is_object($item)) {
                                // Not an object! ;-(
-                               throw new NoObjectException($item, self::EXCEPTION_IS_NO_OBJECT);
-                       } elseif (!method_exists($item, 'getPartInstance')) {
+                               throw new InvalidObjectException($item, self::EXCEPTION_IS_NO_OBJECT);
+                       } elseif (!$item instanceof BaseSimulator) {
                                // Does not have the required feature (method)
                                throw new MissingMethodException(array($item, 'getPartInstance'), self::EXCEPTION_MISSING_METHOD);
                        }
@@ -347,7 +295,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
                                throw new NullPointerException($part, self::EXCEPTION_IS_NULL_POINTER);
                        } elseif (!is_object($part)) {
                                // Not an object! ;-(
-                               throw new NoObjectException($part, self::EXCEPTION_IS_NO_OBJECT);
+                               throw new InvalidObjectException($part, self::EXCEPTION_IS_NO_OBJECT);
                        } elseif (!method_exists($part, 'getPrice')) {
                                // Does not have the required feature (method)
                                throw new MissingMethodException(array($part, 'getPrice'), self::EXCEPTION_MISSING_METHOD);