...
Design Class Diagrams
App package
In de App package zitten vooral de main klassen van de applicatie zoals de MainWrapper en de Controller klassen. Om de applicatie te starten moet de main methode van de MainWrapper klasse aangroepen worden. In de Controller klassen staat alle code waarmee de front-end geregeld wordt. Voor elk scherm in de applicatie is een aparte controller gemaakt die communiceert met het front-end bestand. Op deze manier is de code van elke scherm gescheiden van elkaar.
DTO package
De methodes die in de classes 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 te vullen zodat deze data gebonden kan worden aan deze classes.
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.
Exceptions
In dit class diagram staan de exceptions die binnen het systeem gebruikt worden. De DatabaseException wordt gebruikt voor foutmeldingen die omhoogkomen bij het gebruik van de database. Naast de DatabaseException is er ook nog een ResourceException en een UserInputException. De ResourceException is net zoals de DatabaseException een RuntimeException en handelt foutmeldingen af die ontstaan door ontbrekende data. Stel dat er bijvoorbeeld een FXML bestand mist binnen de applicatie moet er wel een manier zijn om deze error op te vangen. Hierbij wordt dan dus de ResourceException gebruikt. Als laatste is er ook nog een UserInputException. Deze exception wordt gebruikt voor foutmeldingen die te maken hebben met de input die de gebruiker van de applicatie (onbedoeld) creëert. Stel dat de gebruiker een fout maakt met het invoeren van een rating, bijvoorbeeld dat deze per ongeluk wat letters invoert waar die niet de bedoeling is, dan wordt er met de UserInputException gewerkt om deze error af te handelen.
Mappers
De mappers zijn verschillende classes 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 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.
Services
De services zijn de connectie tussen de controllers en de repositories ofwel de database. Deze laag zit er tussen om bijvoorbeeld te valideren of de data wel klopt.
Utils
In de Utils package staan verschillende soorten klassen. Er is bijvoorbeeld voor gekozen om hier de RatingCalculator klasse in te zetten omdat deze niet echt bij een andere package past. De RatingCalculator is gemaakt op basis van het sequence diagram van hoofdstuk 3.5.3. Omdat het maken van de indeling voor een toernooi gebruik maakt van een aparte java applicatie moesten er een aantal klassen gemaakt worden om tussen de twee systemen te kunnen communiceren. De gemaakte communicatie klassen zijn hierdoor opgenomen in de "Swiss" package binnen de utils.
...