From 65c0ea4739a456cf60b52071b06c87ad10030236 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Mon, 5 Feb 2024 15:53:51 +0700 Subject: [PATCH] Refactor details parsing for RoomController --- .../picker/controller/RoomController.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/ru/dragonestia/picker/controller/RoomController.java b/app/src/main/java/ru/dragonestia/picker/controller/RoomController.java index bf35f73..4982e2c 100644 --- a/app/src/main/java/ru/dragonestia/picker/controller/RoomController.java +++ b/app/src/main/java/ru/dragonestia/picker/controller/RoomController.java @@ -15,6 +15,8 @@ import ru.dragonestia.picker.model.Room; import ru.dragonestia.picker.model.type.SlotLimit; import ru.dragonestia.picker.service.RoomService; import ru.dragonestia.picker.service.NodeService; +import ru.dragonestia.picker.util.DetailsExtractor; +import ru.dragonestia.picker.util.DetailsParser; import ru.dragonestia.picker.util.NamingValidator; import java.util.HashSet; @@ -28,21 +30,18 @@ public class RoomController { private final NodeService nodeService; private final RoomService roomService; private final NamingValidator namingValidator; + private final DetailsParser detailsParser; @GetMapping ResponseEntity all(@PathVariable(name = "nodeId") String nodeId, @RequestParam(name = "requiredDetails", required = false, defaultValue = "") String detailsSeq) { - var details = new HashSet(); - for (var detailStr: detailsSeq.split(",")) { - try { - details.add(RoomDetails.valueOf(detailStr.toUpperCase())); - } catch (IllegalArgumentException ignore) {} - } - return nodeService.find(nodeId) - .map(node -> ResponseEntity.ok(new RoomListResponse(nodeId, roomService.getAllRoomsWithDetailsResponse(node, details)))) - .orElseThrow(() -> new NodeNotFoundException(nodeId)); + .map(node -> { + var details = detailsParser.parseRoomDetails(detailsSeq); + var response = new RoomListResponse(nodeId, roomService.getAllRoomsWithDetailsResponse(node, details)); + return ResponseEntity.ok(response); + }).orElseThrow(() -> new NodeNotFoundException(nodeId)); } @PostMapping