Loading api/src/main/java/cz/muni/fi/pa165/icehockeymanager/exceptions/UnknownUserException.java 0 → 100644 +11 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.exceptions; public class UnknownUserException extends RuntimeException { public UnknownUserException(String message) { super(message); } public UnknownUserException() { } } api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/UserAuthFacade.java +15 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDto; import cz.muni.fi.pa165.icehockeymanager.dto.UserDto; import cz.muni.fi.pa165.icehockeymanager.exceptions.UsernameTakenException; Loading Loading @@ -37,4 +38,18 @@ public interface UserAuthFacade { * @throws UsernameTakenException if username is already taken by another user */ UserDto createTeamManager(String username, String password, int teamId); /** * Find team associated with the manager * @param username username * @return associated team */ Optional<TeamDto> fetchTeamForManager(String username); /** * Find user by username * @param username username * @return empty optional if user was not found */ Optional<UserDto> fetchUser(String username); } persistence/src/main/java/cz/muni/fi/pa165/icehockeymanager/dao/TeamDao.java +20 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.dao; import cz.muni.fi.pa165.icehockeymanager.model.Team; import cz.muni.fi.pa165.icehockeymanager.model.User; import org.springframework.stereotype.Repository; import javax.persistence.NoResultException; import java.util.Optional; @Repository public class TeamDao extends AbstractDao<Team> { public TeamDao() { super(Team.class); } public Optional<Team> findByManager(User manager) { Team team = null; try { team = (Team) entityManager .createNativeQuery( "SELECT t FROM Team t WHERE t.managerId = :managerId", Team.class ) .setParameter("managerId", manager.getId()) .getSingleResult(); } catch(NoResultException ignored) { } return Optional.ofNullable(team); } } service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/UserAuthFacadeImpl.java +21 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDto; import cz.muni.fi.pa165.icehockeymanager.dto.UserDto; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownUserException; import cz.muni.fi.pa165.icehockeymanager.security.Roles; import cz.muni.fi.pa165.icehockeymanager.services.BeanMappingService; import cz.muni.fi.pa165.icehockeymanager.services.TeamService; import cz.muni.fi.pa165.icehockeymanager.services.UserAuthService; Loading Loading @@ -49,4 +52,22 @@ public class UserAuthFacadeImpl implements UserAuthFacade { teamService.updateTeamManager(team, user); return beanMapper.mapTo(user, UserDto.class); } @Override public Optional<TeamDto> fetchTeamForManager(String username) { var user = authService.findUser(username).orElseThrow(UnknownUserException::new); if (!user.getRole().equals(Roles.TEAM_MANAGER.toString())) { return Optional.empty(); } return teamService .findTeamByManager(user) .flatMap(team -> Optional.of(beanMapper.mapTo(team, TeamDto.class))); } @Override public Optional<UserDto> fetchUser(String username) { return authService .findUser(username) .flatMap(user -> Optional.of(beanMapper.mapTo(user, UserDto.class))); } } service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java +8 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,14 @@ public interface TeamService { */ Optional<Team> findTeam(long id); /** * Retrieve team by manager. * * @param manager Unique identifier of a team * @return Team, or null iff no team for such ID was found */ Optional<Team> findTeamByManager(User manager); /** * Adds the player to a team. * Loading Loading
api/src/main/java/cz/muni/fi/pa165/icehockeymanager/exceptions/UnknownUserException.java 0 → 100644 +11 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.exceptions; public class UnknownUserException extends RuntimeException { public UnknownUserException(String message) { super(message); } public UnknownUserException() { } }
api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/UserAuthFacade.java +15 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDto; import cz.muni.fi.pa165.icehockeymanager.dto.UserDto; import cz.muni.fi.pa165.icehockeymanager.exceptions.UsernameTakenException; Loading Loading @@ -37,4 +38,18 @@ public interface UserAuthFacade { * @throws UsernameTakenException if username is already taken by another user */ UserDto createTeamManager(String username, String password, int teamId); /** * Find team associated with the manager * @param username username * @return associated team */ Optional<TeamDto> fetchTeamForManager(String username); /** * Find user by username * @param username username * @return empty optional if user was not found */ Optional<UserDto> fetchUser(String username); }
persistence/src/main/java/cz/muni/fi/pa165/icehockeymanager/dao/TeamDao.java +20 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.dao; import cz.muni.fi.pa165.icehockeymanager.model.Team; import cz.muni.fi.pa165.icehockeymanager.model.User; import org.springframework.stereotype.Repository; import javax.persistence.NoResultException; import java.util.Optional; @Repository public class TeamDao extends AbstractDao<Team> { public TeamDao() { super(Team.class); } public Optional<Team> findByManager(User manager) { Team team = null; try { team = (Team) entityManager .createNativeQuery( "SELECT t FROM Team t WHERE t.managerId = :managerId", Team.class ) .setParameter("managerId", manager.getId()) .getSingleResult(); } catch(NoResultException ignored) { } return Optional.ofNullable(team); } }
service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/UserAuthFacadeImpl.java +21 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDto; import cz.muni.fi.pa165.icehockeymanager.dto.UserDto; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownUserException; import cz.muni.fi.pa165.icehockeymanager.security.Roles; import cz.muni.fi.pa165.icehockeymanager.services.BeanMappingService; import cz.muni.fi.pa165.icehockeymanager.services.TeamService; import cz.muni.fi.pa165.icehockeymanager.services.UserAuthService; Loading Loading @@ -49,4 +52,22 @@ public class UserAuthFacadeImpl implements UserAuthFacade { teamService.updateTeamManager(team, user); return beanMapper.mapTo(user, UserDto.class); } @Override public Optional<TeamDto> fetchTeamForManager(String username) { var user = authService.findUser(username).orElseThrow(UnknownUserException::new); if (!user.getRole().equals(Roles.TEAM_MANAGER.toString())) { return Optional.empty(); } return teamService .findTeamByManager(user) .flatMap(team -> Optional.of(beanMapper.mapTo(team, TeamDto.class))); } @Override public Optional<UserDto> fetchUser(String username) { return authService .findUser(username) .flatMap(user -> Optional.of(beanMapper.mapTo(user, UserDto.class))); } }
service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java +8 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,14 @@ public interface TeamService { */ Optional<Team> findTeam(long id); /** * Retrieve team by manager. * * @param manager Unique identifier of a team * @return Team, or null iff no team for such ID was found */ Optional<Team> findTeamByManager(User manager); /** * Adds the player to a team. * Loading