add paper create strategy
parent
def4f97784
commit
bd78be93ab
@ -0,0 +1,9 @@
|
|||||||
|
package ru.ulstu.core.model;
|
||||||
|
|
||||||
|
import ru.ulstu.user.model.User;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface UserContainer {
|
||||||
|
List<User> getUsers();
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package ru.ulstu.strategy.api;
|
||||||
|
|
||||||
|
import ru.ulstu.core.model.UserContainer;
|
||||||
|
import ru.ulstu.user.model.User;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public abstract class EntityCreateStrategy<T extends UserContainer> {
|
||||||
|
protected abstract List<T> getActiveEntities();
|
||||||
|
|
||||||
|
protected abstract void createEntity(User user);
|
||||||
|
|
||||||
|
protected void createDefaultEntityIfNeed(List<User> allUsers, List<? extends UserContainer> entities) {
|
||||||
|
allUsers.forEach(user -> {
|
||||||
|
if (entities
|
||||||
|
.stream()
|
||||||
|
.filter(entity -> entity.getUsers().contains(user))
|
||||||
|
.collect(Collectors.toSet()).isEmpty()) {
|
||||||
|
createEntity(user);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createEntityIfNeed(List<User> allUsers) {
|
||||||
|
createDefaultEntityIfNeed(allUsers, getActiveEntities());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package ru.ulstu.strategy.api;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.ulstu.core.util.DateUtils;
|
||||||
|
import ru.ulstu.paper.model.Paper;
|
||||||
|
import ru.ulstu.paper.service.PaperService;
|
||||||
|
import ru.ulstu.user.model.User;
|
||||||
|
import ru.ulstu.user.service.UserService;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PaperCreateStrategy extends EntityCreateStrategy<Paper> {
|
||||||
|
private static final String DEFAULT_NAME = "Статья создана автоматически";
|
||||||
|
private static final int DEFAULT_DEADLINE_DAYS = 14;
|
||||||
|
private final PaperService paperService;
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
public PaperCreateStrategy(PaperService paperService,
|
||||||
|
UserService userService) {
|
||||||
|
this.paperService = paperService;
|
||||||
|
this.userService = userService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<Paper> getActiveEntities() {
|
||||||
|
return paperService.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createEntity(User user) {
|
||||||
|
paperService.create(DEFAULT_NAME, user, DateUtils.addDays(new Date(), DEFAULT_DEADLINE_DAYS));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package ru.ulstu.strategy.api;
|
||||||
|
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.ulstu.user.service.UserService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class StrategyEntityCreateExecutor {
|
||||||
|
private final List<EntityCreateStrategy> entityCreateStrategies;
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
public StrategyEntityCreateExecutor(List<EntityCreateStrategy> entityCreateStrategies,
|
||||||
|
UserService userService) {
|
||||||
|
this.entityCreateStrategies = entityCreateStrategies;
|
||||||
|
this.userService = userService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//@Scheduled(cron = "0 0 8 * * *")
|
||||||
|
@Scheduled(cron = "0 */5 * * * *")
|
||||||
|
public void scheduleExecuteStrategies() {
|
||||||
|
entityCreateStrategies.forEach(strategy -> strategy.createEntityIfNeed(userService.findAll()));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue