package app.navigation.player;
|
|
|
|
import app.data.entity.Player;
|
|
import app.data.entity.Season;
|
|
import app.data.service.PlayerService;
|
|
import app.data.service.SeasonService;
|
|
import app.navigation.Navigable;
|
|
import app.navigation.Navigation;
|
|
import com.vaadin.flow.component.select.Select;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.lang.NonNull;
|
|
import org.springframework.lang.Nullable;
|
|
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
public class PlayerNavigation extends Navigation {
|
|
|
|
PlayerNavigation(@Autowired PlayerService playerService,
|
|
@Autowired SeasonService seasonService) {
|
|
super(playerService, seasonService);
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
protected <PARENT extends Navigable, CHILD extends Navigable> List<CHILD> getChildren(@Nullable PARENT parent, @NonNull Class<CHILD> childClass) {
|
|
if (childClass.equals(Player.class)) {
|
|
return (List<CHILD>) getPlayerService().getAllPlayersSorted();
|
|
}
|
|
if (childClass.equals(Season.class)) {
|
|
return (List<CHILD>) getSeasonService().getAllSeasonsForPlayerSorted((Player) parent);
|
|
}
|
|
throw new UnsupportedOperationException(String.format("This method is not supported for childClass %s", childClass.getSimpleName()));
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
protected <T extends Navigable> T getDefaultValue(Class<T> clazz) {
|
|
if(clazz.equals(Player.class)) {
|
|
assert !getPlayerList().isEmpty();
|
|
return (T) getPlayerList().get(0);
|
|
}
|
|
if (clazz.equals(Season.class)) {
|
|
assert !getSeasonList().isEmpty();
|
|
return (T) getSeasonList().get(getSeasonList().size() - 1);
|
|
}
|
|
throw new UnsupportedOperationException(String.format("This method is not supported for clazz %s", clazz.getSimpleName()));
|
|
}
|
|
public PlayerService getPlayerService() {
|
|
return (PlayerService) serviceMap.get(Player.class);
|
|
}
|
|
|
|
public SeasonService getSeasonService() {
|
|
return (SeasonService) serviceMap.get(Season.class);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public List<Season> getSeasonList() {
|
|
return (List<Season>) listMap.get(Season.class);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public List<Player> getPlayerList() {
|
|
return (List<Player>) listMap.get(Player.class);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public Select<Season> getSeasonSelect() {
|
|
return (Select<Season>) selectMap.get(Season.class);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public Select<Player> getPlayerSelect() {
|
|
return (Select<Player>) selectMap.get(Player.class);
|
|
}
|
|
|
|
public Optional<Player> getSelectedPlayer() {
|
|
return getPlayerSelect().getOptionalValue();
|
|
}
|
|
|
|
public Optional<Season> getSelectedSeason() {
|
|
return getSeasonSelect().getOptionalValue();
|
|
}
|
|
}
|