...
USECASE 10 - Printen ronde indeling
Per competitie en ronde
Per datum
Voor het uitprinten van de rondes hebben wij besloten het op een eigen pagina te zetten. Op deze pagina kan er voor twee werkwijzen gekozen worden. Er kan namelijk per competitie en per ronde een PDF gegenereerd worden of per datum.
Per competitie en ronde
Als er voor de optie wordt gekozen om de PDF te genereren per competitie en ronde wordt er voor iedere keer dat de combobox die alle competities bevat (competitionSelector) geopend en gesloten word een if statement uitgevoerd om te kijken of er een competitie is geselecteerd is of niet. Als er geen een geselecteerd is wordt automatisch de eerste optie uit de lijst gekozen. Dit is gedaan om errors te voorkomen die te maken hebben met het ophalen van de rondes. Als er namelijk geen competitie is opgehaald in de combobox is deze null. Er bestaan natuurlijk geen rondes voor een competitie die null is dus wordt er een error gegooid. Ook wordt voor dezelfde reden eerst de ronde selectie combobox (roundSelector) button uitgezet. Deze wordt aangezet als er een competitie geselecteerd is. Als de competitie geselecteerd is worden alle rondes die binnen de competitie vallen opgehaald en in de combobox neergezet. Ook worden dubbele waardes eruit gefilterd, want dit was een bug die omhoog kwam tijdens het maken van de code. Iedere keer dat dit alles gebeurd wordt eerst de ronde combobox leeggegooid zodat er geen rondes van een andere competitie in het veld blijven staan. Als alle velden ingevuld zijn en er een pad gekozen is waar het bestand opgeslagen gaat worden veranderd de button voor het genereren van de PDF van onklikbaar naar klikbaar. Vervolgens wordt er een PDF gegenereerd met deze informatie.
Per datum
Als er voor de datum optie gekozen wordt, wordt de datum meegegeven aan de generateMatchesPerDatePDF methode. Deze methode is beschikbaar door de instantie van de PDFService die de methodes bevat voor alles wat met het genereren van de PDF te maken heeft. Aan de methode moeten ook nog het pad waar het bestand opgeslagen gaat worden (pdfPath) en de datum die geselecteerd is door de gebruiker (datePicker) meegegeven worden. In de PDFService worden vervolgens binnen de generateMatchesPerDatePDF methode alle competities (competitions) en competitiegroepen opgehaald (competitionGroups). Om namelijk alle data van een dag op te halen moet dit wel gedaan worden per competitie. De wedstrijden worden zo dus per ronde, per groep en per competitie opgehaald. Dit is een stuk duidelijker dan alle data door elkaar te hebben binnen de PDF. Vervolgens worden de rondes gecontroleerd om te kijken of deze ook wel echt op de ingevoerde datum gehouden worden. Zodra de wedstrijden per group en per competitie opgehaald zijn wordt de naam van het document gegenereerd aangezien deze naam de eerder genoemde informatie nodig heeft. Voor het maken van de naam in de methode generatePDFName wordt de huidige tijd opgehaald om altijd een unieke bestandsnaam te hebben. Als deze namelijk niet uniek is wordt het vorige bestand met die naam overschreven. Vervolgens wordt er gecontroleerd of er daadwerkelijk wedstrijden zijn op de datum die ingevuld is en als dit zo is wordt er een PDF opgesteld met de drawPDF methode. Stel dat er geen rondes op de ingevoerde dag of competitiegroepen of wedstrijden zijn wordt er een melding in het scherm gebracht met een foutmelding. De drawPDF methode wordt dan ook niet aangeroepen. Iedere keer dat de drawPDF methode aangeroepen wordt telt de pdfCounter 1 bij zichzelf op. Dit is later belangrijk voor het weergeven van het aantal gegenereerde PDF's. Anders is het namelijk nogal onduidelijk of er überhaupt wel PDF's gegenereerd zijn. In de drawPDF methode wordt er met iText een PDF gegenereerd met de wedstrijddata van de eerder ingevoerde dag. Als het bestand niet aangemaakt kan worden wordt er een exceptie gegooid die aangeeft dat er geen bestand aangemaakt kan worden.
...