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.IntegerField;
|
||||||
import com.vaadin.flow.component.textfield.TextField;
|
import com.vaadin.flow.component.textfield.TextField;
|
||||||
import com.vaadin.flow.router.Route;
|
import com.vaadin.flow.router.Route;
|
||||||
|
import org.kickerelo.kickerelo.exception.NoSuchPlayerException;
|
||||||
import org.kickerelo.kickerelo.service.KickerEloService;
|
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 class NoSuchPlayerException extends RuntimeException {
|
||||||
public NoSuchPlayerException(String message) {
|
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;
|
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.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;
|
||||||
|
import org.kickerelo.kickerelo.exception.PlayerNameNotSetException;
|
||||||
import org.kickerelo.kickerelo.model.ResultInfo1vs1;
|
import org.kickerelo.kickerelo.model.ResultInfo1vs1;
|
||||||
import org.kickerelo.kickerelo.model.ResultInfo2vs2;
|
import org.kickerelo.kickerelo.model.ResultInfo2vs2;
|
||||||
import org.kickerelo.kickerelo.repository.Ergebnis1vs1Repository;
|
import org.kickerelo.kickerelo.repository.Ergebnis1vs1Repository;
|
||||||
@@ -31,6 +33,13 @@ public class KickerEloService {
|
|||||||
|
|
||||||
public void enterResult1vs1(String gewinnerName, String verliererName,
|
public void enterResult1vs1(String gewinnerName, String verliererName,
|
||||||
short toreVerlierer) {
|
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)
|
Spieler gewinner = spielerRepository.findByName(gewinnerName)
|
||||||
.orElseThrow(() -> new NoSuchPlayerException(gewinnerName));
|
.orElseThrow(() -> new NoSuchPlayerException(gewinnerName));
|
||||||
@@ -56,6 +65,20 @@ public class KickerEloService {
|
|||||||
String verliererNameVorn, String verliererNameHinten,
|
String verliererNameVorn, String verliererNameHinten,
|
||||||
short toreVerlierer) {
|
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)
|
Spieler gewinnerVorn = spielerRepository.findByName(gewinnerNameVorn)
|
||||||
.orElseThrow(() -> new NoSuchPlayerException(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.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.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;
|
import org.kickerelo.kickerelo.service.KickerEloService;
|
||||||
|
|
||||||
@Route(value = "enter1vs1")
|
@Route(value = "enter1vs1")
|
||||||
@@ -36,7 +38,11 @@ public class Enter1vs1View extends VerticalLayout {
|
|||||||
eloService.enterResult1vs1(winnerSelect.getValue(), loserSelect.getValue(), loserGoals.getValue().shortValue());
|
eloService.enterResult1vs1(winnerSelect.getValue(), loserSelect.getValue(), loserGoals.getValue().shortValue());
|
||||||
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
||||||
} catch (NoSuchPlayerException err) {
|
} 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.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.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;
|
import org.kickerelo.kickerelo.service.KickerEloService;
|
||||||
|
|
||||||
@Route(value = "enter2vs2")
|
@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());
|
eloService.enterResult2vs2(winnerFrontSelect.getValue(), winnerBackSelect.getValue(), loserFrontSelect.getValue(), loserBackSelect.getValue(), loserGoals.getValue().shortValue());
|
||||||
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
Notification.show("Gespeichert").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
|
||||||
} catch (NoSuchPlayerException err) {
|
} 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