diff --git a/README.md b/README.md index 631796d..92de576 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ After that, you can connect to the server using `RoomPicker Client`. Example of using the RoomPicker Client ---------- -Create a Node and a Room, after that, system pick up a room for 5 users. +Create a Node and a Room, after that, system pick up a room for 5 entities. ```java class Example { public static void main(String[] args) { @@ -45,14 +45,14 @@ class Example { .setPayload("Hello world!"); client.getRoomRepository().saveRoom(roomDefinition); - // Picking room for 5 users - var users = new HashSet(); + // Picking room for 5 entities + var entities = new HashSet(); for (int i = 0 ; i < 5; i++) { - var user = UserIdentifier.of("test-user-" + i); - users.add(user); + var entity = UserIdentifier.of("test-entity-" + i); + entities.add(entity); } try { - var response = client.getNodeRepository().pickRoom(nodeId, users); + var response = client.getNodeRepository().pickRoom(nodeId, entities); // TODO... } catch (NoRoomsAvailableException ex) { // Cannot pick room diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/exception/ExceptionFactory.java b/client-api/src/main/java/ru/dragonestia/picker/api/exception/ExceptionFactory.java index 1086050..567e404 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/exception/ExceptionFactory.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/exception/ExceptionFactory.java @@ -18,8 +18,8 @@ public class ExceptionFactory { factory.put(InvalidInstanceIdentifierException.ERROR_ID, InvalidInstanceIdentifierException::new); factory.put(InvalidRoomIdentifierException.ERROR_ID, InvalidRoomIdentifierException::new); factory.put(InvalidUsernamesException.ERROR_ID, InvalidUsernamesException::new); - factory.put(NodeAlreadyExistException.ERROR_ID, NodeAlreadyExistException::new); - factory.put(NodeNotFoundException.ERROR_ID, NodeNotFoundException::new); + factory.put(InstanceAlreadyExistException.ERROR_ID, InstanceAlreadyExistException::new); + factory.put(InstanceNotFoundException.ERROR_ID, InstanceNotFoundException::new); factory.put(NoRoomsAvailableException.ERROR_ID, NoRoomsAvailableException::new); factory.put(RoomAlreadyExistException.ERROR_ID, RoomAlreadyExistException::new); factory.put(RoomAreFullException.ERROR_ID, RoomAreFullException::new); diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeAlreadyExistException.java b/client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceAlreadyExistException.java similarity index 78% rename from client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeAlreadyExistException.java rename to client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceAlreadyExistException.java index b83d11c..da40cf2 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeAlreadyExistException.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceAlreadyExistException.java @@ -4,17 +4,17 @@ import ru.dragonestia.picker.api.repository.response.ErrorResponse; import java.util.Map; -public final class NodeAlreadyExistException extends ApiException { +public final class InstanceAlreadyExistException extends ApiException { public static final String ERROR_ID = "err.node.already_exists"; private final String nodeId; - public NodeAlreadyExistException(String nodeId) { + public InstanceAlreadyExistException(String nodeId) { this.nodeId = nodeId; } - public NodeAlreadyExistException(ErrorResponse errorResponse) { + public InstanceAlreadyExistException(ErrorResponse errorResponse) { this(errorResponse.details().get("nodeId")); } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeNotFoundException.java b/client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceNotFoundException.java similarity index 55% rename from client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeNotFoundException.java rename to client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceNotFoundException.java index 992a57e..5955ff7 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/exception/NodeNotFoundException.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/exception/InstanceNotFoundException.java @@ -4,23 +4,23 @@ import ru.dragonestia.picker.api.repository.response.ErrorResponse; import java.util.Map; -public final class NodeNotFoundException extends ApiException { +public final class InstanceNotFoundException extends ApiException { - public static final String ERROR_ID = "err.node.not_found"; + public static final String ERROR_ID = "err.instance.not_found"; private final String nodeId; - public NodeNotFoundException(String nodeId) { + public InstanceNotFoundException(String nodeId) { this.nodeId = nodeId; } - public NodeNotFoundException(ErrorResponse errorResponse) { - this(errorResponse.details().get("node")); + public InstanceNotFoundException(ErrorResponse errorResponse) { + this(errorResponse.details().get("instance")); } @Override public String getMessage() { - return "Node '" + nodeId + "' does not found"; + return "Instance '" + nodeId + "' does not found"; } public String getNodeId() { @@ -34,6 +34,6 @@ public final class NodeNotFoundException extends ApiException { @Override public void appendDetailsToErrorResponse(Map details) { - details.put("node", getNodeId()); + details.put("instance", getNodeId()); } } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/model/user/IUser.java b/client-api/src/main/java/ru/dragonestia/picker/api/model/user/IUser.java index 65f8f97..7f77344 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/model/user/IUser.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/model/user/IUser.java @@ -2,7 +2,7 @@ package ru.dragonestia.picker.api.model.user; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.beans.Transient; @@ -11,8 +11,8 @@ public interface IUser { @NotNull String getIdentifier(); @Transient - default @NotNull UserIdentifier getIdentifierObject() { - return UserIdentifier.of(getIdentifier()); + default @NotNull EntityIdentifier getIdentifierObject() { + return EntityIdentifier.of(getIdentifier()); } @Nullable String getDetail(@NotNull UserDetails detail); diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/model/user/UserDefinition.java b/client-api/src/main/java/ru/dragonestia/picker/api/model/user/UserDefinition.java index 961141b..fcb75b9 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/model/user/UserDefinition.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/model/user/UserDefinition.java @@ -2,13 +2,13 @@ package ru.dragonestia.picker.api.model.user; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; public class UserDefinition implements IUser { private final String id; - public UserDefinition(@NotNull UserIdentifier identifier) { + public UserDefinition(@NotNull EntityIdentifier identifier) { id = identifier.getValue(); } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/NodeRepository.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/NodeRepository.java index 503b1ba..e1b3b48 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/NodeRepository.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/NodeRepository.java @@ -8,7 +8,7 @@ import ru.dragonestia.picker.api.repository.query.node.GetAllNodes; import ru.dragonestia.picker.api.repository.query.node.RemoveNodesByIds; import ru.dragonestia.picker.api.repository.response.PickedRoomResponse; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.List; import java.util.Optional; @@ -26,5 +26,5 @@ public interface NodeRepository { void saveNode(@NotNull NodeDefinition definition); - @NotNull PickedRoomResponse pickRoom(@NotNull NodeIdentifier identifier, @NotNull Set users); + @NotNull PickedRoomResponse pickRoom(@NotNull NodeIdentifier identifier, @NotNull Set users); } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindRoomsLinkedWithUser.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindRoomsLinkedWithUser.java index a88bfbd..df9578a 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindRoomsLinkedWithUser.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindRoomsLinkedWithUser.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.api.repository.query.user; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.model.room.RoomDetails; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.Arrays; import java.util.HashSet; @@ -29,14 +29,14 @@ public class FindRoomsLinkedWithUser { } @Contract("_ -> new") - public static @NotNull FindRoomsLinkedWithUser just(@NotNull UserIdentifier identifier) { + public static @NotNull FindRoomsLinkedWithUser just(@NotNull EntityIdentifier identifier) { return FindRoomsLinkedWithUser.builder() .setUserId(identifier) .build(); } @Contract("_ -> new") - public static @NotNull FindRoomsLinkedWithUser withAllDetails(@NotNull UserIdentifier identifier) { + public static @NotNull FindRoomsLinkedWithUser withAllDetails(@NotNull EntityIdentifier identifier) { return FindRoomsLinkedWithUser.builder() .setUserId(identifier) .setDetails(Arrays.stream(RoomDetails.values()).collect(Collectors.toSet())) @@ -55,7 +55,7 @@ public class FindRoomsLinkedWithUser { private Builder() {} @Contract("_ -> this") - public @NotNull Builder setUserId(@NotNull UserIdentifier identifier) { + public @NotNull Builder setUserId(@NotNull EntityIdentifier identifier) { userId = identifier.getValue(); return this; } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindUserById.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindUserById.java index 31cf783..bc0a1a0 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindUserById.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/FindUserById.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.api.repository.query.user; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.model.user.UserDetails; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.*; import java.util.stream.Collectors; @@ -27,14 +27,14 @@ public class FindUserById { } @Contract("_ -> new") - public static @NotNull FindUserById just(@NotNull UserIdentifier userId) { + public static @NotNull FindUserById just(@NotNull EntityIdentifier userId) { return builder() .setUserId(userId) .build(); } @Contract("_ -> new") - public static @NotNull FindUserById withAllDetails(@NotNull UserIdentifier userId) { + public static @NotNull FindUserById withAllDetails(@NotNull EntityIdentifier userId) { return builder() .setUserId(userId) .setDetails(Arrays.stream(UserDetails.values()).collect(Collectors.toSet())) @@ -53,7 +53,7 @@ public class FindUserById { private Builder() {} @Contract("_ -> this") - public @NotNull Builder setUserId(@NotNull UserIdentifier identifier) { + public @NotNull Builder setUserId(@NotNull EntityIdentifier identifier) { userId = identifier.getValue(); return this; } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/LinkUsersWithRoom.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/LinkUsersWithRoom.java index d4ed255..9558ec7 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/LinkUsersWithRoom.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/LinkUsersWithRoom.java @@ -4,7 +4,7 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.HashSet; import java.util.Set; @@ -48,7 +48,7 @@ public class LinkUsersWithRoom { private String nodeId = null; private String roomId = null; - private Set users = new HashSet<>(); + private Set users = new HashSet<>(); private boolean ignoreSlotLimitation = false; private Builder() {} @@ -66,13 +66,13 @@ public class LinkUsersWithRoom { } @Contract("_ -> this") - public @NotNull Builder setUsers(@NotNull Set users) { + public @NotNull Builder setUsers(@NotNull Set users) { this.users = users; return this; } @Contract("_ -> this") - public @NotNull Builder appendUser(@NotNull UserIdentifier user) { + public @NotNull Builder appendUser(@NotNull EntityIdentifier user) { users.add(user); return this; } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/SearchUsers.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/SearchUsers.java index 3b50b0b..dd49f83 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/SearchUsers.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/SearchUsers.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.api.repository.query.user; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.model.user.UserDetails; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.Arrays; import java.util.Collections; @@ -30,14 +30,14 @@ public class SearchUsers { } @Contract("_ -> new") - public static @NotNull SearchUsers just(@NotNull UserIdentifier searchInput) { + public static @NotNull SearchUsers just(@NotNull EntityIdentifier searchInput) { return SearchUsers.builder() .setSearchInput(searchInput) .build(); } @Contract("_ -> new") - public static @NotNull SearchUsers withAllDetails(@NotNull UserIdentifier searchInput) { + public static @NotNull SearchUsers withAllDetails(@NotNull EntityIdentifier searchInput) { return SearchUsers.builder() .setSearchInput(searchInput) .setDetails(Arrays.stream(UserDetails.values()).collect(Collectors.toSet())) @@ -56,7 +56,7 @@ public class SearchUsers { private Builder() {} @Contract("_ -> this") - public @NotNull Builder setSearchInput(@NotNull UserIdentifier input) { + public @NotNull Builder setSearchInput(@NotNull EntityIdentifier input) { searchInput = input.getValue(); return this; } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/UnlinkUsersFromRoom.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/UnlinkUsersFromRoom.java index 660f8a8..a09d8c8 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/UnlinkUsersFromRoom.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/query/user/UnlinkUsersFromRoom.java @@ -4,7 +4,7 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.HashSet; import java.util.Set; @@ -42,7 +42,7 @@ public class UnlinkUsersFromRoom { private String nodeId = null; private String roomId = null; - private Set users = new HashSet<>(); + private Set users = new HashSet<>(); private Builder() {} @@ -59,13 +59,13 @@ public class UnlinkUsersFromRoom { } @Contract("_ -> this") - public @NotNull Builder setUsers(@NotNull Set users) { + public @NotNull Builder setUsers(@NotNull Set users) { this.users = users; return this; } @Contract("_ -> this") - public @NotNull Builder appendUser(@NotNull UserIdentifier user) { + public @NotNull Builder appendUser(@NotNull EntityIdentifier user) { users.add(user); return this; } diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/UserIdentifier.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/EntityIdentifier.java similarity index 65% rename from client-api/src/main/java/ru/dragonestia/picker/api/repository/type/UserIdentifier.java rename to client-api/src/main/java/ru/dragonestia/picker/api/repository/type/EntityIdentifier.java index 6fe9b7b..0301d00 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/UserIdentifier.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/EntityIdentifier.java @@ -5,9 +5,9 @@ import ru.dragonestia.picker.api.util.IdentifierValidator; import java.security.InvalidParameterException; -public class UserIdentifier extends ValueObject { +public class EntityIdentifier extends ValueObject { - private UserIdentifier(String value) { + private EntityIdentifier(String value) { super(value); } @@ -18,7 +18,7 @@ public class UserIdentifier extends ValueObject { throw new InvalidParameterException("Invalid user identifier"); } - public static @NotNull UserIdentifier of(@NotNull String identifier) { - return new UserIdentifier(identifier); + public static @NotNull EntityIdentifier of(@NotNull String identifier) { + return new EntityIdentifier(identifier); } } diff --git a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/NodeRepositoryImpl.java b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/NodeRepositoryImpl.java index 2c195b3..27f5d55 100644 --- a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/NodeRepositoryImpl.java +++ b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/NodeRepositoryImpl.java @@ -2,7 +2,7 @@ package ru.dragonestia.picker.api.impl.repository; import org.jetbrains.annotations.ApiStatus.Internal; import org.jetbrains.annotations.NotNull; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.impl.RoomPickerClient; import ru.dragonestia.picker.api.impl.util.EnumUtils; import ru.dragonestia.picker.api.impl.util.RestTemplate; @@ -17,7 +17,7 @@ import ru.dragonestia.picker.api.repository.response.NodeDetailsResponse; import ru.dragonestia.picker.api.repository.response.NodeListResponse; import ru.dragonestia.picker.api.repository.response.PickedRoomResponse; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.List; import java.util.Optional; @@ -46,7 +46,7 @@ public class NodeRepositoryImpl implements NodeRepository { params.put("requiredDetails", EnumUtils.enumSetToString(data.getDetails())); }); return Optional.of(response.node()); - } catch (NodeNotFoundException ex) { + } catch (InstanceNotFoundException ex) { return Optional.empty(); } } @@ -75,7 +75,7 @@ public class NodeRepositoryImpl implements NodeRepository { } @Override - public @NotNull PickedRoomResponse pickRoom(@NotNull NodeIdentifier identifier, @NotNull Set users) { + public @NotNull PickedRoomResponse pickRoom(@NotNull NodeIdentifier identifier, @NotNull Set users) { return rest.queryPostWithBody( "/nodes/" + identifier.getValue() + "/pick", PickedRoomResponse.class, diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/AddUsers.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/AddUsers.java index 7456bb1..9be3cdf 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/AddUsers.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/AddUsers.java @@ -15,7 +15,7 @@ import lombok.Getter; import ru.dragonestia.picker.api.model.room.IRoom; import ru.dragonestia.picker.api.model.user.IUser; import ru.dragonestia.picker.api.model.user.UserDefinition; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.Collection; import java.util.List; @@ -56,7 +56,7 @@ public class AddUsers extends Details { .map(user -> user.getUserIdentifierField().getValue()) .map(String::trim) .filter(user -> !user.isEmpty()) - .map(id -> (IUser) new UserDefinition(UserIdentifier.of(id))) + .map(id -> (IUser) new UserDefinition(EntityIdentifier.of(id))) .toList(); } diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/config/SecurityConfig.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/config/SecurityConfig.java index 0ee91fb..6011e50 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/config/SecurityConfig.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/config/SecurityConfig.java @@ -48,8 +48,8 @@ public class SecurityConfig extends VaadinWebSecurity { super.configure(http); http.formLogin(login -> { - login.successForwardUrl("/nodes"); - login.defaultSuccessUrl("/nodes"); + login.successForwardUrl("/instances"); + login.defaultSuccessUrl("/instances"); }); setLoginView(http, LoginPage.class); } diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java index 2f7c986..c09a699 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java @@ -24,7 +24,7 @@ import ru.dragonestia.picker.cp.util.RouteParamsExtractor; @RequiredArgsConstructor @RolesAllowed("USER") @PageTitle("Rooms") -@Route(value = "/nodes/:nodeId", layout = MainLayout.class) +@Route(value = "/instances/:nodeId", layout = MainLayout.class) public class NodeDetailsPage extends VerticalLayout implements BeforeEnterObserver { private final SecurityService securityService; diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java index e1d69cf..136ed24 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java @@ -17,7 +17,7 @@ import ru.dragonestia.picker.cp.service.SecurityService; @RolesAllowed("USER") @PageTitle("Nodes") @RouteAlias(value = "/", layout = MainLayout.class) -@Route(value = "/nodes", layout = MainLayout.class) +@Route(value = "/instances", layout = MainLayout.class) public class NodesPage extends VerticalLayout { private final NodeRepository nodeRepository; diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/RoomDetailsPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/RoomDetailsPage.java index 0fd4bc8..5c29473 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/RoomDetailsPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/RoomDetailsPage.java @@ -36,7 +36,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @RolesAllowed("USER") @PageTitle("Room details") -@Route(value = "/nodes/:nodeId/rooms/:roomId", layout = MainLayout.class) +@Route(value = "/instances/:nodeId/rooms/:roomId", layout = MainLayout.class) public class RoomDetailsPage extends VerticalLayout implements BeforeEnterObserver { private final SecurityService securityService; diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/UserSearchPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/UserSearchPage.java index a8120b2..c55ff94 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/UserSearchPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/UserSearchPage.java @@ -19,7 +19,7 @@ import ru.dragonestia.picker.api.model.user.IUser; import ru.dragonestia.picker.api.model.user.UserDetails; import ru.dragonestia.picker.api.repository.UserRepository; import ru.dragonestia.picker.api.repository.query.user.SearchUsers; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import ru.dragonestia.picker.cp.component.RefreshableTable; import ru.dragonestia.picker.cp.service.SecurityService; @@ -98,7 +98,7 @@ public class UserSearchPage extends VerticalLayout implements RefreshableTable { userGrid.setItems(); } - userGrid.setItems(cachedUsers = userRepository.searchUsers(SearchUsers.withAllDetails(UserIdentifier.of(input))) + userGrid.setItems(cachedUsers = userRepository.searchUsers(SearchUsers.withAllDetails(EntityIdentifier.of(input))) .stream().map(user -> (IUser) user).toList()); } diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/plug/NodeNotFoundPlug.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/plug/NodeNotFoundPlug.java index 1aebdd1..2aa6150 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/plug/NodeNotFoundPlug.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/plug/NodeNotFoundPlug.java @@ -4,13 +4,13 @@ import com.vaadin.flow.router.BeforeEnterEvent; import com.vaadin.flow.router.ErrorParameter; import com.vaadin.flow.router.HasErrorParameter; import jakarta.servlet.http.HttpServletResponse; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.cp.component.NavPath; -public class NodeNotFoundPlug extends ErrorPlug implements HasErrorParameter { +public class NodeNotFoundPlug extends ErrorPlug implements HasErrorParameter { @Override - public int setErrorParameter(BeforeEnterEvent beforeEnterEvent, ErrorParameter errorParameter) { + public int setErrorParameter(BeforeEnterEvent beforeEnterEvent, ErrorParameter errorParameter) { var ex = errorParameter.getException(); var nodeId = ex.getNodeId(); diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/util/RouteParamsExtractor.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/util/RouteParamsExtractor.java index ff9e758..47d23cc 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/util/RouteParamsExtractor.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/util/RouteParamsExtractor.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.cp.util; import com.vaadin.flow.router.BeforeEnterEvent; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.exception.RoomNotFoundException; import ru.dragonestia.picker.api.impl.RoomPickerClient; import ru.dragonestia.picker.api.model.account.IAccount; @@ -15,7 +15,7 @@ import ru.dragonestia.picker.api.repository.query.room.FindRoomById; import ru.dragonestia.picker.api.repository.query.user.FindUserById; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; @Component @RequiredArgsConstructor @@ -23,19 +23,19 @@ public class RouteParamsExtractor { private final RoomPickerClient client; - public INode extractNode(BeforeEnterEvent e) throws NodeNotFoundException { - var nodeId = NodeIdentifier.of(e.getRouteParameters().get("nodeId").orElseThrow(() -> new NodeNotFoundException("null"))); - return client.getNodeRepository().findNodeById(FindNodeById.justFind(nodeId)).orElseThrow(() -> new NodeNotFoundException(nodeId.getValue())); + public INode extractNode(BeforeEnterEvent e) throws InstanceNotFoundException { + var nodeId = NodeIdentifier.of(e.getRouteParameters().get("nodeId").orElseThrow(() -> new InstanceNotFoundException("null"))); + return client.getNodeRepository().findNodeById(FindNodeById.justFind(nodeId)).orElseThrow(() -> new InstanceNotFoundException(nodeId.getValue())); } public IRoom extractRoom(BeforeEnterEvent e, INode node) throws RoomNotFoundException { var nodeId = node.getIdentifierObject(); - var roomId = RoomIdentifier.of(e.getRouteParameters().get("roomId").orElseThrow(() -> new NodeNotFoundException("null"))); - return client.getRoomRepository().find(FindRoomById.just(nodeId, roomId)).orElseThrow(() -> new NodeNotFoundException(roomId.getValue())); + var roomId = RoomIdentifier.of(e.getRouteParameters().get("roomId").orElseThrow(() -> new InstanceNotFoundException("null"))); + return client.getRoomRepository().find(FindRoomById.just(nodeId, roomId)).orElseThrow(() -> new InstanceNotFoundException(roomId.getValue())); } public IUser extractUser(BeforeEnterEvent e) { - var userId = UserIdentifier.of(e.getRouteParameters().get("userId").orElseThrow(RuntimeException::new)); + var userId = EntityIdentifier.of(e.getRouteParameters().get("userId").orElseThrow(RuntimeException::new)); return client.getUserRepository().findUserById(FindUserById.withAllDetails(userId)); } diff --git a/noiser/src/main/java/ru/dragonestia/picker/noiser/Main.java b/noiser/src/main/java/ru/dragonestia/picker/noiser/Main.java index 41d4f9b..a2c9986 100644 --- a/noiser/src/main/java/ru/dragonestia/picker/noiser/Main.java +++ b/noiser/src/main/java/ru/dragonestia/picker/noiser/Main.java @@ -8,7 +8,7 @@ import ru.dragonestia.picker.api.repository.query.node.GetAllNodes; import ru.dragonestia.picker.api.repository.query.user.UnlinkUsersFromRoom; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -76,13 +76,13 @@ public class Main { try { synchronized (usersInNode) { - var users = new HashSet(); + var users = new HashSet(); var maxAdd = Math.min(10, (expectedUsers / nodes.size()) - usersInNode.get()); if (maxAdd == 0) return; var add = maxAdd == 1 ? 1 : (random.nextInt(maxAdd - 1) + 1); for (int i = 0; i < add; i++) { - users.add(UserIdentifier.of(UUID.randomUUID().toString())); + users.add(EntityIdentifier.of(UUID.randomUUID().toString())); } var request = client.getNodeRepository().pickRoom(nodeId, users); diff --git a/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java b/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java index ac00059..b76d980 100644 --- a/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java +++ b/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.model.room.Room; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.repository.impl.ContainerRepository; import java.util.Map; @@ -30,7 +30,7 @@ public class UserMetricsAspect { private final ContainerRepository containerRepository; private final RoomRepository roomRepository; - private final UserRepository userRepository; + private final EntityRepository entityRepository; private final MeterRegistry meterRegistry; private final AtomicInteger totalUsers = new AtomicInteger(0); @@ -41,18 +41,18 @@ public class UserMetricsAspect { meterRegistry.gauge("roompicker_total_users", totalUsers); } - @After(value = "execution(* ru.dragonestia.picker.repository.UserRepository.linkWithRoom(ru.dragonestia.picker.model.room.Room, ..)) && args(room, ..)", argNames = "room") + @After(value = "execution(* ru.dragonestia.picker.repository.EntityRepository.linkWithRoom(ru.dragonestia.picker.model.room.Room, ..)) && args(room, ..)", argNames = "room") void onLinkUsers(Room room) { countAllUsers(room); } - @After(value = "execution(void ru.dragonestia.picker.repository.UserRepository.unlinkWithRoom(ru.dragonestia.picker.model.room.Room, ..)) && args(room, ..)", argNames = "room") + @After(value = "execution(void ru.dragonestia.picker.repository.EntityRepository.unlinkWithRoom(ru.dragonestia.picker.model.room.Room, ..)) && args(room, ..)", argNames = "room") void onUnlinkUsers(Room room) { countAllUsers(room); } private void countAllUsers(Room room) { - totalUsers.set(userRepository.countAllUsers()); + totalUsers.set(entityRepository.countAllEntities()); } @After(value = "execution(void ru.dragonestia.picker.repository.InstanceRepository.create(ru.dragonestia.picker.model.instance.Instance)) && args(instance)", argNames = "instance") @@ -95,7 +95,7 @@ public class UserMetricsAspect { @Scheduled(fixedDelay = 3_000) void updateUserMetrics() { - userRepository.countUsersForNodes().forEach((nodeId, users) -> { + entityRepository.countEntitiesForNodes().forEach((nodeId, users) -> { Optional.ofNullable(data.get(nodeId)).ifPresent(node -> node.users().set(users)); }); diff --git a/server/src/main/java/ru/dragonestia/picker/config/TestConfig.java b/server/src/main/java/ru/dragonestia/picker/config/TestConfig.java index 8aba9c8..99b67d4 100644 --- a/server/src/main/java/ru/dragonestia/picker/config/TestConfig.java +++ b/server/src/main/java/ru/dragonestia/picker/config/TestConfig.java @@ -14,14 +14,14 @@ import ru.dragonestia.picker.api.model.node.PickingMethod; import ru.dragonestia.picker.api.model.room.IRoom; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import ru.dragonestia.picker.interceptor.DebugInterceptor; import ru.dragonestia.picker.model.instance.Instance; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.model.factory.RoomFactory; import ru.dragonestia.picker.repository.RoomRepository; import ru.dragonestia.picker.repository.InstanceRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import java.util.List; import java.util.Random; @@ -34,7 +34,7 @@ public class TestConfig implements WebMvcConfigurer { private final InstanceRepository instanceRepository; private final RoomRepository roomRepository; - private final UserRepository userRepository; + private final EntityRepository entityRepository; private final RoomFactory roomFactory; private final Random rand = new Random(0); @@ -62,8 +62,8 @@ public class TestConfig implements WebMvcConfigurer { roomRepository.create(room); for (int j = 0, n = rand.nextInt(slots + 1); j < n; j++) { - var user = new User(UserIdentifier.of("test-user-" + rand.nextInt(20))); - userRepository.linkWithRoom(room, List.of(user), false); + var user = new Entity(EntityIdentifier.of("test-user-" + rand.nextInt(20))); + entityRepository.linkWithRoom(room, List.of(user), false); } } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/UserController.java b/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java similarity index 74% rename from server/src/main/java/ru/dragonestia/picker/controller/UserController.java rename to server/src/main/java/ru/dragonestia/picker/controller/EntityController.java index a6ceafa..69853a4 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/UserController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java @@ -9,16 +9,16 @@ import ru.dragonestia.picker.api.repository.response.LinkedRoomsWithUserResponse import ru.dragonestia.picker.api.repository.response.SearchUserResponse; import ru.dragonestia.picker.api.repository.response.UserDetailsResponse; -@Tag(name = "Users", description = "User management") +@Tag(name = "Users", description = "Entity management") @RequiredArgsConstructor @RestController @RequestMapping("/users") -public class UserController { +public class EntityController { @Operation(summary = "Search user by identifier") @GetMapping("/search") SearchUserResponse search( - @Parameter(description = "User identifier input") @RequestParam(name = "input") String input + @Parameter(description = "Entity identifier input") @RequestParam(name = "input") String input ) { throw new UnsupportedOperationException("Not implemented"); } @@ -26,7 +26,7 @@ public class UserController { @Operation(summary = "Get user info") @GetMapping("/{userId}") UserDetailsResponse find( - @Parameter(description = "User identifier") @PathVariable(value = "userId") String userId + @Parameter(description = "Entity identifier") @PathVariable(value = "userId") String userId ) { throw new UnsupportedOperationException("Not implemented"); } @@ -34,7 +34,7 @@ public class UserController { @Operation(summary = "Get rooms linked with user") @GetMapping("/{userId}/rooms") LinkedRoomsWithUserResponse roomsOf( - @Parameter(description = "User identifier") @PathVariable(value = "userId") String userId + @Parameter(description = "Entity identifier") @PathVariable(value = "userId") String userId ) { throw new UnsupportedOperationException("Not implemented"); } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/UserRoomController.java b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java similarity index 68% rename from server/src/main/java/ru/dragonestia/picker/controller/UserRoomController.java rename to server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java index a96131b..e843647 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/UserRoomController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java @@ -9,18 +9,17 @@ import org.springframework.web.bind.annotation.*; import ru.dragonestia.picker.api.repository.response.LinkUsersWithRoomResponse; import ru.dragonestia.picker.api.repository.response.RoomUserListResponse; -@Tag(name = "Users", description = "User management") +@Tag(name = "Users", description = "Entity management") @RequiredArgsConstructor @RestController -@RequestMapping("/nodes/{nodeId}/rooms/{roomId}/users") -public class UserRoomController { +@RequestMapping("/instances/{instanceId}/rooms/{roomId}/users") +public class EntityRoomController { @Operation(summary = "Get users inside room") @GetMapping ResponseEntity usersInsideRoom( - @Parameter(description = "Instance identifier") @PathVariable(name = "nodeId") String nodeId, - @Parameter(description = "Room identifier") @PathVariable(name = "roomId") String roomId, - @Parameter(description = "Required addition user data", example = "COUNT_ROOMS") @RequestParam(name = "requiredDetails", required = false, defaultValue = "") String detailsSeq + @Parameter(description = "Instance identifier") @PathVariable(name = "instanceId") String instanceId, + @Parameter(description = "Room identifier") @PathVariable(name = "roomId") String roomId ) { throw new UnsupportedOperationException("Not implemented"); } @@ -28,9 +27,9 @@ public class UserRoomController { @Operation(summary = "Link users with room") @PostMapping ResponseEntity linkUserWithRoom( - @Parameter(description = "Instance identifier") @PathVariable(name = "nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable(name = "instanceId") String instanceId, @Parameter(description = "Room identifier") @PathVariable(name = "roomId") String roomId, - @Parameter(description = "User identifiers", example = "user1,user2,user3") @RequestParam(name = "userIds") String userIds, + @Parameter(description = "Entity identifiers", example = "user1,user2,user3") @RequestParam(name = "userIds") String userIds, @Parameter(description = "Ignore slot limitation") @RequestParam(name = "force") boolean force ) { throw new UnsupportedOperationException("Not implemented"); @@ -39,9 +38,9 @@ public class UserRoomController { @Operation(summary = "Unlink users from room") @DeleteMapping ResponseEntity unlinkUsersForBucket( - @Parameter(description = "Instance identifier") @PathVariable(name = "nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable(name = "instanceId") String instanceId, @Parameter(description = "Room identifier") @PathVariable(name = "roomId") String roomId, - @Parameter(description = "User identifiers", example = "user1,user2,user3") @RequestParam(name = "userIds") String userIds + @Parameter(description = "Entity identifiers", example = "user1,user2,user3") @RequestParam(name = "userIds") String userIds ) { throw new UnsupportedOperationException("Not implemented"); } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/ExceptionHandlerController.java b/server/src/main/java/ru/dragonestia/picker/controller/ExceptionHandlerController.java index 9e2e013..950c451 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/ExceptionHandlerController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/ExceptionHandlerController.java @@ -11,8 +11,8 @@ import java.util.HashMap; @RestControllerAdvice public class ExceptionHandlerController { - @ExceptionHandler(NodeNotFoundException.class) - ResponseEntity nodeNotFound(NodeNotFoundException ex) { + @ExceptionHandler(InstanceNotFoundException.class) + ResponseEntity nodeNotFound(InstanceNotFoundException ex) { return create(404, ex); } @@ -36,8 +36,8 @@ public class ExceptionHandlerController { return create(400, ex); } - @ExceptionHandler(NodeAlreadyExistException.class) - ResponseEntity nodeAlreadyExists(NodeAlreadyExistException ex) { + @ExceptionHandler(InstanceAlreadyExistException.class) + ResponseEntity nodeAlreadyExists(InstanceAlreadyExistException ex) { return create(400, ex); } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/NodeController.java b/server/src/main/java/ru/dragonestia/picker/controller/InstanceController.java similarity index 79% rename from server/src/main/java/ru/dragonestia/picker/controller/NodeController.java rename to server/src/main/java/ru/dragonestia/picker/controller/InstanceController.java index 257c36a..e78ea83 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/NodeController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/InstanceController.java @@ -13,20 +13,20 @@ import ru.dragonestia.picker.api.repository.response.PickedRoomResponse; @Tag(name = "Nodes", description = "Instance management") @RestController -@RequestMapping("/nodes") +@RequestMapping("/instances") @RequiredArgsConstructor -public class NodeController { +public class InstanceController { @Operation(summary = "Get all nodes") @GetMapping - NodeListResponse allNodes() { + NodeListResponse allInstances() { throw new UnsupportedOperationException("Not implemented"); } @Operation(summary = "Register new node") @PostMapping - ResponseEntity registerNode( - @Parameter(description = "Instance identifier") @RequestParam(name = "nodeId") String nodeId, + ResponseEntity registerInstance( + @Parameter(description = "Instance identifier") @RequestParam(name = "instanceId") String instanceId, @Parameter(description = "Picking method method") @RequestParam(name = "method") PickingMethod method, @Parameter(description = "Save node") @RequestParam(name = "persist", required = false, defaultValue = "false") boolean persist ) { @@ -34,25 +34,25 @@ public class NodeController { } @Operation(summary = "Get node details") - @GetMapping("/{nodeId}") - ResponseEntity nodeDetails( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId + @GetMapping("/{instanceId}") + ResponseEntity instanceDetails( + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId ) { throw new UnsupportedOperationException("Not implemented"); } @Operation(summary = "Unregister node") - @DeleteMapping("/{nodeId}") - ResponseEntity removeNode( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId + @DeleteMapping("/{instanceId}") + ResponseEntity removeInstance( + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId ) { throw new UnsupportedOperationException("Not implemented"); } @Operation(summary = "Pick node for users") - @PostMapping("/{nodeId}/pick") + @PostMapping("/{instanceId}/pick") ResponseEntity pickRoom( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId, @RequestBody String userIds ) { throw new UnsupportedOperationException("Not implemented"); diff --git a/server/src/main/java/ru/dragonestia/picker/controller/RoomController.java b/server/src/main/java/ru/dragonestia/picker/controller/RoomController.java index 6b4db0b..e0e61f5 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/RoomController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/RoomController.java @@ -12,14 +12,14 @@ import ru.dragonestia.picker.api.repository.response.RoomListResponse; @Tag(name = "Rooms", description = "Room management") @RestController -@RequestMapping("/nodes/{nodeId}/rooms") +@RequestMapping("/instances/{instanceId}/rooms") @RequiredArgsConstructor public class RoomController { @Operation(summary = "Get all rooms from node") @GetMapping ResponseEntity all( - @Parameter(description = "Instance identifier") @PathVariable(name = "nodeId") String nodeId + @Parameter(description = "Instance identifier") @PathVariable(name = "instanceId") String instanceId ) { throw new UnsupportedOperationException("Not implemented"); } @@ -27,7 +27,7 @@ public class RoomController { @Operation(summary = "Register new room") @PostMapping ResponseEntity register( - @Parameter(description = "Instance identifier") @PathVariable(name = "nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable(name = "instanceId") String instanceId, @Parameter(description = "Room identifier") @RequestParam(name = "roomId") String roomId, @Parameter(description = "Maximum users count in room") @RequestParam(name = "slots") int slots, @Parameter(description = "Payload. Some data") @RequestParam(name = "payload") String payload, @@ -40,7 +40,7 @@ public class RoomController { @Operation(summary = "Unregister room") @DeleteMapping("/{roomId}") ResponseEntity remove( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId, @Parameter(description = "Room identifier") @PathVariable("roomId") String roomId ) { throw new UnsupportedOperationException("Not implemented"); @@ -49,7 +49,7 @@ public class RoomController { @Operation(summary = "Get room details") @GetMapping("/{roomId}") ResponseEntity info( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId, @Parameter(description = "Room identifier") @PathVariable("roomId") String roomId ) { throw new UnsupportedOperationException("Not implemented"); @@ -59,7 +59,7 @@ public class RoomController { @ApiResponse(description = "New lock state") @PutMapping("/{roomId}/lock") ResponseEntity lockRoom( - @Parameter(description = "Instance identifier") @PathVariable("nodeId") String nodeId, + @Parameter(description = "Instance identifier") @PathVariable("instanceId") String instanceId, @Parameter(description = "Room identifier") @PathVariable("roomId") String roomId, @Parameter(description = "New state for Lock property") @RequestParam(name = "newState") boolean value ) { diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java index bcd7b1a..1ba41c2 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java @@ -4,15 +4,15 @@ import jakarta.validation.constraints.NotNull; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.stereotype.Controller; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; -import ru.dragonestia.picker.controller.graphql.entity.EntityInstance; -import ru.dragonestia.picker.controller.graphql.entity.EntityRoom; -import ru.dragonestia.picker.controller.graphql.entity.EntityUser; -import ru.dragonestia.picker.controller.graphql.entity.type.DataProvider; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; +import ru.dragonestia.picker.controller.graphql.object.ObjectInstance; +import ru.dragonestia.picker.controller.graphql.object.ObjectRoom; +import ru.dragonestia.picker.controller.graphql.object.ObjectEntity; +import ru.dragonestia.picker.controller.graphql.object.type.DataProvider; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.service.InstanceService; import ru.dragonestia.picker.service.RoomService; -import ru.dragonestia.picker.service.UserService; +import ru.dragonestia.picker.service.EntityService; import java.util.List; @@ -21,59 +21,59 @@ public class GraphqlController { private final InstanceService instanceService; private final RoomService roomService; - private final UserService userService; + private final EntityService entityService; private final DataProvider dataProvider; - public GraphqlController(InstanceService instanceService, RoomService roomService, UserService userService) { + public GraphqlController(InstanceService instanceService, RoomService roomService, EntityService entityService) { this.instanceService = instanceService; this.roomService = roomService; - this.userService = userService; - dataProvider = new DataProvider(instanceService, roomService, userService); + this.entityService = entityService; + dataProvider = new DataProvider(instanceService, roomService, entityService); } @QueryMapping - List allInstances() { + List allInstances() { return instanceService.all().stream() - .map(node -> new EntityInstance(node, dataProvider)) + .map(node -> new ObjectInstance(node, dataProvider)) .toList(); } @QueryMapping - EntityInstance instanceById(@Argument String id) { + ObjectInstance instanceById(@Argument String id) { return instanceService.find(id) - .map(node -> new EntityInstance(node, dataProvider)) + .map(node -> new ObjectInstance(node, dataProvider)) .orElse(null); } @QueryMapping - List allRooms(@NotNull String nodeId) { + List allRooms(@NotNull String nodeId) { var node = instanceService.find(nodeId).orElse(null); if (node == null) return null; return roomService.all(node).stream() - .map(room -> new EntityRoom(room, dataProvider)) + .map(room -> new ObjectRoom(room, dataProvider)) .toList(); } @QueryMapping - EntityRoom roomById(@Argument String nodeId, @NotNull String roomId) { + ObjectRoom roomById(@Argument String nodeId, @NotNull String roomId) { var node = instanceService.find(nodeId).orElse(null); if (node == null) return null; return roomService.find(node, roomId) - .map(room -> new EntityRoom(room, dataProvider)) + .map(room -> new ObjectRoom(room, dataProvider)) .orElse(null); } @QueryMapping - EntityUser userById(@Argument String id) { - return new EntityUser(new User(UserIdentifier.of(id)), dataProvider); + ObjectEntity entityById(@Argument String id) { + return new ObjectEntity(new Entity(EntityIdentifier.of(id)), dataProvider); } @QueryMapping - List searchUser(@Argument String input) { - return userService.searchUsers(input).stream() - .map(user -> new EntityUser(new User(user.getIdentifierObject()), dataProvider)) + List searchEntity(@Argument String input) { + return entityService.searchEntities(input).stream() + .map(user -> new ObjectEntity(new Entity(user.getIdentifierObject()), dataProvider)) .toList(); } } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityUser.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityUser.java deleted file mode 100644 index abb0f37..0000000 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityUser.java +++ /dev/null @@ -1,36 +0,0 @@ -package ru.dragonestia.picker.controller.graphql.entity; - -import jakarta.validation.constraints.NotNull; -import lombok.RequiredArgsConstructor; -import ru.dragonestia.picker.controller.graphql.entity.type.DataProvider; -import ru.dragonestia.picker.model.user.User; - -import java.util.List; - -@RequiredArgsConstructor -public class EntityUser { - - private final User user; - private final DataProvider dataProvider; - private List cachedRooms = null; - - public @NotNull String getId() { - return user.getIdentifier(); - } - - public List getRooms() { - if (cachedRooms != null) { - return cachedRooms; - } - - cachedRooms = dataProvider.userService().getUserRooms(user).stream() - .map(room -> new EntityRoom(room, dataProvider)) - .toList(); - - return cachedRooms; - } - - public int getCountRooms() { - return getRooms().size(); - } -} diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectEntity.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectEntity.java new file mode 100644 index 0000000..f133603 --- /dev/null +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectEntity.java @@ -0,0 +1,36 @@ +package ru.dragonestia.picker.controller.graphql.object; + +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import ru.dragonestia.picker.controller.graphql.object.type.DataProvider; +import ru.dragonestia.picker.model.entity.Entity; + +import java.util.List; + +@RequiredArgsConstructor +public class ObjectEntity { + + private final Entity entity; + private final DataProvider dataProvider; + private List cachedRooms = null; + + public @NotNull String getId() { + return entity.getIdentifier(); + } + + public List getRooms() { + if (cachedRooms != null) { + return cachedRooms; + } + + cachedRooms = dataProvider.entityService().getEntityRooms(entity).stream() + .map(room -> new ObjectRoom(room, dataProvider)) + .toList(); + + return cachedRooms; + } + + public int getCountRooms() { + return getRooms().size(); + } +} diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityInstance.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectInstance.java similarity index 71% rename from server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityInstance.java rename to server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectInstance.java index 100cd7d..05aae6e 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityInstance.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectInstance.java @@ -1,17 +1,17 @@ -package ru.dragonestia.picker.controller.graphql.entity; +package ru.dragonestia.picker.controller.graphql.object; import lombok.RequiredArgsConstructor; -import ru.dragonestia.picker.controller.graphql.entity.type.DataProvider; +import ru.dragonestia.picker.controller.graphql.object.type.DataProvider; import ru.dragonestia.picker.model.instance.Instance; import java.util.List; @RequiredArgsConstructor -public class EntityInstance { +public class ObjectInstance { private final Instance instance; private final DataProvider dataProvider; - private List cachedRooms = null; + private List cachedRooms = null; public String getId() { return instance.getIdentifier(); @@ -21,13 +21,13 @@ public class EntityInstance { return instance.getPickingMethod().name(); } - public List getRooms() { + public List getRooms() { if (cachedRooms != null) { return cachedRooms; } cachedRooms = dataProvider.roomService().all(instance).stream() - .map(room -> new EntityRoom(room, dataProvider)) + .map(room -> new ObjectRoom(room, dataProvider)) .toList(); return cachedRooms; diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityRoom.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectRoom.java similarity index 62% rename from server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityRoom.java rename to server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectRoom.java index 933cdae..db06bd2 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/EntityRoom.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/ObjectRoom.java @@ -1,17 +1,17 @@ -package ru.dragonestia.picker.controller.graphql.entity; +package ru.dragonestia.picker.controller.graphql.object; import lombok.RequiredArgsConstructor; -import ru.dragonestia.picker.controller.graphql.entity.type.DataProvider; +import ru.dragonestia.picker.controller.graphql.object.type.DataProvider; import ru.dragonestia.picker.model.room.Room; import java.util.List; @RequiredArgsConstructor -public class EntityRoom { +public class ObjectRoom { private final Room room; private final DataProvider dataProvider; - private List cachedUsers = null; + private List cachedUsers = null; public String getId() { return room.getIdentifier(); @@ -21,9 +21,9 @@ public class EntityRoom { return room.getInstanceIdentifier(); } - public EntityInstance getInstance() { + public ObjectInstance getInstance() { return dataProvider.instanceService().find(room.getInstanceIdentifier()) - .map(node -> new EntityInstance(node, dataProvider)) + .map(node -> new ObjectInstance(node, dataProvider)) .orElseThrow(); } @@ -39,20 +39,20 @@ public class EntityRoom { return room.isLocked(); } - public List getUsers() { + public List getEntities() { if (cachedUsers != null) { return cachedUsers; } - cachedUsers = dataProvider.userService().getRoomUsers(room).stream() - .map(user -> new EntityUser(user, dataProvider)) + cachedUsers = dataProvider.entityService().getRoomEntities(room).stream() + .map(user -> new ObjectEntity(user, dataProvider)) .toList(); return cachedUsers; } - public int getCountUsers() { - return getUsers().size(); + public int getCountEntities() { + return getEntities().size(); } public boolean isPersist() { diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/type/DataProvider.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/type/DataProvider.java similarity index 60% rename from server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/type/DataProvider.java rename to server/src/main/java/ru/dragonestia/picker/controller/graphql/object/type/DataProvider.java index 9629077..1209460 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/entity/type/DataProvider.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/object/type/DataProvider.java @@ -1,10 +1,10 @@ -package ru.dragonestia.picker.controller.graphql.entity.type; +package ru.dragonestia.picker.controller.graphql.object.type; import jakarta.validation.constraints.NotNull; import ru.dragonestia.picker.service.InstanceService; import ru.dragonestia.picker.service.RoomService; -import ru.dragonestia.picker.service.UserService; +import ru.dragonestia.picker.service.EntityService; public record DataProvider(@NotNull InstanceService instanceService, @NotNull RoomService roomService, - @NotNull UserService userService) {} + @NotNull EntityService entityService) {} diff --git a/server/src/main/java/ru/dragonestia/picker/model/user/User.java b/server/src/main/java/ru/dragonestia/picker/model/entity/Entity.java similarity index 81% rename from server/src/main/java/ru/dragonestia/picker/model/user/User.java rename to server/src/main/java/ru/dragonestia/picker/model/entity/Entity.java index fd8606c..19339b7 100644 --- a/server/src/main/java/ru/dragonestia/picker/model/user/User.java +++ b/server/src/main/java/ru/dragonestia/picker/model/entity/Entity.java @@ -1,17 +1,17 @@ -package ru.dragonestia.picker.model.user; +package ru.dragonestia.picker.model.entity; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import ru.dragonestia.picker.api.model.user.IUser; import ru.dragonestia.picker.api.model.user.ResponseUser; import ru.dragonestia.picker.api.model.user.UserDetails; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; -public class User implements IUser { +public class Entity implements IUser { private final String identifier; - public User(@NotNull UserIdentifier identifier) { + public Entity(@NotNull EntityIdentifier identifier) { this.identifier = identifier.getValue(); } @@ -43,7 +43,7 @@ public class User implements IUser { public boolean equals(Object object) { if (object == this) return true; if (object == null) return false; - if (object instanceof User other) { + if (object instanceof Entity other) { return identifier.equals(other.identifier); } return false; diff --git a/server/src/main/java/ru/dragonestia/picker/repository/EntityRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/EntityRepository.java new file mode 100644 index 0000000..4fa7fa1 --- /dev/null +++ b/server/src/main/java/ru/dragonestia/picker/repository/EntityRepository.java @@ -0,0 +1,25 @@ +package ru.dragonestia.picker.repository; + +import ru.dragonestia.picker.api.exception.RoomAreFullException; +import ru.dragonestia.picker.model.room.Room; +import ru.dragonestia.picker.model.entity.Entity; + +import java.util.Collection; +import java.util.Map; + +public interface EntityRepository { + + void linkWithRoom(Room room, Collection entities, boolean force) throws RoomAreFullException; + + void unlinkWithRoom(Room room, Collection entities); + + Collection findAllLinkedEntityRooms(Entity entity); + + Collection entitiesOf(Room room); + + Collection search(String input); + + int countAllEntities(); + + Map countEntitiesForNodes(); +} diff --git a/server/src/main/java/ru/dragonestia/picker/repository/InstanceRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/InstanceRepository.java index 0d363b0..40ad32d 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/InstanceRepository.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/InstanceRepository.java @@ -1,6 +1,6 @@ package ru.dragonestia.picker.repository; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import java.util.List; @@ -8,7 +8,7 @@ import java.util.Optional; public interface InstanceRepository { - void create(Instance instance) throws NodeAlreadyExistException; + void create(Instance instance) throws InstanceAlreadyExistException; void delete(Instance instance); diff --git a/server/src/main/java/ru/dragonestia/picker/repository/RoomRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/RoomRepository.java index 9c69726..8144840 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/RoomRepository.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/RoomRepository.java @@ -4,7 +4,7 @@ import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import java.util.Collection; import java.util.Optional; @@ -20,5 +20,5 @@ public interface RoomRepository { Collection all(Instance instance); - Room pick(Instance instance, Set users) throws NoRoomsAvailableException; + Room pick(Instance instance, Set entities) throws NoRoomsAvailableException; } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java deleted file mode 100644 index 3c16f26..0000000 --- a/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package ru.dragonestia.picker.repository; - -import ru.dragonestia.picker.api.exception.RoomAreFullException; -import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; - -import java.util.Collection; -import java.util.Map; - -public interface UserRepository { - - void linkWithRoom(Room room, Collection users, boolean force) throws RoomAreFullException; - - void unlinkWithRoom(Room room, Collection users); - - Collection findAllLinkedUserRooms(User user); - - Collection usersOf(Room room); - - Collection search(String input); - - int countAllUsers(); - - Map countUsersForNodes(); -} diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/ContainerRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/ContainerRepository.java index 0bc0d33..d12392c 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/ContainerRepository.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/ContainerRepository.java @@ -2,10 +2,10 @@ package ru.dragonestia.picker.repository.impl; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.impl.container.InstanceContainer; -import ru.dragonestia.picker.repository.impl.type.UserTransaction; +import ru.dragonestia.picker.repository.impl.type.EntityTransaction; import java.util.Collection; import java.util.Map; @@ -17,30 +17,30 @@ public class ContainerRepository { private final Map containers = new ConcurrentHashMap<>(); - private UserTransaction.Listener transactionListener = transaction -> {}; + private EntityTransaction.Listener transactionListener = transaction -> {}; - public void create(Instance instance) throws NodeAlreadyExistException { + public void create(Instance instance) throws InstanceAlreadyExistException { if (containers.containsKey(instance.getIdentifier())) { - throw new NodeAlreadyExistException(instance.getIdentifier()); + throw new InstanceAlreadyExistException(instance.getIdentifier()); } var container = new InstanceContainer(instance, transactionListener); containers.put(instance.getIdentifier(), container); } - public void remove(@NotNull String nodeId) { - containers.remove(nodeId); + public void remove(@NotNull String instanceId) { + containers.remove(instanceId); } - public @NotNull Optional findById(@NotNull String nodeId) { - return Optional.ofNullable(containers.get(nodeId)); + public @NotNull Optional findById(@NotNull String instanceId) { + return Optional.ofNullable(containers.get(instanceId)); } public @NotNull Collection all() { return containers.values(); } - public void setTransactionListener(@NotNull UserTransaction.Listener transactionListener) { + public void setTransactionListener(@NotNull EntityTransaction.Listener transactionListener) { this.transactionListener = transactionListener; } } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/EntityRepositoryImpl.java similarity index 50% rename from server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java rename to server/src/main/java/ru/dragonestia/picker/repository/impl/EntityRepositoryImpl.java index c32f091..4e2b2fd 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/EntityRepositoryImpl.java @@ -3,12 +3,12 @@ package ru.dragonestia.picker.repository.impl; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.exception.RoomAreFullException; import ru.dragonestia.picker.api.exception.RoomNotFoundException; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.model.entity.Entity; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.repository.impl.container.RoomContainer; import java.util.*; @@ -16,18 +16,18 @@ import java.util.concurrent.ConcurrentHashMap; @Component @RequiredArgsConstructor -public class UserRepositoryImpl implements UserRepository { +public class EntityRepositoryImpl implements EntityRepository { private final ContainerRepository containerRepository; - private final Map> userRooms = new ConcurrentHashMap<>(); + private final Map> entityRooms = new ConcurrentHashMap<>(); @PostConstruct void init() { containerRepository.setTransactionListener(transaction -> { - synchronized (userRooms) { - for (var user: transaction.target()) { - var set = userRooms.computeIfAbsent(user, k -> new HashSet<>()); + synchronized (entityRooms) { + for (var entity: transaction.target()) { + var set = entityRooms.computeIfAbsent(entity, k -> new HashSet<>()); set.add(transaction.room()); } } @@ -35,61 +35,61 @@ public class UserRepositoryImpl implements UserRepository { } @Override - public void linkWithRoom(Room room, Collection users, boolean force) throws RoomAreFullException { - synchronized (userRooms) { - getRoomContainer(room).addUsers(users, force); + public void linkWithRoom(Room room, Collection entities, boolean force) throws RoomAreFullException { + synchronized (entityRooms) { + getRoomContainer(room).addEntities(entities, force); - for (var user: users) { - var set = userRooms.computeIfAbsent(user, k -> new HashSet<>()); + for (var entity: entities) { + var set = entityRooms.computeIfAbsent(entity, k -> new HashSet<>()); set.add(room); } } } @Override - public void unlinkWithRoom(Room room, Collection users) { - synchronized (userRooms) { - getRoomContainer(room).removeUsers(users); + public void unlinkWithRoom(Room room, Collection entities) { + synchronized (entityRooms) { + getRoomContainer(room).removeEntities(entities); - for (var user: users) { - var set = userRooms.get(user); + for (var entity: entities) { + var set = entityRooms.get(entity); if (set == null) continue; set.remove(room); - if (set.isEmpty()) userRooms.remove(user); + if (set.isEmpty()) entityRooms.remove(entity); } } } @Override - public Collection findAllLinkedUserRooms(User user) { - var result = userRooms.get(user); + public Collection findAllLinkedEntityRooms(Entity entity) { + var result = entityRooms.get(entity); return Collections.unmodifiableSet(result == null? new HashSet<>() : result); } @Override - public Collection usersOf(Room room) { - return getRoomContainer(room).allUsers(); + public Collection entitiesOf(Room room) { + return getRoomContainer(room).allEntities(); } @Override - public Collection search(String input) { - return userRooms.keySet().stream().filter(user -> user.getIdentifier().startsWith(input)).toList(); + public Collection search(String input) { + return entityRooms.keySet().stream().filter(entity -> entity.getIdentifier().startsWith(input)).toList(); } @Override - public int countAllUsers() { - return userRooms.size(); + public int countAllEntities() { + return entityRooms.size(); } @Override - public Map countUsersForNodes() { + public Map countEntitiesForNodes() { var result = new HashMap(); containerRepository.all().forEach(nodeContainer -> { var nodeId = nodeContainer.getInstance().getIdentifier(); nodeContainer.allRooms().forEach(roomContainer -> { - result.put(nodeId, result.getOrDefault(nodeId, 0) + roomContainer.countUsers()); + result.put(nodeId, result.getOrDefault(nodeId, 0) + roomContainer.countEntities()); }); }); @@ -98,7 +98,7 @@ public class UserRepositoryImpl implements UserRepository { private RoomContainer getRoomContainer(Room room) { return containerRepository.findById(room.getInstanceIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(room.getInstanceIdentifier())) + .orElseThrow(() -> new InstanceNotFoundException(room.getInstanceIdentifier())) .findRoomById(room.getIdentifier()) .orElseThrow(() -> new RoomNotFoundException(room.getInstanceIdentifier(), room.getIdentifier())); } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/InstanceRepositoryImpl.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/InstanceRepositoryImpl.java index 2f2baa5..94b340a 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/InstanceRepositoryImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/InstanceRepositoryImpl.java @@ -2,7 +2,7 @@ package ru.dragonestia.picker.repository.impl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.InstanceRepository; import ru.dragonestia.picker.repository.impl.container.InstanceContainer; @@ -17,7 +17,7 @@ public class InstanceRepositoryImpl implements InstanceRepository { private final ContainerRepository containerRepository; @Override - public void create(Instance instance) throws NodeAlreadyExistException { + public void create(Instance instance) throws InstanceAlreadyExistException { containerRepository.create(instance); } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/RoomRepositoryImpl.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/RoomRepositoryImpl.java index 97aa883..c6bc532 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/RoomRepositoryImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/RoomRepositoryImpl.java @@ -3,11 +3,11 @@ package ru.dragonestia.picker.repository.impl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.RoomRepository; import ru.dragonestia.picker.repository.impl.container.RoomContainer; @@ -24,21 +24,21 @@ public class RoomRepositoryImpl implements RoomRepository { @Override public void create(Room room) throws RoomAlreadyExistException { containerRepository.findById(room.getInstanceIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(room.getInstanceIdentifier())) + .orElseThrow(() -> new InstanceNotFoundException(room.getInstanceIdentifier())) .addRoom(room); } @Override public void remove(Room room) { containerRepository.findById(room.getInstanceIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(room.getInstanceIdentifier())) + .orElseThrow(() -> new InstanceNotFoundException(room.getInstanceIdentifier())) .removeRoom(room); } @Override public Optional find(Instance instance, String identifier) { return containerRepository.findById(instance.getIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(instance.getIdentifier())) + .orElseThrow(() -> new InstanceNotFoundException(instance.getIdentifier())) .findRoomById(identifier) .map(RoomContainer::getRoom); } @@ -46,15 +46,15 @@ public class RoomRepositoryImpl implements RoomRepository { @Override public Collection all(Instance instance) { return containerRepository.findById(instance.getIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(instance.getIdentifier())) + .orElseThrow(() -> new InstanceNotFoundException(instance.getIdentifier())) .allRooms() .stream().map(RoomContainer::getRoom).toList(); } @Override - public Room pick(Instance instance, Set users) throws NoRoomsAvailableException { + public Room pick(Instance instance, Set entities) throws NoRoomsAvailableException { return containerRepository.findById(instance.getIdentifier()) - .orElseThrow(() -> new NodeNotFoundException(instance.getIdentifier())) - .pick(users); + .orElseThrow(() -> new InstanceNotFoundException(instance.getIdentifier())) + .pick(entities); } } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/container/InstanceContainer.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/container/InstanceContainer.java index e0b9104..2507a26 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/container/InstanceContainer.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/container/InstanceContainer.java @@ -5,12 +5,12 @@ import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.picker.LeastPickedPicker; import ru.dragonestia.picker.repository.impl.picker.RoomPicker; import ru.dragonestia.picker.repository.impl.picker.RoundRobinPicker; import ru.dragonestia.picker.repository.impl.picker.SequentialFillingPicker; -import ru.dragonestia.picker.repository.impl.type.UserTransaction; +import ru.dragonestia.picker.repository.impl.type.EntityTransaction; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -21,13 +21,13 @@ public class InstanceContainer { @Getter private final Instance instance; - private final UserTransaction.Listener transactionListener; + private final EntityTransaction.Listener transactionListener; private final RoomPicker picker; private final ReadWriteLock roomLock = new ReentrantReadWriteLock(); private final Map rooms = new ConcurrentHashMap<>(); - public InstanceContainer(@NotNull Instance instance, @NotNull UserTransaction.Listener transactionListener) { + public InstanceContainer(@NotNull Instance instance, @NotNull EntityTransaction.Listener transactionListener) { this.instance = instance; this.transactionListener = transactionListener; this.picker = initPicker(); @@ -92,11 +92,11 @@ public class InstanceContainer { } } - public @NotNull Room pick(@NotNull Set users) { + public @NotNull Room pick(@NotNull Set entities) { synchronized (picker) { - var room = picker.pick(users); - room.addUsers(users, false); - transactionListener.accept(new UserTransaction(room.getRoom(), users)); + var room = picker.pick(entities); + room.addEntities(entities, false); + transactionListener.accept(new EntityTransaction(room.getRoom(), entities)); return room.getRoom(); } } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/container/RoomContainer.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/container/RoomContainer.java index c624bd2..ae67219 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/container/RoomContainer.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/container/RoomContainer.java @@ -4,7 +4,7 @@ import lombok.Getter; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.api.exception.RoomAreFullException; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.picker.LeastPickedPicker; import java.util.*; @@ -17,87 +17,87 @@ public class RoomContainer { private final Room room; private final InstanceContainer container; - private final ReadWriteLock usersLock = new ReentrantReadWriteLock(true); - private final Set users = new HashSet<>(); + private final ReadWriteLock entityLock = new ReentrantReadWriteLock(true); + private final Set entities = new HashSet<>(); public RoomContainer(@NotNull Room room, @NotNull InstanceContainer container) { this.room = room; this.container = container; } - public void addUsers(@NotNull Collection toAdd, boolean force) { - usersLock.writeLock().lock(); + public void addEntities(@NotNull Collection toAdd, boolean force) { + entityLock.writeLock().lock(); try { if (force || canAdd0(toAdd.size())) { - users.addAll(toAdd); - noticePickersAboutUserNumberUpdate(); + entities.addAll(toAdd); + noticePickersAboutEntityNumberUpdate(); } else { throw new RoomAreFullException(room.getInstanceIdentifier(), room.getIdentifier()); } } finally { - usersLock.writeLock().unlock(); + entityLock.writeLock().unlock(); } } - public void removeUsers(@NotNull Collection toRemove) { - usersLock.writeLock().lock(); + public void removeEntities(@NotNull Collection toRemove) { + entityLock.writeLock().lock(); try { - users.removeAll(toRemove); - noticePickersAboutUserNumberUpdate(); + entities.removeAll(toRemove); + noticePickersAboutEntityNumberUpdate(); } finally { - usersLock.writeLock().unlock(); + entityLock.writeLock().unlock(); } } - public @NotNull Collection removeAllUsers() { - usersLock.writeLock().lock(); + public @NotNull Collection removeAllEntities() { + entityLock.writeLock().lock(); try { - var set = new HashSet<>(users); - users.clear(); - noticePickersAboutUserNumberUpdate(); + var set = new HashSet<>(entities); + entities.clear(); + noticePickersAboutEntityNumberUpdate(); return set; } finally { - usersLock.writeLock().unlock(); + entityLock.writeLock().unlock(); } } - public @NotNull Collection allUsers() { - usersLock.readLock().lock(); + public @NotNull Collection allEntities() { + entityLock.readLock().lock(); try { - return new ArrayList<>(users); + return new ArrayList<>(entities); } finally { - usersLock.readLock().unlock(); + entityLock.readLock().unlock(); } } - public int countUsers() { - return users.size(); + public int countEntities() { + return entities.size(); } - private boolean canAdd0(int users) { - return room.hasUnlimitedSlots() || users + countUsers() <= room.getMaxSlots(); + private boolean canAdd0(int entities) { + return room.hasUnlimitedSlots() || entities + countEntities() <= room.getMaxSlots(); } - public boolean canAdd(int users) { + public boolean canAdd(int entities) { try { - return canAdd0(users); + return canAdd0(entities); } finally { - usersLock.readLock().unlock(); + entityLock.readLock().unlock(); } } - public boolean canBePicked(int users) { - usersLock.readLock().lock(); + public boolean canBePicked(int entities) { + entityLock.readLock().lock(); try { - return !room.isLocked() && canAdd0(users); + return !room.isLocked() && canAdd0(entities); } finally { - usersLock.readLock().unlock(); + entityLock.readLock().unlock(); } } - private void noticePickersAboutUserNumberUpdate() { + private void noticePickersAboutEntityNumberUpdate() { if (container.getPicker() instanceof LeastPickedPicker picker) { - picker.updateUsersAmount(room, countUsers()); + picker.updateEntitiesAmount(room, countEntities()); } } } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/LeastPickedPicker.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/LeastPickedPicker.java index f7623ab..b1e8a72 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/LeastPickedPicker.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/LeastPickedPicker.java @@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor; import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.api.model.node.PickingMethod; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.collection.DynamicSortedMap; import ru.dragonestia.picker.repository.impl.container.InstanceContainer; import ru.dragonestia.picker.repository.impl.container.RoomContainer; @@ -32,14 +32,14 @@ public class LeastPickedPicker implements RoomPicker { } @Override - public RoomContainer pick(Collection users) { + public RoomContainer pick(Collection entities) { RoomWrapper wrapper; synchronized (map) { try { wrapper = map.getMinimum(); - if (!wrapper.canAddUnits(users.size())) throw new RuntimeException(); + if (!wrapper.canAddUnits(entities.size())) throw new RuntimeException(); } catch (RuntimeException ex) { throw new NoRoomsAvailableException(container.getInstance().getIdentifier()); } @@ -48,7 +48,7 @@ public class LeastPickedPicker implements RoomPicker { return wrapper.getItem(); } - public void updateUsersAmount(Room room, int users) { + public void updateEntitiesAmount(Room room, int users) { synchronized (map) { map.updateItem(room.getIdentifier(), prevValue -> users); } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomPicker.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomPicker.java index c5e3371..1b74503 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomPicker.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomPicker.java @@ -1,10 +1,10 @@ package ru.dragonestia.picker.repository.impl.picker; import ru.dragonestia.picker.api.model.node.PickingMethod; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.container.RoomContainer; -public interface RoomPicker extends Picker { +public interface RoomPicker extends Picker { PickingMethod getPickingMode(); } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomWrapper.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomWrapper.java index ba0dcc2..7168984 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomWrapper.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoomWrapper.java @@ -22,7 +22,7 @@ public class RoomWrapper implements ItemWrapper, QueuedLinkedList @Override public int countUnits() { - return container.countUsers(); + return container.countEntities(); } @Override diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoundRobinPicker.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoundRobinPicker.java index 8345d9e..892d25b 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoundRobinPicker.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/RoundRobinPicker.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.repository.impl.picker; import lombok.RequiredArgsConstructor; import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.api.model.node.PickingMethod; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.collection.QueuedLinkedList; import ru.dragonestia.picker.repository.impl.container.InstanceContainer; import ru.dragonestia.picker.repository.impl.container.RoomContainer; @@ -33,8 +33,8 @@ public class RoundRobinPicker implements RoomPicker { } @Override - public RoomContainer pick(Collection users) { - int amount = users.size(); + public RoomContainer pick(Collection entities) { + int amount = entities.size(); RoomWrapper wrapper; synchronized (list) { diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/SequentialFillingPicker.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/SequentialFillingPicker.java index 8875b8d..15cbd2a 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/SequentialFillingPicker.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/picker/SequentialFillingPicker.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.repository.impl.picker; import lombok.RequiredArgsConstructor; import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.api.model.node.PickingMethod; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.impl.container.InstanceContainer; import ru.dragonestia.picker.repository.impl.container.RoomContainer; @@ -32,8 +32,8 @@ public class SequentialFillingPicker implements RoomPicker { } @Override - public RoomContainer pick(Collection users) { - int amount = users.size(); + public RoomContainer pick(Collection entities) { + int amount = entities.size(); synchronized (wrappers) { for (var wrapper: wrappers.values()) { diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/type/UserTransaction.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/type/EntityTransaction.java similarity index 51% rename from server/src/main/java/ru/dragonestia/picker/repository/impl/type/UserTransaction.java rename to server/src/main/java/ru/dragonestia/picker/repository/impl/type/EntityTransaction.java index 46d9cd8..6bf324a 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/type/UserTransaction.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/type/EntityTransaction.java @@ -2,12 +2,12 @@ package ru.dragonestia.picker.repository.impl.type; import org.jetbrains.annotations.NotNull; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import java.util.Collection; import java.util.function.Consumer; -public record UserTransaction(@NotNull Room room, Collection target) { +public record EntityTransaction(@NotNull Room room, Collection target) { - public interface Listener extends Consumer {} + public interface Listener extends Consumer {} } diff --git a/server/src/main/java/ru/dragonestia/picker/service/EntityService.java b/server/src/main/java/ru/dragonestia/picker/service/EntityService.java new file mode 100644 index 0000000..05e1d7a --- /dev/null +++ b/server/src/main/java/ru/dragonestia/picker/service/EntityService.java @@ -0,0 +1,24 @@ +package ru.dragonestia.picker.service; + +import ru.dragonestia.picker.api.exception.RoomAreFullException; +import ru.dragonestia.picker.api.model.user.ResponseUser; +import ru.dragonestia.picker.model.room.Room; +import ru.dragonestia.picker.model.entity.Entity; + +import java.util.Collection; +import java.util.List; + +public interface EntityService { + + Collection getEntityRooms(Entity entity); + + void linkEntitiesWithRoom(Room room, Collection entities, boolean force) throws RoomAreFullException; + + void unlinkEntitiesFromRoom(Room room, Collection entities); + + Collection getRoomEntities(Room room); + + List searchEntities(String input); + + ResponseUser getEntityDetails(String userId); +} diff --git a/server/src/main/java/ru/dragonestia/picker/service/InstanceService.java b/server/src/main/java/ru/dragonestia/picker/service/InstanceService.java index b6a5b4d..2e0ad8c 100644 --- a/server/src/main/java/ru/dragonestia/picker/service/InstanceService.java +++ b/server/src/main/java/ru/dragonestia/picker/service/InstanceService.java @@ -2,7 +2,7 @@ package ru.dragonestia.picker.service; import org.springframework.security.access.prepost.PreAuthorize; import ru.dragonestia.picker.api.exception.InvalidInstanceIdentifierException; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import java.util.List; @@ -11,7 +11,7 @@ import java.util.Optional; public interface InstanceService { @PreAuthorize("hasRole('NODE_MANAGEMENT')") - void create(Instance instance) throws InvalidInstanceIdentifierException, NodeAlreadyExistException; + void create(Instance instance) throws InvalidInstanceIdentifierException, InstanceAlreadyExistException; @PreAuthorize("hasRole('NODE_MANAGEMENT')") void remove(Instance instance); diff --git a/server/src/main/java/ru/dragonestia/picker/service/RoomService.java b/server/src/main/java/ru/dragonestia/picker/service/RoomService.java index faa7a4e..64f5855 100644 --- a/server/src/main/java/ru/dragonestia/picker/service/RoomService.java +++ b/server/src/main/java/ru/dragonestia/picker/service/RoomService.java @@ -5,7 +5,7 @@ import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.api.repository.response.PickedRoomResponse; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import java.util.Collection; import java.util.Optional; @@ -21,7 +21,7 @@ public interface RoomService { Collection all(Instance instance); - PickedRoomResponse pickAvailable(Instance instance, Set users); + PickedRoomResponse pickAvailable(Instance instance, Set entities); void updateState(Room room); } diff --git a/server/src/main/java/ru/dragonestia/picker/service/UserService.java b/server/src/main/java/ru/dragonestia/picker/service/UserService.java deleted file mode 100644 index dfdf79c..0000000 --- a/server/src/main/java/ru/dragonestia/picker/service/UserService.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.dragonestia.picker.service; - -import ru.dragonestia.picker.api.exception.RoomAreFullException; -import ru.dragonestia.picker.api.model.user.ResponseUser; -import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; - -import java.util.Collection; -import java.util.List; - -public interface UserService { - - Collection getUserRooms(User user); - - void linkUsersWithRoom(Room room, Collection users, boolean force) throws RoomAreFullException; - - void unlinkUsersFromRoom(Room room, Collection users); - - Collection getRoomUsers(Room room); - - List searchUsers(String input); - - ResponseUser getUserDetails(String userId); -} diff --git a/server/src/main/java/ru/dragonestia/picker/service/impl/AccountServiceImpl.java b/server/src/main/java/ru/dragonestia/picker/service/impl/AccountServiceImpl.java index e97b2ed..c8ae19d 100644 --- a/server/src/main/java/ru/dragonestia/picker/service/impl/AccountServiceImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/service/impl/AccountServiceImpl.java @@ -74,7 +74,7 @@ public class AccountServiceImpl implements AccountService { return accounts.get(lowerUsername); } - throw new UsernameNotFoundException("User '" + username + "' does not exists"); + throw new UsernameNotFoundException("Entity '" + username + "' does not exists"); } private void checkAdmin(String accountId) { diff --git a/server/src/main/java/ru/dragonestia/picker/service/impl/EntityServiceImpl.java b/server/src/main/java/ru/dragonestia/picker/service/impl/EntityServiceImpl.java new file mode 100644 index 0000000..fce0296 --- /dev/null +++ b/server/src/main/java/ru/dragonestia/picker/service/impl/EntityServiceImpl.java @@ -0,0 +1,48 @@ +package ru.dragonestia.picker.service.impl; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.dragonestia.picker.api.model.user.ResponseUser; +import ru.dragonestia.picker.model.room.Room; +import ru.dragonestia.picker.model.entity.Entity; +import ru.dragonestia.picker.repository.EntityRepository; +import ru.dragonestia.picker.service.EntityService; + +import java.util.*; + +@RequiredArgsConstructor +@Service +public class EntityServiceImpl implements EntityService { + + private final EntityRepository entityRepository; + + @Override + public Collection getEntityRooms(Entity entity) { + return entityRepository.findAllLinkedEntityRooms(entity); + } + + @Override + public void linkEntitiesWithRoom(Room room, Collection entities, boolean force) { + entityRepository.linkWithRoom(room, entities, force); + } + + @Override + public void unlinkEntitiesFromRoom(Room room, Collection entities) { + entityRepository.unlinkWithRoom(room, entities); + } + + @Override + public Collection getRoomEntities(Room room) { + return entityRepository.entitiesOf(room); + } + + @Override + public List searchEntities(String input) { + return entityRepository.search(input).stream().map(Entity::toResponseObject).toList(); + } + + @Override + public ResponseUser getEntityDetails(String userId) { + throw new UnsupportedOperationException("Not implemented"); + } +} diff --git a/server/src/main/java/ru/dragonestia/picker/service/impl/InstanceServiceImpl.java b/server/src/main/java/ru/dragonestia/picker/service/impl/InstanceServiceImpl.java index c8eedd7..fb4b550 100644 --- a/server/src/main/java/ru/dragonestia/picker/service/impl/InstanceServiceImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/service/impl/InstanceServiceImpl.java @@ -3,7 +3,7 @@ package ru.dragonestia.picker.service.impl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import ru.dragonestia.picker.api.exception.InvalidInstanceIdentifierException; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.InstanceRepository; import ru.dragonestia.picker.repository.RoomRepository; @@ -22,7 +22,7 @@ public class InstanceServiceImpl implements InstanceService { private final InstanceAndRoomStorage storage; @Override - public void create(Instance instance) throws InvalidInstanceIdentifierException, NodeAlreadyExistException { + public void create(Instance instance) throws InvalidInstanceIdentifierException, InstanceAlreadyExistException { instanceRepository.create(instance); storage.saveInstance(instance); } diff --git a/server/src/main/java/ru/dragonestia/picker/service/impl/RoomServiceImpl.java b/server/src/main/java/ru/dragonestia/picker/service/impl/RoomServiceImpl.java index 43f1eb0..0c7d181 100644 --- a/server/src/main/java/ru/dragonestia/picker/service/impl/RoomServiceImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/service/impl/RoomServiceImpl.java @@ -4,19 +4,18 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; import ru.dragonestia.picker.api.exception.InvalidRoomIdentifierException; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.exception.NotPersistedNodeException; import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.api.repository.response.PickedRoomResponse; import ru.dragonestia.picker.model.room.Room; import ru.dragonestia.picker.model.instance.Instance; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.repository.InstanceRepository; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.service.RoomService; import ru.dragonestia.picker.storage.InstanceAndRoomStorage; -import ru.dragonestia.picker.util.NamingValidator; import java.util.*; import java.util.stream.Collectors; @@ -28,15 +27,12 @@ public class RoomServiceImpl implements RoomService { private final RoomRepository roomRepository; private final InstanceRepository instanceRepository; - private final UserRepository userRepository; - private final NamingValidator namingValidator; + private final EntityRepository entityRepository; private final InstanceAndRoomStorage storage; @Override public void create(Room room) throws InvalidRoomIdentifierException, RoomAlreadyExistException, NotPersistedNodeException { - namingValidator.validateRoomId(room.getInstanceIdentifier(), room.getIdentifier()); - - var node = instanceRepository.findById(room.getInstanceIdentifier()).orElseThrow(() -> new NodeNotFoundException(room.getInstanceIdentifier())); + var node = instanceRepository.findById(room.getInstanceIdentifier()).orElseThrow(() -> new InstanceNotFoundException(room.getInstanceIdentifier())); if (!node.isPersist() && room.isPersist()) { throw new NotPersistedNodeException(node.getIdentifier(), room.getIdentifier()); } @@ -62,9 +58,9 @@ public class RoomServiceImpl implements RoomService { } @Override - public PickedRoomResponse pickAvailable(Instance instance, Set users) { - var room = roomRepository.pick(instance, users); - var roomUsers = userRepository.usersOf(room); + public PickedRoomResponse pickAvailable(Instance instance, Set entities) { + var room = roomRepository.pick(instance, entities); + var roomUsers = entityRepository.entitiesOf(room); return new PickedRoomResponse( room.getInstanceIdentifier(), @@ -73,7 +69,7 @@ public class RoomServiceImpl implements RoomService { room.getMaxSlots(), roomUsers.size(), room.isLocked(), - roomUsers.stream().map(User::getIdentifier).collect(Collectors.toSet()) + roomUsers.stream().map(Entity::getIdentifier).collect(Collectors.toSet()) ); } diff --git a/server/src/main/java/ru/dragonestia/picker/service/impl/UserServiceImpl.java b/server/src/main/java/ru/dragonestia/picker/service/impl/UserServiceImpl.java deleted file mode 100644 index e928ccd..0000000 --- a/server/src/main/java/ru/dragonestia/picker/service/impl/UserServiceImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package ru.dragonestia.picker.service.impl; - -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import ru.dragonestia.picker.api.model.user.ResponseUser; -import ru.dragonestia.picker.model.room.Room; -import ru.dragonestia.picker.model.user.User; -import ru.dragonestia.picker.repository.UserRepository; -import ru.dragonestia.picker.service.UserService; - -import java.util.*; - -@RequiredArgsConstructor -@Service -public class UserServiceImpl implements UserService { - - private final UserRepository userRepository; - - @Override - public Collection getUserRooms(User user) { - return userRepository.findAllLinkedUserRooms(user); - } - - @Override - public void linkUsersWithRoom(Room room, Collection users, boolean force) { - userRepository.linkWithRoom(room, users, force); - } - - @Override - public void unlinkUsersFromRoom(Room room, Collection users) { - userRepository.unlinkWithRoom(room, users); - } - - @Override - public Collection getRoomUsers(Room room) { - return userRepository.usersOf(room); - } - - @Override - public List searchUsers(String input) { - return userRepository.search(input).stream().map(User::toResponseObject).toList(); - } - - @Override - public ResponseUser getUserDetails(String userId) { - throw new UnsupportedOperationException("Not implemented"); - } -} diff --git a/server/src/main/java/ru/dragonestia/picker/util/NamingValidator.java b/server/src/main/java/ru/dragonestia/picker/util/NamingValidator.java deleted file mode 100644 index 5dc645e..0000000 --- a/server/src/main/java/ru/dragonestia/picker/util/NamingValidator.java +++ /dev/null @@ -1,50 +0,0 @@ -package ru.dragonestia.picker.util; - -import org.springframework.stereotype.Component; -import ru.dragonestia.picker.api.exception.InvalidInstanceIdentifierException; -import ru.dragonestia.picker.api.exception.InvalidRoomIdentifierException; -import ru.dragonestia.picker.api.exception.InvalidUsernamesException; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; -import ru.dragonestia.picker.api.util.IdentifierValidator; -import ru.dragonestia.picker.model.user.User; - -import java.util.Collection; -import java.util.LinkedList; - -@Component -public class NamingValidator { - - public void validateInstanceId(String input) throws InvalidInstanceIdentifierException { - if (IdentifierValidator.forNode(input)) return; - - throw new InvalidInstanceIdentifierException(input); - } - - public void validateRoomId(String nodeId, String input) throws InvalidRoomIdentifierException { - if (IdentifierValidator.forRoom(input)) return; - - throw new InvalidRoomIdentifierException(nodeId, input); - } - - public boolean validateUserId(String input) { - return IdentifierValidator.forUser(input); - } - - public void validateUserIds(Collection input) throws InvalidUsernamesException { - var users = new LinkedList(); - var invalid = new LinkedList(); - - for (var username: input) { - if (validateUserId(username)) { - users.add(new User(UserIdentifier.of(username))); - continue; - } - - invalid.add(username); - } - - if (!invalid.isEmpty()) { - throw new InvalidUsernamesException(input.stream().toList(), invalid); - } - } -} diff --git a/server/src/main/resources/graphql/schema.graphqls b/server/src/main/resources/graphql/schema.graphqls index de9efdd..1d9f0b4 100644 --- a/server/src/main/resources/graphql/schema.graphqls +++ b/server/src/main/resources/graphql/schema.graphqls @@ -3,8 +3,8 @@ type Query { instanceById(id: String!): Instance allRooms(nodeId: String!): [Room] roomById(nodeId: String!, roomId: String!): Room - userById(id: String!): User! - searchUser(input: String!): [User] + entityById(id: String!): Entity! + searchEntity(input: String!): [Entity] } type Instance { @@ -22,12 +22,12 @@ type Room { slots: Int! payload: String! locked: Boolean! - users: [User] - countUsers: Int! + entities: [Entity] + countEntities: Int! persist: Boolean! } -type User { +type Entity { id: String! rooms: [Room] countRooms: Int! diff --git a/server/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java b/server/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java index 6d8b47e..97ad1d6 100644 --- a/server/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java +++ b/server/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java @@ -6,13 +6,13 @@ import org.springframework.context.annotation.Bean; import ru.dragonestia.picker.api.model.node.PickingMethod; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import ru.dragonestia.picker.model.instance.Instance; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.model.factory.RoomFactory; import ru.dragonestia.picker.repository.InstanceRepository; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import java.util.List; @@ -45,7 +45,7 @@ public class FillingNodesConfig { private RoomRepository roomRepository; @Autowired - private UserRepository userRepository; + private EntityRepository entityRepository; @Autowired private RoomFactory roomFactory; @@ -93,8 +93,8 @@ public class FillingNodesConfig { var users = n - i; for (int k = users - 1; k >= 0; k--) { - var user = new User(UserIdentifier.of("user-" + k)); - userRepository.linkWithRoom(room, List.of(user), false); + var user = new Entity(EntityIdentifier.of("user-" + k)); + entityRepository.linkWithRoom(room, List.of(user), false); } //System.out.printf("Room '%s' has %s/%s users%n", roomId, users, n); diff --git a/server/src/test/java/ru/dragonestia/picker/picker/LeastPickedTests.java b/server/src/test/java/ru/dragonestia/picker/picker/LeastPickedTests.java index ac8abb9..ff63eae 100644 --- a/server/src/test/java/ru/dragonestia/picker/picker/LeastPickedTests.java +++ b/server/src/test/java/ru/dragonestia/picker/picker/LeastPickedTests.java @@ -14,7 +14,7 @@ import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.config.FillingNodesConfig; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.util.UserFiller; import java.util.stream.Stream; @@ -28,7 +28,7 @@ public class LeastPickedTests { private RoomRepository roomRepository; @Autowired - private UserRepository userRepository; + private EntityRepository entityRepository; @Autowired private UserFiller userFiller; @@ -41,11 +41,11 @@ public class LeastPickedTests { @ParameterizedTest @ArgumentsSource(PickingArgumentProvider.class) void testPicking(String expectedRoomId, int usersAmount) { - var expectedRoomUsers = userRepository.usersOf(roomRepository.find(instance, expectedRoomId).orElseThrow()).size(); + var expectedRoomUsers = entityRepository.entitiesOf(roomRepository.find(instance, expectedRoomId).orElseThrow()).size(); var room = roomRepository.pick(instance, userFiller.createRandomUsers(usersAmount)); var slots = room.getMaxSlots(); - var users = userRepository.usersOf(room); + var users = entityRepository.entitiesOf(room); Assertions.assertTrue(slots == -1 || slots >= users.size()); // check slots limitation System.out.printf("Room(%s) has %s/%s users. Expected: %s(%s), added: %s%n", room.getIdentifier(), users.size(), slots, expectedRoomId, expectedRoomUsers, usersAmount); diff --git a/server/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java b/server/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java index f791d1e..1095905 100644 --- a/server/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java +++ b/server/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java @@ -12,7 +12,7 @@ import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.config.FillingNodesConfig; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.util.UserFiller; import java.util.stream.Stream; @@ -26,7 +26,7 @@ public class RoundRobinTests { private RoomRepository roomRepository; @Autowired - private UserRepository userRepository; + private EntityRepository entityRepository; @Autowired private UserFiller userFiller; @@ -41,7 +41,7 @@ public class RoundRobinTests { void testPicking(String expectedRoomId, int usersAmount) { var room = roomRepository.pick(instance, userFiller.createRandomUsers(usersAmount)); var slots = room.getMaxSlots(); - var users = userRepository.usersOf(room); + var users = entityRepository.entitiesOf(room); Assertions.assertTrue(slots == -1 || slots >= users.size()); // check slots limitation Assertions.assertEquals(expectedRoomId, room.getIdentifier()); diff --git a/server/src/test/java/ru/dragonestia/picker/picker/SequentialFillingTests.java b/server/src/test/java/ru/dragonestia/picker/picker/SequentialFillingTests.java index b48780e..a68a540 100644 --- a/server/src/test/java/ru/dragonestia/picker/picker/SequentialFillingTests.java +++ b/server/src/test/java/ru/dragonestia/picker/picker/SequentialFillingTests.java @@ -14,7 +14,7 @@ import ru.dragonestia.picker.api.exception.NoRoomsAvailableException; import ru.dragonestia.picker.config.FillingNodesConfig; import ru.dragonestia.picker.model.instance.Instance; import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; +import ru.dragonestia.picker.repository.EntityRepository; import ru.dragonestia.picker.util.UserFiller; import java.util.stream.Stream; @@ -28,7 +28,7 @@ public class SequentialFillingTests { private RoomRepository roomRepository; @Autowired - private UserRepository userRepository; + private EntityRepository entityRepository; @Autowired private UserFiller userFiller; @@ -41,11 +41,11 @@ public class SequentialFillingTests { @ParameterizedTest @ArgumentsSource(PickingArgumentProvider.class) void testPicking(String expectedRoomId, int usersAmount) { - var expectedRoomUsers = userRepository.usersOf(roomRepository.find(instance, expectedRoomId).orElseThrow()).size(); + var expectedRoomUsers = entityRepository.entitiesOf(roomRepository.find(instance, expectedRoomId).orElseThrow()).size(); var room = roomRepository.pick(instance, userFiller.createRandomUsers(usersAmount)); var slots = room.getMaxSlots(); - var users = userRepository.usersOf(room); + var users = entityRepository.entitiesOf(room); Assertions.assertTrue(slots == -1 || slots >= users.size()); // check slots limitation System.out.printf("Room(%s) has %s/%s users. Expected: %s(%s), added: %s%n", room.getIdentifier(), users.size(), slots, expectedRoomId, expectedRoomUsers, usersAmount); diff --git a/server/src/test/java/ru/dragonestia/picker/service/InstanceServiceTests.java b/server/src/test/java/ru/dragonestia/picker/service/InstanceServiceTests.java index 6ed111e..b1683de 100644 --- a/server/src/test/java/ru/dragonestia/picker/service/InstanceServiceTests.java +++ b/server/src/test/java/ru/dragonestia/picker/service/InstanceServiceTests.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.test.context.support.WithMockUser; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; import ru.dragonestia.picker.api.model.node.PickingMethod; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.model.instance.Instance; @@ -25,7 +25,7 @@ public class InstanceServiceTests { Assertions.assertDoesNotThrow(() -> instanceService.create(node)); Assertions.assertTrue(instanceService.find(node.getIdentifier()).isPresent()); - Assertions.assertThrows(NodeAlreadyExistException.class, () -> instanceService.create(node)); + Assertions.assertThrows(InstanceAlreadyExistException.class, () -> instanceService.create(node)); instanceService.remove(node); diff --git a/server/src/test/java/ru/dragonestia/picker/service/RoomServiceTests.java b/server/src/test/java/ru/dragonestia/picker/service/RoomServiceTests.java index ffe0921..f214af7 100644 --- a/server/src/test/java/ru/dragonestia/picker/service/RoomServiceTests.java +++ b/server/src/test/java/ru/dragonestia/picker/service/RoomServiceTests.java @@ -6,17 +6,17 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.test.context.support.WithMockUser; -import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; -import ru.dragonestia.picker.api.exception.NodeNotFoundException; +import ru.dragonestia.picker.api.exception.InstanceAlreadyExistException; +import ru.dragonestia.picker.api.exception.InstanceNotFoundException; import ru.dragonestia.picker.api.exception.NotPersistedNodeException; import ru.dragonestia.picker.api.exception.RoomAlreadyExistException; import ru.dragonestia.picker.api.model.node.PickingMethod; import ru.dragonestia.picker.api.model.room.IRoom; import ru.dragonestia.picker.api.repository.type.NodeIdentifier; import ru.dragonestia.picker.api.repository.type.RoomIdentifier; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; import ru.dragonestia.picker.model.instance.Instance; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.model.entity.Entity; import ru.dragonestia.picker.model.factory.RoomFactory; import java.util.List; @@ -42,7 +42,7 @@ public class RoomServiceTests { try { instanceService.create(instance); - } catch (NodeAlreadyExistException ignore) {} + } catch (InstanceAlreadyExistException ignore) {} } @WithMockUser(roles = {"NODE_MANAGEMENT"}) @@ -98,12 +98,12 @@ public class RoomServiceTests { rooms.forEach(room -> roomService.create(room)); var users = Set.of( - new User(UserIdentifier.of("1")), - new User(UserIdentifier.of("2")), - new User(UserIdentifier.of("3")), - new User(UserIdentifier.of("4")), - new User(UserIdentifier.of("5")), - new User(UserIdentifier.of("6")) + new Entity(EntityIdentifier.of("1")), + new Entity(EntityIdentifier.of("2")), + new Entity(EntityIdentifier.of("3")), + new Entity(EntityIdentifier.of("4")), + new Entity(EntityIdentifier.of("5")), + new Entity(EntityIdentifier.of("6")) ); @@ -115,7 +115,7 @@ public class RoomServiceTests { void test_removeNode() { instanceService.remove(instance); - Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.all(instance)); + Assertions.assertThrows(InstanceNotFoundException.class, () -> roomService.all(instance)); } @WithMockUser(roles = {"NODE_MANAGEMENT"}) @@ -124,9 +124,9 @@ public class RoomServiceTests { var node = new Instance(NodeIdentifier.of("bruh"), PickingMethod.ROUND_ROBIN, false); var room = roomFactory.create(RoomIdentifier.of("test"), node, IRoom.UNLIMITED_SLOTS, "", false); - Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.create(room)); - Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.remove(room)); - Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.find(node, "Bruh")); - Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.pickAvailable(node, Set.of(new User(UserIdentifier.of("1"))))); + Assertions.assertThrows(InstanceNotFoundException.class, () -> roomService.create(room)); + Assertions.assertThrows(InstanceNotFoundException.class, () -> roomService.remove(room)); + Assertions.assertThrows(InstanceNotFoundException.class, () -> roomService.find(node, "Bruh")); + Assertions.assertThrows(InstanceNotFoundException.class, () -> roomService.pickAvailable(node, Set.of(new Entity(EntityIdentifier.of("1"))))); } } diff --git a/server/src/test/java/ru/dragonestia/picker/util/UserFiller.java b/server/src/test/java/ru/dragonestia/picker/util/UserFiller.java index cc24ea2..d9e2f95 100644 --- a/server/src/test/java/ru/dragonestia/picker/util/UserFiller.java +++ b/server/src/test/java/ru/dragonestia/picker/util/UserFiller.java @@ -1,18 +1,18 @@ package ru.dragonestia.picker.util; import org.springframework.boot.test.context.TestComponent; -import ru.dragonestia.picker.api.repository.type.UserIdentifier; -import ru.dragonestia.picker.model.user.User; +import ru.dragonestia.picker.api.repository.type.EntityIdentifier; +import ru.dragonestia.picker.model.entity.Entity; import java.util.*; @TestComponent public class UserFiller { - public Set createRandomUsers(int amount) { - var set = new HashSet(); + public Set createRandomUsers(int amount) { + var set = new HashSet(); for (int i = 0; i < amount; i++) { - set.add(new User(UserIdentifier.of(UUID.randomUUID().toString()))); + set.add(new Entity(EntityIdentifier.of(UUID.randomUUID().toString()))); } return set; }