...
Het doel van het SDD is om een gedetailleerde technische beschrijving te geven van het ontwerp van de ontwikkelde Klukkluk applicatie. Dit document bevat een schema van de databasestructuur, gepaard met diagrammen die de structuur van de Java-applicatie detailleren. Ook is dit document bedoeld voor toekomstige ontwikkelaars om een beeld te scheppen van de opbouw van de applicatie, en om gemaakte keuzes door de projectgroep toe te lichten.
Architectural Overview
<Provide a high level overview of the architectural design, for instance by means of an architectural sketch. Make sure you show at least all sub-systems, and links to external systems. The sketch can be informal. The use of UML is not required.>
Detailed Design Description
...
DTO package
De methodes die in de classes klassen zitten van de DTO package zijn niet opgenomen in het bovenstaande diagram. Dit is niet opgenomen aangezien dit alleen maar getters en setters zijn en voor de rest geen lastige methodes bevatten. De DTO's zijn de Data Transfer Objects en bestaan om de data vanuit de database over te dragen naar de applicatie. De getters en setters zijn dus nodig om de variabelen binnen de classes klassen te vullen zodat deze data gebonden kan worden aan deze classesklassen.
Entities
De Entity klassen zijn eigenlijk een soort representatie van de database. De attributen van de entity klassen moeten overeen komen met de kolommen uit de database. De repositories gebruiken deze entities om data uit de database op te halen en daarom zijn deze entities dus gemaakt. Door entities samen met JPA te gebruiken kan er makkelijker gewisseld worden tussen database systemen omdat de JPA taal zelf regelt met welk database systeem gecommuniceert wordt.
...
De mappers zijn verschillende classes klassen die inkomende objecten omzetten naar een ander type object. Neem bijvoorbeeld de CompetitionTypeManger, deze class heeft een methode genaamd setCompetitionType die een entity ontvangt en een CompetitionTypeDTO teruggeeft. Een entity is informatie direct uit de database, een DTO bevat informatie die nog naar de database moet gaan. Om deze informatie te manipuleren wordt een entity dus eerst naar een DTO omgezet zodat er binnen de applicatie mee kan worden gewerkt. Vervolgens kan dit dan weer in de database worden gezet. Om dit zo te laten werken moet er dus wel een mogelijkheid zijn om de entities om te zetten naar DTO's. Daar zijn deze classes klassen dus voor.
Repositories
De repository functies beheren alle queries die uitgevoerd moeten worden op de database. Geen van de andere klassen kunnen direct op de database queries uitvoeren. Deze klassen kunnen gebruik maken van de methodes binnen de repository klassen om deze taken uit te voeren. De klassen kunnen ook de foutmeldingen van de database afhandelen door de exceptions te gebruiken uit de exceptions package binnen ons systeem. Dit zou dan de DatabaseException zijn.
...
Binnen de applicatie is gebruik gemaakt van layered architecture, waarbij we ervoor hebben gekozen om het project in te delen in de packages die in het eerder getoonde package diagram te zien zijn. De packages zijn opgesplitst op basis van functionaliteit, waarbij de controller-klassen bijvoorbeeld bij elkaar in het app-package staan en de repositories in het repository-package. Op deze manier vonden wij het als projectgroep makkelijk om binnen het project de juiste klassen terug te vinden, en is het duidelijk waar nieuwe klassen zouden worden toegevoegd.
MVC pattern
TODO
USECASE 9 - Gegevens publiceren op website
Voor het publiceren van gegevens hebben wij gekozen om de tabellen die rokade maakt na te maken zover als dit mogelijk is. Aangezien niet elke competitietype dezelfde tabellen vereist hebben wij ervoor gezorgd dat alleen de tabellen aangemaakt worden die nodig zijn voor het geselecteerde type. Dit hebben we gedaan door gebruik te maken van een switch functie. Wanneer je een competitie meegeeft aan de publicatie service kiest deze service de goede tabellen. Daarnaast word de globale ranglijst altijd aangemaakt aangezien deze iedere keer geüpdatet moet worden wanneer er nieuwe wedstrijden zijn gespeeld.
USECASE USECASE 10 - Printen ronde indeling
...
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 klassen 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.
...