Рефакторинг
This commit is contained in:
parent
b56b806e6f
commit
46de13d138
@ -32,4 +32,16 @@ public interface ContentRepository<T extends Message> {
|
|||||||
|
|
||||||
List<T> betweenByAddDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
List<T> betweenByAddDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Удаляет данные за указанный период
|
||||||
|
*
|
||||||
|
* @param dateFrom Дата начала
|
||||||
|
* @param dateTo Дата окончания
|
||||||
|
*/
|
||||||
|
void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
|
void deleteAllByAddDateBefore(@NonNull LocalDateTime date);
|
||||||
|
|
||||||
|
void deleteAllByAddDateAfter(@NonNull LocalDateTime date);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,4 +34,19 @@ public class MailRepositoryJpaImpl implements ContentRepository<Mail> {
|
|||||||
return mailRepositoryJpa.findByAddDateBetween(dateFrom, dateTo);
|
return mailRepositoryJpa.findByAddDateBetween(dateFrom, dateTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
|
||||||
|
mailRepositoryJpa.deleteAllByAddDateBetween(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBefore(@NonNull LocalDateTime date) {
|
||||||
|
mailRepositoryJpa.deleteAllByAddDateBefore(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateAfter(@NonNull LocalDateTime date) {
|
||||||
|
mailRepositoryJpa.deleteAllByAddDateAfter(date);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,9 +56,23 @@ public class MailRepositoryList implements ContentRepository<Mail> {
|
|||||||
return rezultMails;
|
return rezultMails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
|
||||||
|
mails.removeIf(mail -> dateFrom.isBefore(mail.getAddDate()) && dateTo.isAfter(mail.getAddDate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBefore(LocalDateTime date) {
|
||||||
|
mails.removeIf(mail -> date.isBefore(mail.getAddDate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateAfter(LocalDateTime date) {
|
||||||
|
mails.removeIf(mail -> date.isAfter(mail.getAddDate()));
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isTimePeriod(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo, @NonNull LocalDateTime dateTime) {
|
private boolean isTimePeriod(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo, @NonNull LocalDateTime dateTime) {
|
||||||
return dateFrom.isBefore(dateTime) && dateTo.isAfter(dateTime);
|
return dateFrom.isBefore(dateTime) && dateTo.isAfter(dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,14 @@ import java.util.List;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface MailRepositoryJpa extends JpaRepository<Mail, Integer> {
|
public interface MailRepositoryJpa extends JpaRepository<Mail, Integer> {
|
||||||
|
|
||||||
List<Mail> findByCreateDateBetween(LocalDateTime from, LocalDateTime to);
|
List<Mail> findByCreateDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
|
||||||
|
|
||||||
List<Mail> findByAddDateBetween(LocalDateTime from, LocalDateTime to);
|
List<Mail> findByAddDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
|
||||||
|
|
||||||
|
void deleteAllByAddDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
|
||||||
|
|
||||||
|
void deleteAllByAddDateBefore(LocalDateTime date);
|
||||||
|
|
||||||
|
void deleteAllByAddDateAfter(LocalDateTime date);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,26 +18,32 @@ public interface MessageService<T extends Message> {
|
|||||||
/**
|
/**
|
||||||
* Получить список сообщений за заданный временной интервал
|
* Получить список сообщений за заданный временной интервал
|
||||||
*
|
*
|
||||||
* @param timeFrom Начало интервала
|
* @param dateFrom Начало интервала
|
||||||
* @param timeTo Конец интервала
|
* @param dateTo Конец интервала
|
||||||
* @return Список сообщений
|
* @return Список сообщений
|
||||||
*/
|
*/
|
||||||
List<T> getByAddDateTime(@NonNull LocalDateTime timeFrom, @NonNull LocalDateTime timeTo);
|
List<T> getByAddDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал
|
* Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал
|
||||||
*
|
*
|
||||||
* @param timeFrom Начало интервала
|
* @param dateFrom Начало интервала
|
||||||
* @param timeTo Конец интервала
|
* @param dateTo Конец интервала
|
||||||
* @return Список сообщений
|
* @return Список сообщений
|
||||||
*/
|
*/
|
||||||
List<T> getLastEventByCreateDateTime(@NonNull LocalDateTime timeFrom, @NonNull LocalDateTime timeTo);
|
List<T> getLastEventByCreateDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
List<T> getLastEventByAddDateTime(@NonNull LocalDateTime timeFrom, @NonNull LocalDateTime timeTo);
|
List<T> getLastEventByAddDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает новые сообщения от последнего запроса.
|
* Возвращает новые сообщения от последнего запроса.
|
||||||
*/
|
*/
|
||||||
List<T> getNewMessage();
|
List<T> getNewMessage();
|
||||||
|
|
||||||
|
void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
|
||||||
|
|
||||||
|
void deleteAllByAddDateBefore(@NonNull LocalDateTime date);
|
||||||
|
|
||||||
|
void deleteAllByAddDateAfter(@NonNull LocalDateTime date);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
package org.sadtech.social.core.service.impl;
|
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.sadtech.social.core.domain.content.BoardComment;
|
|
||||||
import org.sadtech.social.core.repository.ContentRepository;
|
|
||||||
import org.sadtech.social.core.service.MessageService;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class BoardCommentServiceImpl implements MessageService<BoardComment> {
|
|
||||||
|
|
||||||
private final ContentRepository<BoardComment> commentRepository;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void add(BoardComment event) {
|
|
||||||
commentRepository.add(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BoardComment> getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) {
|
|
||||||
throw new IllegalStateException("Не реализовано");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BoardComment> getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) {
|
|
||||||
log.trace("Запрошены последние комментарии к обсуждению {} - {} ", timeFrom, timeTo);
|
|
||||||
List<BoardComment> mails = commentRepository.betweenByCreateDateTime(timeFrom, timeTo);
|
|
||||||
return getBoardComments(mails);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BoardComment> getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) {
|
|
||||||
log.trace("Запрошены последние комментарии к обсуждению {} - {} ", timeFrom, timeTo);
|
|
||||||
List<BoardComment> mails = commentRepository.betweenByAddDateTime(timeFrom, timeTo);
|
|
||||||
return getBoardComments(mails);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BoardComment> getNewMessage() {
|
|
||||||
throw new IllegalStateException("Не реализовано");
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<BoardComment> getBoardComments(List<BoardComment> mails) {
|
|
||||||
Set<Long> people = new HashSet<>();
|
|
||||||
List<BoardComment> returnMails = new ArrayList<>();
|
|
||||||
for (int i = mails.size() - 1; i >= 0; i--) {
|
|
||||||
if (!people.contains(mails.get(i).getPersonId())) {
|
|
||||||
returnMails.add(mails.get(i));
|
|
||||||
people.add(mails.get(i).getPersonId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return returnMails;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,5 +1,6 @@
|
|||||||
package org.sadtech.social.core.service.impl;
|
package org.sadtech.social.core.service.impl;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.sadtech.social.core.domain.content.Mail;
|
import org.sadtech.social.core.domain.content.Mail;
|
||||||
@ -70,6 +71,21 @@ public class MailServiceImpl implements MailService {
|
|||||||
return lastEventByAddDateTime;
|
return lastEventByAddDateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
|
||||||
|
mailRepository.deleteAllByAddDateBetween(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateBefore(@NonNull LocalDateTime date) {
|
||||||
|
mailRepository.deleteAllByAddDateBefore(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAllByAddDateAfter(@NonNull LocalDateTime date) {
|
||||||
|
mailRepository.deleteAllByAddDateAfter(date);
|
||||||
|
}
|
||||||
|
|
||||||
private List<Mail> getReturnMails(List<Mail> mails) {
|
private List<Mail> getReturnMails(List<Mail> mails) {
|
||||||
Set<Long> people = new HashSet<>();
|
Set<Long> people = new HashSet<>();
|
||||||
List<Mail> returnMails = new ArrayList<>();
|
List<Mail> returnMails = new ArrayList<>();
|
||||||
|
Loading…
Reference in New Issue
Block a user