5
0
mirror of https://github.com/AJMicke/KickerELO.git synced 2026-03-11 13:31:02 +01:00

Use Spieler entities instead of names for Enter result views

This commit is contained in:
Anton Micke
2025-05-30 15:36:56 +02:00
parent e9cacbf0b4
commit 1a835ce3cc
4 changed files with 39 additions and 52 deletions

View File

@@ -69,4 +69,10 @@ public class Spieler {
public String toString() { public String toString() {
return this.name; return this.name;
} }
@Override
public boolean equals(Object o) {
if (!(o instanceof Spieler)) return false;
return this.id == ((Spieler) o).id;
}
} }

View File

@@ -2,7 +2,6 @@ package org.kickerelo.kickerelo.service;
import org.kickerelo.kickerelo.exception.DuplicatePlayerException; import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
import org.kickerelo.kickerelo.exception.InvalidDataException; import org.kickerelo.kickerelo.exception.InvalidDataException;
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
import org.kickerelo.kickerelo.data.Ergebnis1vs1; import org.kickerelo.kickerelo.data.Ergebnis1vs1;
import org.kickerelo.kickerelo.data.Ergebnis2vs2; import org.kickerelo.kickerelo.data.Ergebnis2vs2;
import org.kickerelo.kickerelo.data.Spieler; import org.kickerelo.kickerelo.data.Spieler;
@@ -50,63 +49,55 @@ public class KickerEloService {
/** /**
* Enter a result of a 1 vs 1 game * Enter a result of a 1 vs 1 game
* @param gewinnerName The name of the winning player * @param gewinner The winning player
* @param verliererName The name of the losing player * @param verlierer The losing player
* @param toreVerlierer The number of goals of the loser * @param toreVerlierer The number of goals of the loser
*/ */
public void enterResult1vs1(String gewinnerName, String verliererName, public void enterResult1vs1(Spieler gewinner, Spieler verlierer,
short toreVerlierer) { short toreVerlierer) {
// Check if the inputs are valid // Check if the inputs are valid
if (gewinnerName == null || verliererName == null) { if (gewinner == null || verlierer == null) {
throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein"); throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein");
} }
if (gewinnerName.equals(verliererName)) { if (gewinner.equals(verlierer)) {
throw new DuplicatePlayerException("winner and loser identical"); throw new DuplicatePlayerException("winner and loser identical");
} }
if (toreVerlierer > 9 || toreVerlierer < 0) { if (toreVerlierer > 9 || toreVerlierer < 0) {
throw new InvalidDataException("too many goals"); throw new InvalidDataException("too many goals");
} }
Spieler gewinner = spielerRepository.findByName(gewinnerName)
.orElseThrow(() -> new NoSuchPlayerException(gewinnerName));
Spieler verlierer = spielerRepository.findByName(verliererName)
.orElseThrow(() -> new NoSuchPlayerException(verliererName));
Ergebnis1vs1 ergebnis = new Ergebnis1vs1(gewinner, verlierer, toreVerlierer); Ergebnis1vs1 ergebnis = new Ergebnis1vs1(gewinner, verlierer, toreVerlierer);
ergebnis1vs1Repository.save(ergebnis); ergebnis1vs1Repository.save(ergebnis);
eloCalculationService.updateElo1vs1(gewinner, verlierer, toreVerlierer); eloCalculationService.updateElo1vs1(gewinner, verlierer, toreVerlierer);
spielerRepository.save(gewinner); spielerRepository.save(gewinner);
spielerRepository.save(verlierer); spielerRepository.save(verlierer);
} }
/** /**
* Enter the result of a 2 vs 2 game * Enter the result of a 2 vs 2 game
* @param gewinnerNameVorn Name of the winning offensive player * @param gewinnerVorn winning offensive player
* @param gewinnerNameHinten Name of the winning defensive player * @param gewinnerHinten winning defensive player
* @param verliererNameVorn Name of the losing offensive player * @param verliererVorn losing offensive player
* @param verliererNameHinten Name of the losing defensive player * @param verliererHinten losing defensive player
* @param toreVerlierer Number of goals of the losing team * @param toreVerlierer Number of goals of the losing team
*/ */
public void enterResult2vs2(String gewinnerNameVorn, String gewinnerNameHinten, public void enterResult2vs2(Spieler gewinnerVorn, Spieler gewinnerHinten,
String verliererNameVorn, String verliererNameHinten, Spieler verliererVorn, Spieler verliererHinten,
short toreVerlierer) { short toreVerlierer) {
// Check if the inputs are valid // Check if the inputs are valid
if (gewinnerNameVorn == null || gewinnerNameHinten == null if (gewinnerVorn == null || gewinnerHinten == null
|| verliererNameVorn == null || verliererNameHinten == null) { || verliererVorn == null || verliererHinten == null) {
throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein"); throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein");
} }
if (gewinnerNameVorn.equals(gewinnerNameHinten) || if (gewinnerVorn.equals(gewinnerHinten) ||
gewinnerNameVorn.equals(verliererNameVorn) || gewinnerVorn.equals(verliererVorn) ||
gewinnerNameVorn.equals(verliererNameHinten) || gewinnerVorn.equals(verliererHinten) ||
gewinnerNameHinten.equals(verliererNameVorn) || gewinnerHinten.equals(verliererVorn) ||
gewinnerNameHinten.equals(verliererNameHinten) || gewinnerHinten.equals(verliererHinten) ||
verliererNameVorn.equals(verliererNameHinten)) { verliererVorn.equals(verliererHinten)) {
throw new DuplicatePlayerException("players must not be identical"); throw new DuplicatePlayerException("players must not be identical");
} }
@@ -114,18 +105,6 @@ public class KickerEloService {
throw new InvalidDataException("too many loser goals"); throw new InvalidDataException("too many loser goals");
} }
Spieler gewinnerVorn = spielerRepository.findByName(gewinnerNameVorn)
.orElseThrow(() -> new NoSuchPlayerException(gewinnerNameVorn));
Spieler gewinnerHinten = spielerRepository.findByName(gewinnerNameHinten)
.orElseThrow(() -> new NoSuchPlayerException(gewinnerNameHinten));
Spieler verliererVorn = spielerRepository.findByName(verliererNameVorn)
.orElseThrow(() -> new NoSuchPlayerException(verliererNameVorn));
Spieler verliererHinten = spielerRepository.findByName(verliererNameHinten)
.orElseThrow(() -> new NoSuchPlayerException(verliererNameHinten));
Ergebnis2vs2 ergebnis = new Ergebnis2vs2(gewinnerVorn, gewinnerHinten, verliererVorn, verliererHinten, toreVerlierer); Ergebnis2vs2 ergebnis = new Ergebnis2vs2(gewinnerVorn, gewinnerHinten, verliererVorn, verliererHinten, toreVerlierer);
ergebnis2vs2Repository.save(ergebnis); ergebnis2vs2Repository.save(ergebnis);

