Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Daarna worden de matches uit de geretourneerde layout gehaald om deze op te zetten in de database.

Toernooi

Om een toernooi in te delen is er veel data nodig, waaronder de spelers, het aantal rondes dat gespeelt kan worden, de matches die voor de huidige matches gespeeld zijn, en de ronde die ingedeeld moet worden. Van deze data maakt het een lijst van matches met de spelers die meedoen, de ronde waarin de matches plaatsvinden, de groep waartoe de spelers behoren, en eventuele resultaten die al duidelijk zijn (bij oneven spelers die een bye krijgen).

Het deelt deze spelers in met behulp van de JaVaFo api. Alles dat de layoutStrategy doet is in feite het veranderen van PlayerDTOs en MatchDTOs naar iets dat de JaVaFo api kan begrijpen:

Eerst sorteert het de spelers op rating, zodat de rangorde juist is, en in de eerste ronde de juiste spelers prioriteit geeft. Vervolgens vertaalt het de matchDTOs naar individuele matchresultaten voor de 2 spelers, vanwege de eisen van JaVaFo. Als het een bye tegenkomt (blackPlayer is null) maakt het er maar een matchresultaat van. Vervolgens berekent het de score om door te geven aan JaVaFo. Dit was nodig voor de matchmaking volgens Fide

Het resultaat dat uit JaVaFo komt wordt vervolgens weer vertaald naar matchDTOs met een andere mapper.

Deze indelingstrategie moet voor elke ronde uitgevoerd worden, maar alleen als de resultaten van de vorige match al duidelijk is. Als het voor JaVaFo onmogelijk is om een ronde te genereren (aantal spelers/2 > aantal rondes) of het maximaal aantal rondes in de competitionDTO wordt overschreden gooit de API een RuntimeException.tekst

Overig

JaVaFo

Voor het genereren van een competitionlayout van een toernooi is een extern programma gebruikt, omdat het genereren van een zwitserse indeling wellicht te foutgevoelig zou zijn als het geprogrammeerd werd door iemand die niet volledig thuis is in het domein. JaVaFo, gemaakt door Roberto Ricca, is een in Java geprogrammeerde matchmaking software. Het heeft als input een document nodig dat specifiek is aan de schaakorganisatie Fide (.trf). Om dit te genereren zijn er een aantal classes aangemaakt om dit te regelen. "DocumentMaker" kan met wat speciale DTOs waar de data in is opgeslagen een string genereren waarmee JaVaFo een indeling kan maken.  "JaVaFoDocuPlayer" en "JaVaFoDocuResult" zijn DTO's om de data van spelers en ronderesultaten op te slaan. JaVaFo maakt van de input van DocumentMaker een output string die vervolgens vertaald kan worden naar match DTO's.

...