mirror of
https://github.com/AJMicke/KickerELO.git
synced 2026-03-11 13:31:02 +01:00
Add input checks for player names and duplicates.
This commit is contained in:
@@ -9,6 +9,7 @@ import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.component.textfield.IntegerField;
|
||||
import com.vaadin.flow.component.textfield.TextField;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.service.KickerEloService;
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.kickerelo.kickerelo.exception;
|
||||
|
||||
public class DuplicatePlayerException extends RuntimeException {
|
||||
public DuplicatePlayerException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.kickerelo.kickerelo;
|
||||
package org.kickerelo.kickerelo.exception;
|
||||
|
||||
public class NoSuchPlayerException extends RuntimeException {
|
||||
public NoSuchPlayerException(String message) {
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.kickerelo.kickerelo.exception;
|
||||
|
||||
public class PlayerNameNotSetException extends RuntimeException {
|
||||
public PlayerNameNotSetException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package org.kickerelo.kickerelo.service;
|
||||
|
||||
import org.kickerelo.kickerelo.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.data.Ergebnis1vs1;
|
||||
import org.kickerelo.kickerelo.data.Ergebnis2vs2;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.kickerelo.kickerelo.exception.PlayerNameNotSetException;
|
||||
import org.kickerelo.kickerelo.model.ResultInfo1vs1;
|
||||
import org.kickerelo.kickerelo.model.ResultInfo2vs2;
|
||||
import org.kickerelo.kickerelo.repository.Ergebnis1vs1Repository;
|
||||
@@ -31,6 +33,13 @@ public class KickerEloService {
|
||||
|
||||
public void enterResult1vs1(String gewinnerName, String verliererName,
|
||||
short toreVerlierer) {
|
||||
if (gewinnerName == null || verliererName == null) {
|
||||
throw new PlayerNameNotSetException("Alle Namen müssen gesetzt sein");
|
||||
}
|
||||
|
||||
if (gewinnerName.equals(verliererName)) {
|
||||
throw new DuplicatePlayerException("winner and loser identical");
|
||||
}
|
||||
|
||||
Spieler gewinner = spielerRepository.findByName(gewinnerName)
|
||||
.orElseThrow(() -> new NoSuchPlayerException(gewinnerName));
|
||||
@@ -56,6 +65,20 @@ public class KickerEloService {
|
||||
String verliererNameVorn, String verliererNameHinten,
|
||||
short toreVerlierer) {
|
||||
|
||||
if (gewinnerNameVorn == null || gewinnerNameHinten == null
|
||||
|| verliererNameVorn == null || verliererNameHinten == 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)) {
|
||||
throw new DuplicatePlayerException("players must not be identical");
|
||||
}
|
||||
|
||||
Spieler gewinnerVorn = spielerRepository.findByName(gewinnerNameVorn)
|
||||
.orElseThrow(() -> new NoSuchPlayerException(gewinnerNameVorn));
|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@ 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.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.exception.PlayerNameNotSetException;
|
||||
import org.kickerelo.kickerelo.service.KickerEloService;
|
||||
|
||||
@Route(value = "enter1vs1")
|
||||
@@ -36,7 +38,11 @@ public class Enter1vs1View extends VerticalLayout {
|
||||
eloService.enterResult1vs1(winnerSelect.getValue(), loserSelect.getValue(), loserGoals.getValue().shortValue());
|
||||
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
||||
} catch (NoSuchPlayerException err) {
|
||||
Notification.show("Konnte nicht gespeichert werden").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
Notification.show("Unbekannter Spieler").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
} catch (DuplicatePlayerException err) {
|
||||
Notification.show("Alle Spieler müssen paarweise verschieden sein").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
} catch (PlayerNameNotSetException err) {
|
||||
Notification.show("Alle Spieler müssen gesetzt sein").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@ 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.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.exception.DuplicatePlayerException;
|
||||
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||
import org.kickerelo.kickerelo.exception.PlayerNameNotSetException;
|
||||
import org.kickerelo.kickerelo.service.KickerEloService;
|
||||
|
||||
@Route(value = "enter2vs2")
|
||||
@@ -43,7 +45,11 @@ public class Enter2vs2View extends VerticalLayout {
|
||||
eloService.enterResult2vs2(winnerFrontSelect.getValue(), winnerBackSelect.getValue(), loserFrontSelect.getValue(), loserBackSelect.getValue(), loserGoals.getValue().shortValue());
|
||||
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
||||
} catch (NoSuchPlayerException err) {
|
||||
Notification.show("Konnte nicht gespeichert werden").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
Notification.show("Unbekannter Spieler").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
} catch (DuplicatePlayerException err) {
|
||||
Notification.show("Alle Spieler müssen paarweise verschieden sein").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
} catch (PlayerNameNotSetException err) {
|
||||
Notification.show("Alle Spieler müssen gesetzt sein").addThemeVariants(NotificationVariant.LUMO_ERROR);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user