View File

@@ -8,6 +8,7 @@ import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.IntegerField; import com.vaadin.flow.component.textfield.IntegerField;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import org.kickerelo.kickerelo.data.Spieler;
import org.kickerelo.kickerelo.exception.DuplicatePlayerException; import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
import org.kickerelo.kickerelo.exception.InvalidDataException; import org.kickerelo.kickerelo.exception.InvalidDataException;
import org.kickerelo.kickerelo.exception.NoSuchPlayerException; import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
@@ -20,12 +21,12 @@ public class Enter1vs1View extends VerticalLayout {
public Enter1vs1View(KickerEloService eloService) { public Enter1vs1View(KickerEloService eloService) {
H2 subheading = new H2("1 vs 1 Ergebnis"); H2 subheading = new H2("1 vs 1 Ergebnis");
ComboBox<String> winnerSelect = new ComboBox<>("Gewinner"); ComboBox<Spieler> winnerSelect = new ComboBox<>("Gewinner");
winnerSelect.setItems(eloService.getSpielerNamen()); winnerSelect.setItems(eloService.getSpielerEntities());
winnerSelect.setPlaceholder("Spieler auswählen"); winnerSelect.setPlaceholder("Spieler auswählen");
ComboBox<String> loserSelect = new ComboBox<>("Verlierer"); ComboBox<Spieler> loserSelect = new ComboBox<>("Verlierer");
loserSelect.setItems(eloService.getSpielerNamen()); loserSelect.setItems(eloService.getSpielerEntities());
loserSelect.setPlaceholder("Spieler auswählen"); loserSelect.setPlaceholder("Spieler auswählen");
IntegerField loserGoals = new IntegerField("Tore des Verlierers"); IntegerField loserGoals = new IntegerField("Tore des Verlierers");

View File

@@ -8,6 +8,7 @@ import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.IntegerField; import com.vaadin.flow.component.textfield.IntegerField;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import org.kickerelo.kickerelo.data.Spieler;
import org.kickerelo.kickerelo.exception.DuplicatePlayerException; import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
import org.kickerelo.kickerelo.exception.InvalidDataException; import org.kickerelo.kickerelo.exception.InvalidDataException;
import org.kickerelo.kickerelo.exception.NoSuchPlayerException; import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
@@ -19,20 +20,20 @@ public class Enter2vs2View extends VerticalLayout {
public Enter2vs2View(KickerEloService eloService) { public Enter2vs2View(KickerEloService eloService) {
H2 subheading = new H2("2 vs 2 Ergebnis"); H2 subheading = new H2("2 vs 2 Ergebnis");
ComboBox<String> winnerFrontSelect = new ComboBox<>("Gewinner vorne"); ComboBox<Spieler> winnerFrontSelect = new ComboBox<>("Gewinner vorne");
winnerFrontSelect.setItems(eloService.getSpielerNamen()); winnerFrontSelect.setItems(eloService.getSpielerEntities());
winnerFrontSelect.setPlaceholder("Spieler auswählen"); winnerFrontSelect.setPlaceholder("Spieler auswählen");
ComboBox<String> winnerBackSelect = new ComboBox<>("Gewinner hinten"); ComboBox<Spieler> winnerBackSelect = new ComboBox<>("Gewinner hinten");
winnerBackSelect.setItems(eloService.getSpielerNamen()); winnerBackSelect.setItems(eloService.getSpielerEntities());
winnerBackSelect.setPlaceholder("Spieler auswählen"); winnerBackSelect.setPlaceholder("Spieler auswählen");
ComboBox<String> loserFrontSelect = new ComboBox<>("Verlierer vorne"); ComboBox<Spieler> loserFrontSelect = new ComboBox<>("Verlierer vorne");
loserFrontSelect.setItems(eloService.getSpielerNamen()); loserFrontSelect.setItems(eloService.getSpielerEntities());
loserFrontSelect.setPlaceholder("Spieler auswählen"); loserFrontSelect.setPlaceholder("Spieler auswählen");
ComboBox<String> loserBackSelect = new ComboBox<>("Verlierer hinten"); ComboBox<Spieler> loserBackSelect = new ComboBox<>("Verlierer hinten");
loserBackSelect.setItems(eloService.getSpielerNamen()); loserBackSelect.setItems(eloService.getSpielerEntities());
loserBackSelect.setPlaceholder("Spieler auswählen"); loserBackSelect.setPlaceholder("Spieler auswählen");
IntegerField loserGoals = new IntegerField("Tore des Verlierers"); IntegerField loserGoals = new IntegerField("Tore des Verlierers");