contract-test.php

Go to the documentation of this file.
00001 <?php
00002 // Change directory
00003 @chdir("../..");
00004 
00005 // Set testing mode (no starter.php will be loaded!)
00006 define('TEST_MODE', true);
00007 
00008 // Load config file
00009 require(dirname(dirname(dirname(__FILE__))) . "/inc/config.php");
00010 
00011 // Load all include files
00012 require($cfg->readConfig('base_path') . 'inc/includes.php');
00013 
00014 // Load all game classes
00015 require($cfg->readConfig('base_path') . 'inc/classes.php');
00016 
00017 // Load file I/O handler
00018 require($cfg->readConfig('base_path') . 'inc/file_io.php');
00019 
00020 // Load database layer
00021 require($cfg->readConfig('base_path') . 'inc/database.php');
00022 
00023 // Set default application
00024 FrameworkConfiguration::getInstance()->setConfigEntry('default_application', 'ship-simu');
00025 $application = 'ship-simu';
00026 
00027 // Load more includes
00028 require($cfg->readConfig('base_path') . 'application/ship-simu/loader.php');
00029 
00030 // Wir tun hier so, als waere schon das Reederei-Objekt generiert und wir wollen
00031 // jetzt die Personalliste wiederherstellen
00032 try {
00033         $personell = SimulatorPersonell::createSimulatorPersonellByID('SimulatorPersonell@829292aeca3f6bf78c16e25fc4f75c98');
00034 } catch (InvalidIDFormatException $e) {
00035         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00036                 $e->getMessage()
00037         ));
00038 } catch (InvalidArrayCountException $e) {
00039         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00040                 $e->getMessage()
00041         ));
00042 } catch (NullPointerException $e) {
00043         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00044                 $e->getMessage()
00045         ));
00046 } catch (NoObjectException $e) {
00047         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00048                 $e->getMessage()
00049         ));
00050 } catch (MissingMethodException $e) {
00051         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00052                 $e->getMessage()
00053         ));
00054 } catch (FileIsEmptyException $e) {
00055         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00056                 $e->getMessage()
00057         ));
00058 } catch (FilePointerNotOpenedException $e) {
00059         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00060                 $e->getMessage()
00061         ));
00062 } catch (InvalidArrayCountException $e) {
00063         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00064                 $e->getMessage()
00065         ));
00066 } catch (InvalidMD5ChecksumException $e) {
00067         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00068                 $e->getMessage()
00069         ));
00070 } catch (InvalidDataLengthException $e) {
00071         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00072                 $e->getMessage()
00073         ));
00074 } catch (InvalidSimulatorIDException $e) {
00075         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00076                 $e->getMessage()
00077         ));
00078 } catch (MismatchingCompressorsException $e) {
00079         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00080                 $e->getMessage()
00081         ));
00082 } catch (ContainerItemIsNullException $e) {
00083         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00084                 $e->getMessage()
00085         ));
00086 } catch (ContainerItemIsNoArrayException $e) {
00087         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00088                 $e->getMessage()
00089         ));
00090 } catch (ContainerMaybeDamagedException $e) {
00091         die(sprintf("[Main:] Could  not create personal list for follwing reason: <span class=\"exception_reason\">%s</span><br />\n",
00092                 $e->getMessage()
00093         ));
00094 }
00095 
00096 // Personal-Objekt debuggen
00097 if (defined('DEBUG_PERSONELL_OBJ')) {
00098         DebugMiddleware::getInstance()->output(sprintf("The personal object looks like this:<br />
00099 <pre>%s</pre>\n",
00100                 print_r($personell, true)
00101         ));
00102 }
00103 
00104 // Hafen bauen
00105 $harbor = Harbor::createHarbor("Hamburger Hafen");
00106 
00107 // Name ausgeben
00108 DebugMiddleware::getInstance()->output(sprintf("Der <span class=\"exception_reason\">%s</span> ist gegr&uuml;ndet worden.<br />\n",
00109         $harbor->getHarborName()
00110 ));
00111 
00112 // Hafen-Objekt debuggen
00113 if (defined('DEBUG_HARBOR_OBJ')) {
00114         DebugMiddleware::getInstance()->output(sprintf("Der <span class=\"exception_reason\">%s</span> sieht wie folgt aus:<br />
00115 <pre>%s</pre>\n",
00116                 $harbor->getHarborName(),
00117                 print_r($harbor, true)
00118         ));
00119 }
00120 
00121 // Haendler gruenden
00122 $merchant = Merchant::createMerchant("Namenlos", $harbor);
00123 
00124 // Array mit Einbauten erstellen
00125 $einbauten = array(
00126         'parts' => array(                       // *** Die zu einbauenden Schiffsteile ***
00127                 'Motor' => array(        // --- Maschinenraum mit Motor ---
00128                         "Ocean-Power 2000", // Bezeichnung
00129                         20000,              // Pferdestaerken
00130                         6,                  // Anzahl Nocken
00131                         2.5, 2, 3.5         // Abmasse (Breite/Hoehe/Laenge)
00132                 ),
00133                 'Bridge' => array(       // --- Kommandobruecke ---
00134                         26, 2.5, 15         // Abmasse (Breite/Hoehe/Laenge)
00135                 ),
00136                 'CarDeck' => array(      // --- Autodecks ---
00137                         'amount' => 8,      // Anzahl Autodecks (einige liegen hintereinander im selben Deck!)
00138                         'dim'    => array(  // Abmessung (Breite/Hoehe/Laenge)
00139                                 6, 3, 16
00140                         )
00141                 ),
00142                 'TruckDeck' => array(    // --- Decks fuer LKW/Busse haben vielleicht ein anderes Belueftgungssystem, etc. ---
00143                         'amount' => 1,      // Anzahl der Decks
00144                         'dim'    => array(  // Abmessung (Breite/Hoehe/Laenge)
00145                                 8, 5, 195      // Geht durchs gesamte Schiff!
00146                         )
00147                 ),
00148                 'TrainDeck' => array(    // --- Decks fuer Zuege haben Schienen... ---
00149                         'amount' => 1,      // Anzahl der Decks
00150                         'dim'    => array(  // Abmessung (Breite/Hoehe/Laenge)
00151                                 8, 4, 195      // Geht durchs gesamte Schiff!
00152                         )
00153                 ),
00154                 'LuxuryCabin' => array(  // --- Luxuskabinen ---
00155                         'amount' => 20,     // Anzahl Luxuskabinen im Schiff
00156                         'rooms'  => 4,      // Raeume: 2 Schlafzimmer, 1 Auffenthaltszimmer, 1 Bad mit Dusche/Toilette/Waschbecken
00157                         'bed'    => 3,      // Anzahl Betten (1 Doppelbett 2 Einzelbetten, Doppel-/Einzelbetten in getrennte Raeume)
00158                         'dim' => array(     // Abmessung der Luxuskabine (Breite/Hoehe/Laenge)
00159                                 4, 3, 5
00160                         ),
00161                 ),
00162                 'PremierCabin' => array( // --- Mittlere Kabinen ---
00163                         'amount' => 40,     // Anzahl
00164                         'rooms'  => 2,      // Raeume: Schlafzimmer, Bad mit Toilette/Waschbecken
00165                         'bed'    => 2,      // Anzahl Betten (1 Doppelbett, 1 Einzelbett; gemeinsamer Raum)
00166                         'dim' => array(     // Abmessungen der Kabine (Breite/Hoehe/Laenge)
00167                                 4, 2.5, 4
00168                         )
00169                 ),
00170                 'LowCabin' => array(     // --- Untere Kabinen (befinden sich in den Unterbauten) ---
00171                         'amount' => 90,     // Anzahl
00172                         'rooms'  => 1,      // Raeume: Schlafzimmer, Waschbecken
00173                         'bed'    => 2,      // Anzahl Betten (2 Etagenbetten)
00174                         'dim' => array(     // Abmessungen der Kabine (Breite/Hoehe/Laenge)
00175                                 3, 2.5, 4
00176                         )
00177                 ),
00178                 'EconomyCabin' => array( // --- Unterste Kabinen (befinden sich tief unten im Schiffsbauch) ---
00179                         'amount' => 140,    // Anzahl
00180                         'rooms'  => 1,      // Raeume: Schlafzimmer, Waschbecken
00181                         'bed'    => 1,      // Anzahl Betten (1 Etagenbett)
00182                         'dim' => array(     // Abmessungen der Kabine (Breite/Hoehe/Laenge)
00183                                 2, 2.5, 2
00184                         )
00185                 )
00186         ),
00187         'builds' => array(            // *** Welche Oberklasse verwendet werden sollen ***
00188                 'Motor'        => "MaschineRoom",
00189                 'Bridge'       => "BaseUpperStructure",
00190                 'LuxuryCabin'  => "BaseCabin",
00191                 'PremierCabin' => "BaseCabin",
00192                 'LowCabin'     => "BaseCabin",
00193                 'EconomyCabin' => "BaseCabin",
00194                 'CarDeck'      => "BaseDeck",
00195                 'TrainDeck'    => "BaseDeck",
00196                 'TruckDeck'    => "BaseDeck"
00197         )
00198 );
00199 
00200 // Preisliste auffuellen
00201 foreach ($einbauten['parts'] as $key=>$part) {
00202         // Create item array string
00203         $item = "";
00204         foreach ($part as $idx=>$itemPart) {
00205                 if (is_string($itemPart)) {
00206                         // String found
00207                         $item .= sprintf("\"%s\", ", $itemPart);
00208                 } elseif (is_int($itemPart)) {
00209                         // Integer found
00210                         $item .= sprintf("%d, ", $itemPart);
00211                 } elseif (is_float($itemPart)) {
00212                         // Float found
00213                         $item .= sprintf("%f, ", $itemPart);
00214                 } elseif (is_array($itemPart)) {
00215                         // Sub-array found
00216                         $item .= "array(";
00217 
00218                         // Go all items through
00219                         foreach ($itemPart as $idx2=>$subPart) {
00220                                 if (is_int($subPart)) {
00221                                         // Integer again found
00222                                         $item .= sprintf("%d, ", $subPart);
00223                                 } elseif (is_float($subPart)) {
00224                                         // Float found
00225                                         $item .= sprintf("%f, ", $subPart);
00226                                 } else {
00227                                         // Unsupport part found
00228                                         die(sprintf("[Main:] Unsupported sub-array element on pos <strong>%d</strong> in array <span class=\"exception_reason\">%s</span> found: <u>%s</u>", $idx2, $idx, $subPart));
00229                                 }
00230                         }
00231 
00232                         // Remove trailing comma
00233                         $item = substr($item, 0, -2);
00234 
00235                         // Add closing bracket
00236                         $item .= "), ";
00237                 } else {
00238                         // Unsupport part found
00239                         die(sprintf("[Main:] Unsupported array element on pos <strong>%d</strong>: <u>%s</u>", $idx, $itemPart));
00240                 }
00241         }
00242 
00243         // Remove trailing comma
00244         $item = substr($item, 0, -2);
00245 
00246         // Random price
00247         $price = mt_rand(5, 12) * 10000;
00248 
00249         // Give it a try...
00250         try {
00251                 // Generate command for adding objects to a price list
00252                 $eval = sprintf("\$merchant->addItemToPriceList(%s::create%s(%s), %d);",
00253                         $key,
00254                         $key,
00255                         $item,
00256                         $price
00257                 );
00258 
00259                 // Debug message
00260                 if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) DebugMiddleware::getInstance()->output(sprintf("[Main:] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
00261                         htmlentities($eval)
00262                 ));
00263 
00264                 // Run the constructed command
00265                 eval($eval);
00266         } catch (ItemNotTradeableException $e) {
00267                 die(sprintf("[Main:] Die Preisliste des H&auml;ndlers <span class=\"exception_reason\">%s</span> kann nicht bef&uuml;llt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00268                         $merchant->getMerchantName(),
00269                         $e->getMessage()
00270                 ));
00271         }
00272 }
00273 
00274 // Haendler-Objekt debuggen
00275 if (defined('DEBUG_MERCHANT_OBJ')) {
00276         DebugMiddleware::getInstance()->output(sprintf("Der H&auml;ndler <span class=\"exception_reason\">%s</span> sieht wie folgt aus:<br />
00277 <pre>%s</pre>\n",
00278                 $merchant->getMerchantName(),
00279                 print_r($merchant, true)
00280         ));
00281 }
00282 
00283 // Reederei gruenden
00284 $shipping = ShippingCompany::createShippingCompany("Hanseatic Travel Company", $harbor);
00285 
00286 // Firmenschef setzen
00287 try {
00288         $shipping->setCompanyFounder(CompanyEmployee::createCompanyEmployee("Roland", "H&auml;der", "M", 1977, 9, 26, true, 2000));
00289 } catch (BirthdayInvalidException $e) {
00290         die(sprintf("[Main:] Reederei-Gr&uuml;nder konnte nicht gesetzt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00291                 $e->getMessage()
00292         ));
00293 }
00294 
00295 // Dann mal ausgeben...
00296 DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> ist von <strong>%s %s</strong> gegr&uuml;ndet worden.<br />\n",
00297         $shipping->getCompanyName(),
00298         $shipping->getFounderInstance()->getSurname(),
00299         $shipping->getFounderInstance()->getFamily()
00300 ));
00301 
00302 // Die Reederei stellt Personal ein und bedient sich an der $personell-Instanz
00303 try {
00304         $shipping->recruitRandomEmployees(10, $personell);
00305 } catch (ToMuchEmployeesException $e) {
00306         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal einstellen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00307                 $shipping->getCompanyName(),
00308                 $e->getMessage()
00309         ));
00310 } catch (OutOfBoundsException $e) {
00311         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal einstellen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00312                 $shipping->getCompanyName(),
00313                 $e->getMessage()
00314         ));
00315 }
00316 
00317 // Anzahl Personal ausgeben
00318 DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> hat nun <strong>%d</strong> weitere Mitarbeiter.<br />\n",
00319         $shipping->getCompanyName(),
00320         $shipping->getTotalEmployee()
00321 ));
00322 
00323 // Dann die ersten 3 Werften in den Hafen einbauen und Personal zuweisen
00324 $shipping->createShipyardInHarbor("Werft 1", $harbor);
00325 $shipping->createShipyardInHarbor("Werft 2", $harbor);
00326 $shipping->createShipyardInHarbor("Werft 3", $harbor);
00327 
00328 // In alle Werften sollen Passagierschiffe gebaut werden koennen
00329 try {
00330         $shipping->addShipTypeToAllShipyards("PassengerShip");
00331 } catch (ClassNotFoundException $e) {
00332         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> kann ihre Werften nicht besch&auml;ftigen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00333                 $shipping->getCompanyName(),
00334                 $e->getMessage()
00335         ));
00336 } catch (ClassMismatchException $e) {
00337         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> kann ihre Werften nicht besch&auml;ftigen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00338                 $shipping->getCompanyName(),
00339                 $e->getMessage()
00340         ));
00341 } catch (NoObjectException $e) {
00342         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> kann ihre Werften nicht besch&auml;ftigen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00343                 $shipping->getCompanyName(),
00344                 $e->getMessage()
00345         ));
00346 }
00347 
00348 // Personal auf die Werften verteilen
00349 try {
00350         $shipping->distributeAllPersonellOnShipyards();
00351 } catch (NoShipyardsConstructedException $e) {
00352         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal den Werften zuteilen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00353                 $shipping->getCompanyName(),
00354                 $e->getMessage()
00355         ));
00356 } catch (ClassMismatchException $e) {
00357         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal den Werften zuteilen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00358                 $shipping->getCompanyName(),
00359                 $e->getMessage()
00360         ));
00361 } catch (NullPointerException $e) {
00362         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal den Werften zuteilen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00363                 $shipping->getCompanyName(),
00364                 $e->getMessage()
00365         ));
00366 } catch (NoObjectException $e) {
00367         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte kein Personal den Werften zuteilen. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00368                 $shipping->getCompanyName(),
00369                 $e->getMessage()
00370         ));
00371 }
00372 
00373 // Normale Meldung ausgeben
00374 DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> besch&auml;ftigt nun ihre <strong>%d</strong> Mitarbeiter in <strong>%d</strong> Werft(en):<br />\n",
00375         $shipping->getCompanyName(),
00376         $shipping->getTotalEmployee(),
00377         $shipping->getTotalShipyards()
00378 ));
00379 
00380 // Dann nimmt die Reederei ihren ersten Bauauftrag entgegen.
00381 // Sie muss auch sich selber Bauauftraege erteilen!
00382 try {
00383         $shipping->addNewWorksContract(WorksContract::createWorksContract("PassengerShip", "M/S Poseidon", $shipping));
00384 } catch (ClassNotFoundException $e) {
00385         die(sprintf("[Main:] Der Bauauftrag konnte nicht erstellt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00386                 $e->getMessage()
00387         ));
00388 } catch (NullPointerException $e) {
00389         die(sprintf("[Main:] Der Bauauftrag konnte nicht erstellt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00390                 $e->getMessage()
00391         ));
00392 } catch (NoObjectException $e) {
00393         die(sprintf("[Main:] Der Bauauftrag konnte nicht erstellt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00394                 $e->getMessage()
00395         ));
00396 } catch (MissingMethodException $e) {
00397         die(sprintf("[Main:] Der Bauauftrag konnte nicht erstellt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00398                 $e->getMessage()
00399         ));
00400 } catch (EmptyStructuresListException $e) {
00401         die(sprintf("[Main:] Der Bauauftrag konnte nicht erstellt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00402                 $e->getMessage()
00403         ));
00404 }
00405 
00406 // Auftrag-Instanz holen
00407 $contract = $shipping->getLastContractInstance();
00408 
00409 // Die Reederei hat einen Haendler gewaehlt
00410 try {
00411         $shipping->setMerchantInstance($merchant);
00412 } catch (NullPointerException $e) {
00413         die(sprintf("[Main:] Der H&auml;ndler <span class=\"exception_reason\">%s</span> konnte nicht ausgew&auml;hlt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00414                 $merchant->getMerchantName(),
00415                 $e->getMessage()
00416         ));
00417 } catch (NoObjectException $e) {
00418         die(sprintf("[Main:] Der H&auml;ndler <span class=\"exception_reason\">%s</span> konnte nicht ausgew&auml;hlt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00419                 $merchant->getMerchantName(),
00420                 $e->getMessage()
00421         ));
00422 } catch (ClassMismatchException $e) {
00423         die(sprintf("[Main:] Der H&auml;ndler <span class=\"exception_reason\">%s</span> konnte nicht ausgew&auml;hlt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00424                 $merchant->getMerchantName(),
00425                 $e->getMessage()
00426         ));
00427 }
00428 
00429 // Den Bauauftrag mit der Reederei abgleichen, ob sie den Schiffstyp bauen koennen
00430 try {
00431         $typeValid = $shipping->validateWorksContractShipType($contract);
00432 } catch (NullPointerException $e) {
00433         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte den Bauauftrag nicht validieren. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00434                 $shipping->getCompanyName(),
00435                 $e->getMessage()
00436         ));
00437 } catch (NoObjectException $e) {
00438         die(sprintf("[Main:] Die Reederei <span class=\"exception_reason\">%s</span> konnte den Bauauftrag nicht validieren. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00439                 $shipping->getCompanyName(),
00440                 $e->getMessage()
00441         ));
00442 }
00443 
00444 // Kann gebaut werden?
00445 if ($typeValid) {
00446         DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> kann Schiffe vom Typ <span class=\"exception_reason\">%s</span> bauen.<br />\n",
00447                 $shipping->getCompanyName(),
00448                 $contract->getShipInstance()->getObjectDescription()
00449         ));
00450 } else {
00451         DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> kann keine Schiffe vom Typ <span class=\"exception_reason\">%s</span> bauen!<br />\n",
00452                 $shipping->getCompanyName(),
00453                 $contract->getShipInstance()->getObjectDescription()
00454         ));
00455         exit;
00456 }
00457 
00458 // Dann den Bauauftrag verfeinern
00459 foreach ($einbauten['parts'] as $key=>$part) {
00460         try {
00461                 $contract->addContractDetails($key, $einbauten['builds'][$key], $part);
00462         } catch (ShipPartNotConstructableException $e) {
00463                 // Output message
00464                 die($e->getMessage());
00465         } catch (ShipNotConstructedException $e) {
00466                 // Output message
00467                 die($e->getMessage());
00468         } catch (ItemNotInPriceListException $e) {
00469                 die(sprintf("[Main:] Der Artikel <span class=\"exception_reason\">%s</span> konnte nicht in der Preisliste gefunden werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00470                         $key,
00471                         $e->getMessage()
00472                 ));
00473         } catch (InvalidArrayCountException $e) {
00474                 die(sprintf("[Main:] Der Artikel <span class=\"exception_reason\">%s</span> konnte nicht in der Preisliste gefunden werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00475                         $key,
00476                         $e->getMessage()
00477                 ));
00478         }
00479 }
00480 
00481 // Reederei-Objekt ausgeben
00482 if (defined('DEBUG_COMPANY_OBJ')) {
00483         DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> sieht wie folgt aus:<br />
00484 <pre>%s</pre>\n",
00485                 $shipping->getCompanyName(),
00486                 print_r($shipping, true)
00487         ));
00488 }
00489 
00490 // Clean up a little
00491 unset($einbauten);
00492 unset($part);
00493 unset($eval);
00494 unset($item);
00495 unset($key);
00496 unset($typeValid);
00497 
00498 // Gesamtwert ausgeben
00499 try {
00500         $totalValue = $contract->getTotalPrice();
00501 } catch (NullPointerException $e) {
00502         die(sprintf("[Main:] Gesamtbestellwert nicht ermittelbar. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00503                 $e->getMessage()
00504         ));
00505 } catch (NoObjectException $e) {
00506         die(sprintf("[Main:] Gesamtbestellwert nicht ermittelbar. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00507                 $e->getMessage()
00508         ));
00509 } catch (MissingMethodException $e) {
00510         die(sprintf("[Main:] Gesamtbestellwert nicht ermittelbar. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00511                 $e->getMessage()
00512         ));
00513 } catch (EmptyStructuresListException $e) {
00514         die(sprintf("[Main:] Gesamtbestellwert nicht ermittelbar. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00515                 $e->getMessage()
00516         ));
00517 } catch (TotalPriceNotCalculatedException $e) {
00518         die(sprintf("[Main:] Gesamtbestellwert nicht ermittelbar. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00519                 $e->getMessage()
00520         ));
00521 }
00522 
00523 // Wert ausgeben
00524 DebugMiddleware::getInstance()->output(sprintf("Der Bau der <span class=\"exception_reason\">%s</span> wird der Reederei <span class=\"exception_reason\">%s</span> voraussichtlich <span class=\"exception_reason\">%s</span> kosten.<br />\n",
00525         $contract->getShipInstance()->getShipName(),
00526         $shipping->getCompanyName(),
00527         $contract->formatCurrency($totalValue)
00528 ));
00529 
00530 // Clean up a little
00531 unset($totalValue);
00532 
00533 // Den Bauvertrag unterschreiben (damit wird er in den Bau-Queue aufgenommen)
00534 try {
00535         $shipping->signContract($contract, $shipping);
00536 } catch (NullPointerException $e) {
00537         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00538                 $shipping->getCompanyName(),
00539                 $e->getMessage()
00540         ));
00541 } catch (NoObjectException $e) {
00542         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00543                 $shipping->getCompanyName(),
00544                 $e->getMessage()
00545         ));
00546 } catch (MissingMethodException $e) {
00547         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00548                 $shipping->getCompanyName(),
00549                 $e->getMessage()
00550         ));
00551 } catch (InvalidContractPartnerException $e) {
00552         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00553                 $shipping->getCompanyName(),
00554                 $e->getMessage()
00555         ));
00556 } catch (ContractAllreadySignedException $e) {
00557         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00558                 $shipping->getCompanyName(),
00559                 $e->getMessage()
00560         ));
00561 } catch (WrongContractPartnerException $e) {
00562         die(sprintf("[Main:] The shipping company <span class=\"exception_reason\">%s</span> was not able to sign the contract for the following reason: <span class=\"exception_reason\">%s</span><br />\n",
00563                 $shipping->getCompanyName(),
00564                 $e->getMessage()
00565         ));
00566 }
00567 
00568 // Meldung ausgeben
00569 if ($contract->isSigned()) {
00570         DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> hat den Bau der <span class=\"exception_reason\">%s</span> zugestimmt.<br />\n",
00571                 $shipping->getCompanyName(),
00572                 $contract->getShipInstance()->getShipName()
00573         ));
00574 } else {
00575         DebugMiddleware::getInstance()->output(sprintf("Die Reederei <span class=\"exception_reason\">%s</span> hat den Bau der <span class=\"exception_reason\">%s</span> abgelehnt.<br />\n",
00576                 $shipping->getCompanyName(),
00577                 $contract->getShipInstance()->getShipName()
00578         ));
00579         exit;
00580 }
00581 
00582 // Auftrag-Objekt ausgeben
00583 if (defined('DEBUG_CONTRACT_OBJ')) {
00584         DebugMiddleware::getInstance()->output(sprintf("Der Bauauftrag sieht wie folgt aus:<br />
00585 <pre>%s</pre>\n",
00586                 print_r($contract, true)
00587         ));
00588 }
00589 
00590 // Erstmal bis hier hin...
00591 //exit();
00592 
00593 // Anzahl Betten ermitteln
00594 try {
00595         $totalBeds = $contract->getShipInstance()->calcTotalBeds();
00596 } catch (StructuresOutOfBoundsException $e) {
00597         die(sprintf("[Main:] Anzahl Betten konnten nicht ermittelt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00598                 $e->getMessage()
00599         ));
00600 } catch (EmptyStructuresListException $e) {
00601         die(sprintf("[Main:] Anzahl Betten konnten nicht ermittelt werden. Grund: <span class=\"exception_reason\">%s</span><br />\n",
00602                 $e->getMessage()
00603         ));
00604 }
00605 
00606 // Bettenanzahl ausgeben
00607 DebugMiddleware::getInstance()->output(sprintf("Es stehen <strong>%d</strong> Betten zur Verf&uuml;gung.",
00608         $totalBeds
00609 ));
00610 
00611 //
00612 ?>

Generated on Mon Dec 8 01:06:46 2008 for Ship-Simulator by  doxygen 1.5.6