X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=application%2Fship-simu%2Fmain%2Fclass_WorksContract.php;h=80ae2eacc3a765c9f60431dd5f1f113bdda9ceda;hp=cd2f0450937712276cd6003454b166802fa0e11a;hb=55b327a3f5f2fe1d244532e07be7444e94b2a768;hpb=2fd5f8ecd793f9ec3004cf53629cc7b2c52522cc diff --git a/application/ship-simu/main/class_WorksContract.php b/application/ship-simu/main/class_WorksContract.php index cd2f045..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 @@ -49,7 +49,7 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract { $this->setObjectDescription("Bauvertrag"); // Unique-ID generieren - $this->createUniqueID(); + $this->generateUniqueId(); // Clean up a little $this->removeSystemArray(); @@ -61,18 +61,6 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract { $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(); @@ -95,21 +83,11 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract { } // 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); @@ -172,71 +150,28 @@ 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) - )); - - // Code ausfuhren - @eval($eval); + $partInstance = null; - // 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() @@ -248,24 +183,24 @@ class WorksContract extends BaseFrameworkSystem implements SignableContract { } // 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->getObjectDescription(), + $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->getObjectDescription() + $partInstance->getObjectDescription() )); } @@ -440,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]