65 lines
1.9 KiB
Java
65 lines
1.9 KiB
Java
package ru.dragonestia.picker.config;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Profile;
|
|
import ru.dragonestia.picker.model.Node;
|
|
import ru.dragonestia.picker.model.Room;
|
|
import ru.dragonestia.picker.model.User;
|
|
import ru.dragonestia.picker.model.type.PickingMode;
|
|
import ru.dragonestia.picker.model.type.SlotLimit;
|
|
import ru.dragonestia.picker.repository.NodeRepository;
|
|
import ru.dragonestia.picker.repository.RoomRepository;
|
|
import ru.dragonestia.picker.repository.UserRepository;
|
|
|
|
import java.util.List;
|
|
|
|
@Profile("test_pickers")
|
|
@Configuration
|
|
@RequiredArgsConstructor
|
|
public class TestPickersConfig {
|
|
|
|
private final NodeRepository nodeRepository;
|
|
private final RoomRepository roomRepository;
|
|
private final UserRepository userRepository;
|
|
|
|
@Bean
|
|
void createSequentialFillingNode() {
|
|
var node = new Node("seq", PickingMode.SEQUENTIAL_FILLING);
|
|
nodeRepository.create(node);
|
|
|
|
fillNode(node);
|
|
}
|
|
|
|
@Bean
|
|
void createRoundRobinNode() {
|
|
var node = new Node("round", PickingMode.ROUND_ROBIN);
|
|
nodeRepository.create(node);
|
|
|
|
fillNode(node);
|
|
}
|
|
|
|
@Bean
|
|
void createLeastPickerNode() {
|
|
var node = new Node("least", PickingMode.LEAST_PICKED);
|
|
nodeRepository.create(node);
|
|
|
|
fillNode(node);
|
|
}
|
|
|
|
private void fillNode(Node node) {
|
|
for (int i = 0, n = 5; i < n; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
var room = Room.create("room-" + i + "-" + j, node, SlotLimit.of(n), "");
|
|
roomRepository.create(room);
|
|
|
|
for (int k = n - i - 1; k >= 0; k--) {
|
|
var user = new User("user-" + k);
|
|
userRepository.linkWithRoom(room, List.of(user), false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|