Удален fetchLatest, добавлен поиск по паттерну
This commit is contained in:
@@ -6,8 +6,6 @@ import org.springframework.data.domain.Sort;
|
|||||||
@Data
|
@Data
|
||||||
public class Pagination {
|
public class Pagination {
|
||||||
|
|
||||||
private boolean fetchLatest;
|
|
||||||
|
|
||||||
private Sort.Direction direction;
|
private Sort.Direction direction;
|
||||||
|
|
||||||
private long startingFrom;
|
private long startingFrom;
|
||||||
|
|||||||
@@ -3,22 +3,27 @@ package ru.serega6531.packmate.repository;
|
|||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import ru.serega6531.packmate.model.CtfService;
|
import ru.serega6531.packmate.model.CtfService;
|
||||||
|
import ru.serega6531.packmate.model.Pattern;
|
||||||
import ru.serega6531.packmate.model.Stream;
|
import ru.serega6531.packmate.model.Stream;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface StreamRepository extends JpaRepository<Stream, Long> {
|
public interface StreamRepository extends JpaRepository<Stream, Long> {
|
||||||
|
|
||||||
List<Stream> findAllByFavorite(Pageable pageable, boolean favorite);
|
|
||||||
|
|
||||||
List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByServiceAndFavorite(CtfService service, boolean favorite, Pageable pageable);
|
List<Stream> findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable);
|
||||||
|
|
||||||
|
List<Stream> findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
|
List<Stream> findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable);
|
||||||
|
|
||||||
|
List<Stream> findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,10 +67,10 @@ public class StreamService {
|
|||||||
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
|
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
|
||||||
stream.setService(serviceOptional.get());
|
stream.setService(serviceOptional.get());
|
||||||
|
|
||||||
if(ignoreEmptyPackets) {
|
if (ignoreEmptyPackets) {
|
||||||
packets.removeIf(packet -> packet.getContent().length == 0);
|
packets.removeIf(packet -> packet.getContent().length == 0);
|
||||||
|
|
||||||
if(packets.isEmpty()) {
|
if (packets.isEmpty()) {
|
||||||
log.debug("Стрим состоит только из пустых пакетов и не будет сохранен");
|
log.debug("Стрим состоит только из пустых пакетов и не будет сохранен");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ public class StreamService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void setFavorite(long id, boolean favorite) {
|
public void setFavorite(long id, boolean favorite) {
|
||||||
final Optional<Stream> streamOptional = repository.findById(id);
|
final Optional<Stream> streamOptional = repository.findById(id);
|
||||||
if(streamOptional.isPresent()) {
|
if (streamOptional.isPresent()) {
|
||||||
final Stream stream = streamOptional.get();
|
final Stream stream = streamOptional.get();
|
||||||
stream.setFavorite(favorite);
|
stream.setFavorite(favorite);
|
||||||
repository.save(stream);
|
repository.save(stream);
|
||||||
@@ -124,8 +124,12 @@ public class StreamService {
|
|||||||
public List<Stream> findAll(Pagination pagination) {
|
public List<Stream> findAll(Pagination pagination) {
|
||||||
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
|
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
|
||||||
|
|
||||||
if(pagination.isFetchLatest()) { // последние стримы
|
if (pagination.getPattern() != null) { // задан паттерн для поиска
|
||||||
return repository.findAllByFavorite(page, pagination.isFavorites());
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
|
return repository.findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
|
||||||
|
} else { // более старые стримы
|
||||||
|
return repository.findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page);
|
return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
@@ -138,8 +142,12 @@ public class StreamService {
|
|||||||
public List<Stream> findAllByService(Pagination pagination, CtfService service) {
|
public List<Stream> findAllByService(Pagination pagination, CtfService service) {
|
||||||
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
|
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
|
||||||
|
|
||||||
if(pagination.isFetchLatest()) { // последние стримы
|
if (pagination.getPattern() != null) { // задан паттерн для поиска
|
||||||
return repository.findAllByServiceAndFavorite(service, pagination.isFavorites(), page);
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
|
return repository.findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern() page);
|
||||||
|
} else { // более старые стримы
|
||||||
|
return repository.findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page);
|
return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
|
|||||||
Reference in New Issue
Block a user