Refactor details parsing for RoomController
This commit is contained in:
parent
682ffd49d8
commit
65c0ea4739
@ -15,6 +15,8 @@ import ru.dragonestia.picker.model.Room;
|
|||||||
import ru.dragonestia.picker.model.type.SlotLimit;
|
import ru.dragonestia.picker.model.type.SlotLimit;
|
||||||
import ru.dragonestia.picker.service.RoomService;
|
import ru.dragonestia.picker.service.RoomService;
|
||||||
import ru.dragonestia.picker.service.NodeService;
|
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 ru.dragonestia.picker.util.NamingValidator;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -28,21 +30,18 @@ public class RoomController {
|
|||||||
private final NodeService nodeService;
|
private final NodeService nodeService;
|
||||||
private final RoomService roomService;
|
private final RoomService roomService;
|
||||||
private final NamingValidator namingValidator;
|
private final NamingValidator namingValidator;
|
||||||
|
private final DetailsParser detailsParser;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
ResponseEntity<RoomListResponse> all(@PathVariable(name = "nodeId") String nodeId,
|
ResponseEntity<RoomListResponse> all(@PathVariable(name = "nodeId") String nodeId,
|
||||||
@RequestParam(name = "requiredDetails", required = false, defaultValue = "") String detailsSeq) {
|
@RequestParam(name = "requiredDetails", required = false, defaultValue = "") String detailsSeq) {
|
||||||
|
|
||||||
var details = new HashSet<RoomDetails>();
|
|
||||||
for (var detailStr: detailsSeq.split(",")) {
|
|
||||||
try {
|
|
||||||
details.add(RoomDetails.valueOf(detailStr.toUpperCase()));
|
|
||||||
} catch (IllegalArgumentException ignore) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nodeService.find(nodeId)
|
return nodeService.find(nodeId)
|
||||||
.map(node -> ResponseEntity.ok(new RoomListResponse(nodeId, roomService.getAllRoomsWithDetailsResponse(node, details))))
|
.map(node -> {
|
||||||
.orElseThrow(() -> new NodeNotFoundException(nodeId));
|
var details = detailsParser.parseRoomDetails(detailsSeq);
|
||||||
|
var response = new RoomListResponse(nodeId, roomService.getAllRoomsWithDetailsResponse(node, details));
|
||||||
|
return ResponseEntity.ok(response);
|
||||||
|
}).orElseThrow(() -> new NodeNotFoundException(nodeId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user