Move dto transformation into services

This commit is contained in:
Sergey Shkurov
2023-04-28 03:27:28 +02:00
parent 288d24fffc
commit 0b50f202fc
4 changed files with 27 additions and 19 deletions

View File

@@ -1,14 +1,16 @@
package ru.serega6531.packmate.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import ru.serega6531.packmate.model.Packet;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ru.serega6531.packmate.model.pojo.PacketDto;
import ru.serega6531.packmate.model.pojo.PacketPagination;
import ru.serega6531.packmate.service.StreamService;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/packet/")
@@ -23,10 +25,7 @@ public class PacketController {
@PostMapping("/{streamId}")
public List<PacketDto> getPacketsForStream(@PathVariable long streamId, @RequestBody PacketPagination pagination) {
List<Packet> packets = streamService.getPackets(streamId, pagination.getStartingFrom(), pagination.getPageSize());
return packets.stream()
.map(streamService::packetToDto)
.collect(Collectors.toList());
return streamService.getPackets(streamId, pagination.getStartingFrom(), pagination.getPageSize());
}
}

View File

@@ -26,16 +26,12 @@ public class StreamController {
@PostMapping("/all")
public List<StreamDto> getStreams(@RequestBody StreamPagination pagination) {
return service.findAll(pagination, Optional.empty(), pagination.isFavorites()).stream()
.map(service::streamToDto)
.toList();
return service.findAll(pagination, Optional.empty(), pagination.isFavorites());
}
@PostMapping("/{port}")
public List<StreamDto> getStreams(@PathVariable int port, @RequestBody StreamPagination pagination) {
return service.findAll(pagination, Optional.of(port), pagination.isFavorites()).stream()
.map(service::streamToDto)
.toList();
return service.findAll(pagination, Optional.of(port), pagination.isFavorites());
}
@PostMapping("/{id}/favorite")

View File

@@ -53,7 +53,7 @@ public class Stream {
private long endTimestamp;
@ManyToMany(fetch = FetchType.EAGER)
@ManyToMany
@JoinTable(
name = "stream_found_patterns",
joinColumns = @JoinColumn(name = "stream_id"),

View File

@@ -1,5 +1,6 @@
package ru.serega6531.packmate.service;
import jakarta.persistence.EntityManager;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.modelmapper.ModelMapper;
@@ -49,6 +50,8 @@ public class StreamService {
private final RsaKeysHolder keysHolder;
private final ModelMapper modelMapper;
private final EntityManager entityManager;
private final boolean ignoreEmptyPackets;
private final java.util.regex.Pattern userAgentPattern = java.util.regex.Pattern.compile("User-Agent: (.+)\\r\\n");
@@ -61,7 +64,7 @@ public class StreamService {
SubscriptionService subscriptionService,
RsaKeysHolder keysHolder,
ModelMapper modelMapper,
@Value("${ignore-empty-packets}") boolean ignoreEmptyPackets) {
EntityManager entityManager, @Value("${ignore-empty-packets}") boolean ignoreEmptyPackets) {
this.repository = repository;
this.patternService = patternService;
this.servicesService = servicesService;
@@ -69,6 +72,7 @@ public class StreamService {
this.subscriptionService = subscriptionService;
this.keysHolder = keysHolder;
this.modelMapper = modelMapper;
this.entityManager = entityManager;
this.ignoreEmptyPackets = ignoreEmptyPackets;
}
@@ -251,8 +255,12 @@ public class StreamService {
return saved;
}
public List<Packet> getPackets(long streamId, @Nullable Long startingFrom, int pageSize) {
return repository.getPackets(streamId, startingFrom, Pageable.ofSize(pageSize));
@Transactional
public List<PacketDto> getPackets(long streamId, @Nullable Long startingFrom, int pageSize) {
return repository.getPackets(streamId, startingFrom, Pageable.ofSize(pageSize))
.stream()
.map(this::packetToDto)
.toList();
}
/**
@@ -268,7 +276,8 @@ public class StreamService {
repository.setFavorite(id, favorite);
}
public List<Stream> findAll(StreamPagination pagination, Optional<Integer> service, boolean onlyFavorites) {
@Transactional
public List<StreamDto> findAll(StreamPagination pagination, Optional<Integer> service, boolean onlyFavorites) {
PageRequest page = PageRequest.of(0, pagination.getPageSize(), Sort.Direction.DESC, "id");
Specification<Stream> spec = Specification.where(null);
@@ -289,7 +298,11 @@ public class StreamService {
spec = spec.and(streamPatternsContains(pagination.getPattern()));
}
return repository.findAll(spec, page).getContent();
return repository.findAll(spec, page)
.getContent()
.stream()
.map(this::streamToDto)
.toList();
}
public List<Stream> findAllBetweenTimestamps(long start, long end) {