X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fship-simu%2Fmain%2Fclass_WorksContract.php;h=80ae2eacc3a765c9f60431dd5f1f113bdda9ceda;hb=c983485aaafb177a8dd366a7f7c0fd5db6720d55;hp=0504fa59a5d470c94f3e63cef8adbc742ca63c5b;hpb=2a157996efd680b87b0a84cc95b91619ea6e81d9;p=shipsimu.git
diff --git a/application/ship-simu/main/class_WorksContract.php b/application/ship-simu/main/class_WorksContract.php
index 0504fa5..80ae2ea 100644
--- a/application/ship-simu/main/class_WorksContract.php
+++ b/application/ship-simu/main/class_WorksContract.php
@@ -6,7 +6,7 @@
* @version 0.0.0
* @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @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
@@ -19,7 +19,7 @@
* 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 .
+ * along with this program. If not, see .
*/
class WorksContract extends BaseFrameworkSystem implements SignableContract {
// Zukuenftiger Schiffsname
@@ -41,46 +41,26 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
private $merchantInstance = null;
// Konstruktor
- private function __construct () {
+ protected function __construct () {
// Call parent constructor
- parent::constructor(__CLASS__);
-
- // Debug message
- if (((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) {
- $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.
\n",
- __CLASS__,
- __LINE__
- ));
- }
+ parent::__construct(__CLASS__);
// Set description
- $this->setPartDescr("Bauvertrag");
+ $this->setObjectDescription("Bauvertrag");
// Unique-ID generieren
- $this->createUniqueID();
+ $this->generateUniqueId();
// Clean up a little
$this->removeSystemArray();
}
// Neuen Bauvertrag generieren
- public static function createWorksContract ($shipType, $shipName, ContractPartner $partnerInstance) {
+ public final static function createWorksContract ($shipType, $shipName, ContractPartner $partnerInstance) {
// Strings absichern
$shipType = (string) $shipType;
$shipName = (string) $shipName;
- // Is the other one a contract partner?
- if (is_null($partnerInstance)) {
- // Opps! Empty partner instance?
- throw new NullPointerException($partnerInstance, self::EXCEPTION_IS_NULL_POINTER);
- } elseif (!is_object($partnerInstance)) {
- // Not an object! ;-(
- throw new NoObjectException($partnerInstance, self::EXCEPTION_IS_NO_OBJECT);
- } elseif (!method_exists($partnerInstance, 'isContractPartner')) {
- // Does not have the required feature (method)
- throw new MissingMethodException(array($partnerInstance, 'isContractPartner'), self::EXCEPTION_MISSING_METHOD);
- }
-
// Get new instance
$contractInstance = new WorksContract();
@@ -89,7 +69,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
__CLASS__,
__LINE__,
$shipName,
- $partnerInstance->getPartDescr(),
+ $partnerInstance->getObjectDescription(),
$partnerInstance->getCompanyName()
));
@@ -99,25 +79,15 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
// Existiert die Klasse ueberhaupt?
if (!class_exists($shipType)) {
// Klasse nicht gefunden
- throw new ClassNotFoundException ($shipType, 0);
+ throw new ClassNotFoundException ($shipType, self::EXCEPTION_CLASS_NOT_FOUND);
}
// Schiff-Instanz temporaer erzeugen und in den Bauvertrag einfuegen
- $eval = sprintf("\$contractInstance->setShipInstance(%s::create%s(\"%s\"));",
- $shipType,
- $shipType,
- $shipName
- );
+ $shipInstance = ObjectFactory::createObjectByName($shipType, array($shipName));
+ $contractInstance->setShipInstance($shipInstance);
- // Debug message
- if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $contractInstance->getDebugInstance()->output(sprintf("[%s:%d] Konstruierte PHP-Anweisung:
%s
\n",
- __CLASS__,
- __LINE__,
- htmlentities($eval)
- ));
-
- // Execute constructed command
- @eval($eval);
+ // Remove the ship instance
+ unset($shipInstance);
// Set itself as contract partner
$contractInstance->setContractPartner($partnerInstance);
@@ -127,7 +97,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
}
// Setter for ship instance
- private function setShipInstance (ConstructableShip $shipInstance) {
+ private final function setShipInstance (ConstructableShip $shipInstance) {
if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s wird in den Bauvertrag aufgenommen.
\n",
__CLASS__,
__LINE__,
@@ -137,7 +107,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
}
// Setter for ship name
- private function setShipName ($shipName) {
+ private final function setShipName ($shipName) {
if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das neue Schiff wird %s heissen.
\n",
__CLASS__,
__LINE__,
@@ -180,100 +150,57 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
));
// Initialize the instance (shall not be done within dynamic part)
- $instance = null;
-
- // Prepare the big command for everthing
- $eval = "try {
- \$instance = ".$shipPart."::create".$shipPart."(";
- foreach ($dataArray as $pIdx => $parts) {
- if (is_string($parts)) {
- // String einbauen
- $eval .= "\"".$parts."\", ";
- } elseif (is_array($parts)) {
- // Ist ein weiteres Array!
- $eval .= "array(";
- foreach ($parts as $idx2 => $sub) {
- $eval .= "'".$idx2."' => ";
- if (is_string($sub)) {
- // Ist erneut ein String
- $eval .= "\"".$sub."\"";
- } elseif (is_array($sub)) {
- // Wird nicht mehr unterstuetzt!
- ApplicationEntryPoint::app_die("No more arrays!");
- } else {
- // Direkt anhaengen
- $eval .= $sub;
- }
- $eval .= ", ";
- }
-
- // Letztes Komma entfernen
- $eval = substr($eval, 0, -2);
- $eval .= "), ";
- } else {
- // Etwas anderes direkt!
- $eval .= $parts.", ";
- }
- }
-
- // Letztes Komma abhaengen
- $eval = substr($eval, 0, -2);
- $eval .= ");
-} catch (DimNotFoundInArrayException \$e) {
- \$this->getDebugInstance()->output(sprintf(\"[main:] Die %s konnte nicht vervollständigt werden. Grund: %s
\\n\",
- \$this->getShipInstance()->getShipName(),
- \$e->getMessage()
- ));
- \$instance = null;
-}";
-
- // Debug message
- if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Ship:] Konstruierte PHP-Anweisung: %s
\n",
- htmlentities($eval)
- ));
+ $partInstance = null;
- // Code ausfuhren
- @eval($eval);
-
- // Try to add the ship part to the contract
+ // Try to get an instance for this ship part
try {
+ $partInstance = ObjectFactory::createObjectByName($shipPart, $dataArray);
+ } catch (DimNotFoundInArrayException $e) {
+ $this->getDebugInstance()->output(sprintf("[main:] Die %s konnte nicht vervollständigt werden. Grund: %s
",
+ $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.
\n",
__CLASS__,
__LINE__
));
- if (!$instance instanceof ConstructableShipPart) {
+
+ // Is this ship part constructable?
+ if (!$partInstance instanceof ConstructableShipPart) {
// Ship part not constructable!
throw new ShipPartNotConstructableException(array($shipPart), self::EXCEPTION_NOT_CONSTRUCTABLE);
- } elseif (!$this->getShipInstance()->createShipPart($instance, $parentPart)) {
+ } elseif (!$this->getShipInstance()->createShipPart($partInstance, $parentPart)) {
// Schiff konnte nicht gebaut werden!
throw new ShipNotConstructedException(sprintf("Das Schiff %s konnte wegen eines Fehlers nicht gebaut werden. Siehe obere Meldungen.",
$this->getShipInstance()->getShipName()
));
}
- } catch(ClassNotFoundException $e) {
+ } catch (ClassNotFoundException $e) {
// Throw it again...
throw new ClassNotFoundException($e->getMessage(), $e->getCode());
}
// Get price for this item
- $price = $this->getMerchantInstance()->getPriceFromList($instance);
+ $price = $this->getMerchantInstance()->getPriceFromList($partInstance);
// Final debug message
if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %s kostet %s.
\n",
__CLASS__,
__LINE__,
- $instance->getPartDescr(),
+ $partInstance->getObjectDescription(),
$this->getMerchantInstance()->formatCurrency($price)
));
// Add price
- $instance->setPrice($price);
+ $partInstance->setPrice($price);
// Final debug message
if ((defined('DEBUG_CONTRACT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %s wurde in den Bauvertrag aufgenommen.
\n",
__CLASS__,
__LINE__,
- $instance->getPartDescr()
+ $partInstance->getObjectDescription()
));
}
@@ -334,9 +261,9 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
$this->getDebugInstance()->output(sprintf("[%s:%d] Die %s %s stimmt einem Bauvertrag über das %s %s zu.
\n",
__CLASS__,
__LINE__,
- $partnerInstance->getPartDescr(),
+ $partnerInstance->getObjectDescription(),
$partnerInstance->getCompanyName(),
- $this->getShipInstance()->getPartDescr(),
+ $this->getShipInstance()->getObjectDescription(),
$this->getShipInstance()->getShipName()
));
} else {
@@ -344,11 +271,11 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
$this->getDebugInstance()->output(sprintf("[%s:%d] Die %s %s geht mit der %s %s einen Bauvertrag über das %s %s ein.
\n",
__CLASS__,
__LINE__,
- $partnerInstance->getPartDescr(),
+ $partnerInstance->getObjectDescription(),
$partnerInstance->getCompanyName(),
- $partyInstance->getPartDescr(),
+ $partyInstance->getObjectDescription(),
$partyInstance->getCompanyName(),
- $this->getShipInstance()->getPartDescr(),
+ $this->getShipInstance()->getObjectDescription(),
$this->getShipInstance()->getShipName()
));
}
@@ -448,16 +375,6 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract {
// Return total price
return $totalPrice;
}
-
- /**
- * Stub!
- */
- public function saveObjectToDatabase () {
- $this->getDebugInstance()->output(sprintf("[%s:] Stub %s erreicht.",
- $this->__toString(),
- __FUNCTION__
- ));
- }
}
// [EOF]