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:
@@ -69,4 +69,10 @@ public class Spieler {
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof Spieler)) return false;
|
||||
return this.id == ((Spieler) o).id;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.kickerelo.kickerelo.service;
|
||||
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.InvalidDataException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.data.Ergebnis1vs1;
|
||||
import org.kickerelo.kickerelo.data.Ergebnis2vs2;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
@@ -50,63 +49,55 @@ public class KickerEloService {
|
||||
|
||||
/**
|
||||
* Enter a result of a 1 vs 1 game
|
||||
* @param gewinnerName The name of the winning player
|
||||
* @param verliererName The name of the losing player
|
||||
* @param gewinner The winning player
|
||||
* @param verlierer The losing player
|
||||
* @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) {
|
||||
// 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");
|
||||
}
|
||||
|
||||
if (gewinnerName.equals(verliererName)) {
|
||||
if (gewinner.equals(verlierer)) {
|
||||
throw new DuplicatePlayerException("winner and loser identical");
|
||||
}
|
||||
if (toreVerlierer > 9 || toreVerlierer < 0) {
|
||||
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);
|
||||
ergebnis1vs1Repository.save(ergebnis);
|
||||
|
||||
eloCalculationService.updateElo1vs1(gewinner, verlierer, toreVerlierer);
|
||||
spielerRepository.save(gewinner);
|
||||
spielerRepository.save(verlierer);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter the result of a 2 vs 2 game
|
||||
* @param gewinnerNameVorn Name of the winning offensive player
|
||||
* @param gewinnerNameHinten Name of the winning defensive player
|
||||
* @param verliererNameVorn Name of the losing offensive player
|
||||
* @param verliererNameHinten Name of the losing defensive player
|
||||
* @param gewinnerVorn winning offensive player
|
||||
* @param gewinnerHinten winning defensive player
|
||||
* @param verliererVorn losing offensive player
|
||||
* @param verliererHinten losing defensive player
|
||||
* @param toreVerlierer Number of goals of the losing team
|
||||
*/
|
||||
public void enterResult2vs2(String gewinnerNameVorn, String gewinnerNameHinten,
|
||||
String verliererNameVorn, String verliererNameHinten,
|
||||
public void enterResult2vs2(Spieler gewinnerVorn, Spieler gewinnerHinten,
|
||||
Spieler verliererVorn, Spieler verliererHinten,
|
||||
short toreVerlierer) {
|
||||
// Check if the inputs are valid
|
||||
if (gewinnerNameVorn == null || gewinnerNameHinten == null
|
||||
|| verliererNameVorn == null || verliererNameHinten == null) {
|
||||
if (gewinnerVorn == null || gewinnerHinten == null
|
||||
|| verliererVorn == null || verliererHinten == null) {
|
||||
throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein");
|
||||
}
|
||||
|
||||
if (gewinnerNameVorn.equals(gewinnerNameHinten) ||
|
||||
gewinnerNameVorn.equals(verliererNameVorn) ||
|
||||
gewinnerNameVorn.equals(verliererNameHinten) ||
|
||||
gewinnerNameHinten.equals(verliererNameVorn) ||
|
||||
gewinnerNameHinten.equals(verliererNameHinten) ||
|
||||
verliererNameVorn.equals(verliererNameHinten)) {
|
||||
if (gewinnerVorn.equals(gewinnerHinten) ||
|
||||
gewinnerVorn.equals(verliererVorn) ||
|
||||
gewinnerVorn.equals(verliererHinten) ||
|
||||
gewinnerHinten.equals(verliererVorn) ||
|
||||
gewinnerHinten.equals(verliererHinten) ||
|
||||
verliererVorn.equals(verliererHinten)) {
|
||||
throw new DuplicatePlayerException("players must not be identical");
|
||||
}
|
||||
|
||||
@@ -114,18 +105,6 @@ public class KickerEloService {
|
||||
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);
|
||||
ergebnis2vs2Repository.save(ergebnis);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.vaadin.flow.component.notification.NotificationVariant;
|
||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.component.textfield.IntegerField;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.InvalidDataException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
@@ -20,12 +21,12 @@ public class Enter1vs1View extends VerticalLayout {
|
||||
public Enter1vs1View(KickerEloService eloService) {
|
||||
H2 subheading = new H2("1 vs 1 Ergebnis");
|
||||
|
||||
ComboBox<String> winnerSelect = new ComboBox<>("Gewinner");
|
||||
winnerSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> winnerSelect = new ComboBox<>("Gewinner");
|
||||
winnerSelect.setItems(eloService.getSpielerEntities());
|
||||
winnerSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
ComboBox<String> loserSelect = new ComboBox<>("Verlierer");
|
||||
loserSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> loserSelect = new ComboBox<>("Verlierer");
|
||||
loserSelect.setItems(eloService.getSpielerEntities());
|
||||
loserSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
IntegerField loserGoals = new IntegerField("Tore des Verlierers");
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.vaadin.flow.component.notification.NotificationVariant;
|
||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.component.textfield.IntegerField;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.InvalidDataException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
@@ -19,20 +20,20 @@ public class Enter2vs2View extends VerticalLayout {
|
||||
public Enter2vs2View(KickerEloService eloService) {
|
||||
H2 subheading = new H2("2 vs 2 Ergebnis");
|
||||
|
||||
ComboBox<String> winnerFrontSelect = new ComboBox<>("Gewinner vorne");
|
||||
winnerFrontSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> winnerFrontSelect = new ComboBox<>("Gewinner vorne");
|
||||
winnerFrontSelect.setItems(eloService.getSpielerEntities());
|
||||
winnerFrontSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
ComboBox<String> winnerBackSelect = new ComboBox<>("Gewinner hinten");
|
||||
winnerBackSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> winnerBackSelect = new ComboBox<>("Gewinner hinten");
|
||||
winnerBackSelect.setItems(eloService.getSpielerEntities());
|
||||
winnerBackSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
ComboBox<String> loserFrontSelect = new ComboBox<>("Verlierer vorne");
|
||||
loserFrontSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> loserFrontSelect = new ComboBox<>("Verlierer vorne");
|
||||
loserFrontSelect.setItems(eloService.getSpielerEntities());
|
||||
loserFrontSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
ComboBox<String> loserBackSelect = new ComboBox<>("Verlierer hinten");
|
||||
loserBackSelect.setItems(eloService.getSpielerNamen());
|
||||
ComboBox<Spieler> loserBackSelect = new ComboBox<>("Verlierer hinten");
|
||||
loserBackSelect.setItems(eloService.getSpielerEntities());
|
||||
loserBackSelect.setPlaceholder("Spieler auswählen");
|
||||
|
||||
IntegerField loserGoals = new IntegerField("Tore des Verlierers");
|
||||
|
||||
Reference in New Issue
Block a user