You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

84 lines
2.9 KiB

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();
}
}