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 20e1424..18927bc 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 @@ -2,7 +2,7 @@ package ru.dragonestia.picker.api.repository; import ru.dragonestia.picker.api.exception.InvalidNodeIdentifierException; import ru.dragonestia.picker.api.exception.NodeAlreadyExistException; -import ru.dragonestia.picker.api.repository.details.NodeDetails; +import ru.dragonestia.picker.api.model.node.NodeDetails; import ru.dragonestia.picker.api.repository.response.type.RNode; import java.util.List; diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/RoomRepository.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/RoomRepository.java index 73a1c80..8d899d1 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/RoomRepository.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/RoomRepository.java @@ -1,7 +1,7 @@ package ru.dragonestia.picker.api.repository; import ru.dragonestia.picker.api.exception.*; -import ru.dragonestia.picker.api.repository.details.RoomDetails; +import ru.dragonestia.picker.api.model.room.RoomDetails; import ru.dragonestia.picker.api.repository.response.type.RNode; import ru.dragonestia.picker.api.repository.response.type.RRoom; diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/UserRepository.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/UserRepository.java index b5bfeee..a69047a 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/UserRepository.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/UserRepository.java @@ -3,14 +3,13 @@ package ru.dragonestia.picker.api.repository; import ru.dragonestia.picker.api.exception.NodeNotFoundException; import ru.dragonestia.picker.api.exception.RoomAreFullException; import ru.dragonestia.picker.api.exception.RoomNotFoundException; -import ru.dragonestia.picker.api.repository.details.RoomDetails; +import ru.dragonestia.picker.api.model.room.RoomDetails; +import ru.dragonestia.picker.api.model.user.UserDetails; import ru.dragonestia.picker.api.repository.response.type.RRoom; import ru.dragonestia.picker.api.repository.response.type.RUser; -import ru.dragonestia.picker.api.repository.details.UserDetails; import java.util.Collection; import java.util.List; -import java.util.Optional; import java.util.Set; public interface UserRepository { diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/NodeDetails.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/NodeDetails.java deleted file mode 100644 index b374ec5..0000000 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/NodeDetails.java +++ /dev/null @@ -1,5 +0,0 @@ -package ru.dragonestia.picker.api.repository.details; - -public enum NodeDetails { - PERSIST -} diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/UserDetails.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/UserDetails.java deleted file mode 100644 index 9a4ad43..0000000 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/details/UserDetails.java +++ /dev/null @@ -1,5 +0,0 @@ -package ru.dragonestia.picker.api.repository.details; - -public enum UserDetails { - COUNT_ROOMS -} diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RNode.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RNode.java index 303a6ec..2a82d92 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RNode.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RNode.java @@ -1,8 +1,8 @@ package ru.dragonestia.picker.api.repository.response.type; import io.swagger.v3.oas.annotations.media.Schema; +import ru.dragonestia.picker.api.model.node.NodeDetails; import ru.dragonestia.picker.api.repository.response.type.type.PickingMode; -import ru.dragonestia.picker.api.repository.details.NodeDetails; import java.util.HashMap; import java.util.Map; diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RRoom.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RRoom.java index 4d83f49..0b1bfdd 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RRoom.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RRoom.java @@ -1,7 +1,7 @@ package ru.dragonestia.picker.api.repository.response.type; import io.swagger.v3.oas.annotations.media.Schema; -import ru.dragonestia.picker.api.repository.details.RoomDetails; +import ru.dragonestia.picker.api.model.room.RoomDetails; import java.beans.Transient; import java.util.HashMap; diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RUser.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RUser.java index c48d7db..85990af 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RUser.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/response/type/RUser.java @@ -1,7 +1,7 @@ package ru.dragonestia.picker.api.repository.response.type; import io.swagger.v3.oas.annotations.media.Schema; -import ru.dragonestia.picker.api.repository.details.UserDetails; +import ru.dragonestia.picker.api.model.user.UserDetails; import java.util.HashMap; import java.util.Map; diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/NodeIdentifier.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/NodeIdentifier.java new file mode 100644 index 0000000..abe2ef5 --- /dev/null +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/NodeIdentifier.java @@ -0,0 +1,24 @@ +package ru.dragonestia.picker.api.repository.type; + +import org.jetbrains.annotations.NotNull; +import ru.dragonestia.picker.api.util.IdentifierValidator; + +import java.security.InvalidParameterException; + +public final class NodeIdentifier extends ValueObject { + + private NodeIdentifier(String value) { + super(value); + } + + @Override + protected void validate(String value) { + if (IdentifierValidator.forNode(value)) return; + + throw new InvalidParameterException("Invalid node identifier"); + } + + public static NodeIdentifier of(@NotNull String value) { + return new NodeIdentifier(value); + } +} diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/RoomIdentifier.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/RoomIdentifier.java new file mode 100644 index 0000000..1a0592d --- /dev/null +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/RoomIdentifier.java @@ -0,0 +1,24 @@ +package ru.dragonestia.picker.api.repository.type; + +import org.jetbrains.annotations.NotNull; +import ru.dragonestia.picker.api.util.IdentifierValidator; + +import java.security.InvalidParameterException; + +public class RoomIdentifier extends ValueObject { + + private RoomIdentifier(String value) { + super(value); + } + + @Override + protected void validate(String value) { + if(IdentifierValidator.forRoom(value)) return; + + throw new InvalidParameterException("Invalid room identifier"); + } + + public static RoomIdentifier of(@NotNull String value) { + return new RoomIdentifier(value); + } +} diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/ValueObject.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/ValueObject.java new file mode 100644 index 0000000..0207855 --- /dev/null +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/type/ValueObject.java @@ -0,0 +1,18 @@ +package ru.dragonestia.picker.api.repository.type; + +abstract class ValueObject { + + private final T value; + + ValueObject(T value) { + validate(value); + + this.value = value; + } + + protected abstract void validate(T value); + + public T getValue() { + return value; + } +}