From d71145fd576394687d336e54d7c4b1497ef93880 Mon Sep 17 00:00:00 2001 From: Mathilde Lorrain <mlorrain@takima.fr> Date: Mon, 26 Feb 2024 18:03:49 +0100 Subject: [PATCH] feat: add custom exception --- .../takima/agencymanagement/dao/TravelDao.java | 3 +-- .../takima/agencymanagement/dao/UserDao.java | 3 +-- .../AlreadyTravelSubscribedException.java | 7 +++++++ .../takima/agencymanagement/model/Travel.java | 4 ++++ .../service/TravelService.java | 18 ++++++++++-------- .../agencymanagement/service/UserService.java | 6 +++--- 6 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java diff --git a/src/io/takima/agencymanagement/dao/TravelDao.java b/src/io/takima/agencymanagement/dao/TravelDao.java index 5937d37..20e79db 100644 --- a/src/io/takima/agencymanagement/dao/TravelDao.java +++ b/src/io/takima/agencymanagement/dao/TravelDao.java @@ -16,9 +16,8 @@ public class TravelDao { addTravelsToMap(); } - public Travel persist(Travel travel) { + public void save(Travel travel) { travels.put(travel.getId(), travel); - return travel; } public Travel update(Travel travel) { diff --git a/src/io/takima/agencymanagement/dao/UserDao.java b/src/io/takima/agencymanagement/dao/UserDao.java index 689edb6..cec2f8e 100644 --- a/src/io/takima/agencymanagement/dao/UserDao.java +++ b/src/io/takima/agencymanagement/dao/UserDao.java @@ -13,9 +13,8 @@ public class UserDao { private final Map<Long, User> users = Collections.synchronizedMap(new HashMap<>()); - public User persist(User user) { + public void save(User user) { users.put(user.getId(), user); - return user; } public User update(User user) { diff --git a/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java new file mode 100644 index 0000000..11ed7a3 --- /dev/null +++ b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java @@ -0,0 +1,7 @@ +package io.takima.agencymanagement.exception; + +public class AlreadyTravelSubscribedException extends Exception { + public AlreadyTravelSubscribedException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/io/takima/agencymanagement/model/Travel.java b/src/io/takima/agencymanagement/model/Travel.java index e82d3cf..7c2e4ba 100644 --- a/src/io/takima/agencymanagement/model/Travel.java +++ b/src/io/takima/agencymanagement/model/Travel.java @@ -110,4 +110,8 @@ public class Travel { return stringBuilder.toString(); } + + public boolean hasAvailableCapacity(Set<User> participants, int capacity) { + return participants.size() < capacity; + } } diff --git a/src/io/takima/agencymanagement/service/TravelService.java b/src/io/takima/agencymanagement/service/TravelService.java index 37969c2..c5976d4 100644 --- a/src/io/takima/agencymanagement/service/TravelService.java +++ b/src/io/takima/agencymanagement/service/TravelService.java @@ -1,6 +1,7 @@ package io.takima.agencymanagement.service; import io.takima.agencymanagement.dao.TravelDao; +import io.takima.agencymanagement.exception.AlreadyTravelSubscribedException; import io.takima.agencymanagement.mapper.TravelDtoMapper; import io.takima.agencymanagement.model.Travel; import io.takima.agencymanagement.model.User; @@ -24,17 +25,17 @@ public class TravelService { } public TravelResponseDto create(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } public TravelResponseDto update(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } public TravelResponseDto delete(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } @@ -49,6 +50,7 @@ public class TravelService { .toList(); } + public void applyDiscounts(Travel travel) { if (travel.getDiscounts().isEmpty()) { System.out.println("Aucune réduction n'est applicable sur ce voyage !"); @@ -61,19 +63,18 @@ public class TravelService { } } - public boolean subscribe(User user, Travel travel) throws Exception { + public void subscribe(User user, Travel travel) throws Exception { if (travel.getParticipants().contains(user) || travel.getWaitList().contains(user)) { //User already subscribed or in waitList - throw new Exception("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); + throw new AlreadyTravelSubscribedException("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); } if (travel.getParticipants().size() < travel.getCapacity()) { travel.getParticipants().add(user); - return true; + return; } travel.getWaitList().add(user); - return false; } public void unsubscribe(User user, Travel travel) { @@ -106,10 +107,11 @@ public class TravelService { List<Travel> travels = travelDao.findAll(); return travels.stream() - .filter(travel -> travel.getCapacity() > travel.getParticipants().size() && travel.getDestination().equals(destination)) + .filter(travel -> travel.hasAvailableCapacity(travel.getParticipants(), travel.getCapacity()) && travel.getDestination().equals(destination)) .toList(); } + public List<Travel> findInPriceRange(double minPrice, double maxPrice) { List<Travel> travels = travelDao.findAll(); diff --git a/src/io/takima/agencymanagement/service/UserService.java b/src/io/takima/agencymanagement/service/UserService.java index 08903f6..458e0e5 100644 --- a/src/io/takima/agencymanagement/service/UserService.java +++ b/src/io/takima/agencymanagement/service/UserService.java @@ -14,17 +14,17 @@ public class UserService { UserDao userDao = new UserDao(); public UserResponseDto create(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); } public UserResponseDto update(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); } public UserResponseDto delete(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); } -- GitLab