Merge branch 'task/tie-breaks' into develop

This commit is contained in:
Jeroen De Meerleer 2019-05-27 21:46:45 +02:00
commit e3175568a4
Signed by: JeroenED
GPG Key ID: 28CCCB8F62BFADD6
8 changed files with 126 additions and 13 deletions

27
src/Enums/Tiebreak.php Normal file
View File

@ -0,0 +1,27 @@
<?php
namespace JeroenED\Libpairtwo\Enums;
use MyCLabs\Enum\Enum;
class Tiebreak extends Enum
{
const None = "";
const Buchholz = "Buchholz";
const BuchholzMed = "Buchholz Median";
const BuchholzCut = "Buchholz Cut";
const Sonneborn = "Sonneborn-Berger";
const Kashdan = "Kashdan";
const Cumulative = "Cumulative";
const Between = "Mutual Result";
const Koya = "Koya";
const Baumbach = "Baumbach";
const Performance = "Performance";
const Aro = "Average Rating";
const AroCut = "Average Rating Cut";
const BlackPlayed = "Black played";
const BlackWin = "Black Winned";
const Testmatch = "Testmatch";
const Drawing = "Drawing of lot";
}

View File

@ -3,8 +3,6 @@
namespace JeroenED\Libpairtwo\Exceptions;
class IncompatibleReaderException Extends LibpairtwoException
class IncompatibleReaderException extends LibpairtwoException
{
}
}

View File

@ -3,8 +3,6 @@
namespace JeroenED\LibPairtwo\Exceptions;
class LibpairtwoException extends \Exception
{
}
}

View File

@ -26,6 +26,7 @@
namespace JeroenED\Libpairtwo\Models;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Enums\TournamentSystem;
use JeroenED\Libpairtwo\Player;
use DateTime;
@ -103,6 +104,9 @@ abstract class Tournament
/** @var Pairing[] */
private $Pairings;
/** @var Tiebreak[] */
private $Tiebreaks = [];
/**
* @return string
*/
@ -454,4 +458,20 @@ abstract class Tournament
{
$this->Pairings = $Pairings;
}
/**
* @return Tiebreak[]
*/
public function getTiebreaks(): array
{
return $this->Tiebreaks;
}
/**
* @param Tiebreak[] $Tiebreaks
*/
public function setTiebreaks(array $Tiebreaks): void
{
$this->Tiebreaks = $Tiebreaks;
}
}

View File

@ -26,6 +26,7 @@
namespace JeroenED\Libpairtwo\Readers;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Enums\Title;
use JeroenED\Libpairtwo\Enums\Gender;
use JeroenED\Libpairtwo\Enums\Color;
@ -218,9 +219,62 @@ class Pairtwo6 extends Pairtwo6Model implements ReaderInterface
$offset += $length;
// TieOrder
$length = 4 * 5;
$this->setBinaryData("TieOrder", $this->readData('Int', substr($swscontents, $offset, $length)));
$offset += $length;
for ($i = 0; $i < 5; $i++) {
$length = 4;
switch ($this->readData('Int', substr($swscontents, $offset, $length))) {
case 1:
$tiebreak = Tiebreak::Buchholz;
break;
case 2:
$tiebreak = Tiebreak::BuchholzMed;
break;
case 3:
$tiebreak = Tiebreak::BuchholzMed;
break;
case 4:
$tiebreak = Tiebreak::Sonneborn;
break;
case 5:
$tiebreak = Tiebreak::Kashdan;
break;
case 6:
$tiebreak = Tiebreak::Cumulative;
break;
case 7:
$tiebreak = Tiebreak::Between;
break;
case 8:
$tiebreak = Tiebreak::Koya;
break;
case 9:
$tiebreak = Tiebreak::Baumbach;
break;
case 10:
$tiebreak = Tiebreak::Performance;
break;
case 11:
$tiebreak = Tiebreak::Aro;
break;
case 12:
$tiebreak = Tiebreak::AroCut;
break;
case 13:
$tiebreak = Tiebreak::BlackPlayed;
break;
case 14:
$tiebreak = Tiebreak::Testmatch;
break;
case 15:
$tiebreak = Tiebreak::Drawing;
break;
case 0:
default:
$tiebreak = Tiebreak::None;
break;
}
$this->getTournament()->addTieBreak(new Tiebreak($tiebreak));
$offset += $length;
}
// Categorie
$length = 4 * 10;

View File

@ -26,7 +26,7 @@
namespace JeroenED\Libpairtwo;
use JeroenED\LibPairtwo\Exceptions\LibpairtwoException;
/**
* This class reads a SWS file
@ -41,13 +41,13 @@ class Sws
* Reads out $swsfile and returns a Pairtwo6 class object
*
* @param string $swsfile
* @throws LibpairtwoException
* @deprecated
*/
public static function ReadSws(string $swsfile)
{
trigger_error ( "This function is deprecated. Please convert your code to use the new pattern. More info to be found on Github (https://github.com/JeroenED/libpairtwo/wiki/Converting-your-code-to-the-generalized-format).", E_USER_DEPRECATED);
trigger_error("This function is deprecated. Please convert your code to use the new pattern. More info to be found on Github (https://github.com/JeroenED/libpairtwo/wiki/Converting-your-code-to-the-generalized-format).", E_USER_DEPRECATED);
$reader = IOFactory::createReader("Pairtwo-6");
return $reader->read($swsfile);
}
}

View File

@ -8,6 +8,7 @@
namespace JeroenED\Libpairtwo;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Models\Tournament as TournamentModel;
use JeroenED\Libpairtwo\Enums\Color;
@ -49,6 +50,18 @@ class Tournament extends TournamentModel
$this->setPlayers($newArray);
}
/**
* Adds a Tiebreak
*
* @param Tiebreak $tiebreak
*/
public function addTiebreak(Tiebreak $tiebreak)
{
$newArray = $this->getTiebreaks();
$newArray[] = $tiebreak;
$this->setTiebreaks($newArray);
}
/**
* Adds a round with given Round object
*

View File

@ -70,3 +70,6 @@ echo "Color Pairing 3: " . $sws->getTournament()->getPairings()[3]->getColor()->
echo "Player Pairing 1: " . $sws->getTournament()->getPairings()[0]->getPlayer()->getName() . PHP_EOL;
echo "Player Pairing 2: " . $sws->getTournament()->getPairings()[1]->getPlayer()->getName() . PHP_EOL;
echo "Player Pairing 3: " . $sws->getTournament()->getPairings()[2]->getPlayer()->getName() . PHP_EOL;
echo "Tiebreak 1: " . $sws->getTournament()->getTiebreaks()[0]->getValue() . PHP_EOL;
echo "Tiebreak 2: " . $sws->getTournament()->getTiebreaks()[1]->getValue() . PHP_EOL;
echo "Tiebreak 3: " . $sws->getTournament()->getTiebreaks()[2]->getValue() . PHP_EOL;