From aefe9e21a16d14faa3fbb68547ce2d6c6dd21f1b Mon Sep 17 00:00:00 2001 From: maiia Date: Sun, 13 Nov 2022 02:52:32 +0300 Subject: [PATCH 1/2] develop mappers --- .../software/design/entity/ProjectEntity.java | 1 + .../java/software/design/model/Project.java | 23 +++++++----- src/main/java/software/design/model/Task.java | 9 ++++- .../software/design/model/TaskStatus.java | 16 +++++++++ src/main/java/software/design/model/User.java | 9 ++++- .../design/service/ProjectMapper.java | 36 +++++++++++++++++++ .../design/service/ProjectService.java | 4 +++ .../software/design/service/TaskMapper.java | 35 ++++++++++++++++++ .../software/design/service/TaskService.java | 4 +++ .../design/service/TaskStatusMapper.java | 27 ++++++++++++++ .../design/service/TaskStatusService.java | 4 +++ .../software/design/service/UserMapper.java | 29 +++++++++++++++ .../software/design/service/UserService.java | 4 +++ 13 files changed, 191 insertions(+), 10 deletions(-) create mode 100644 src/main/java/software/design/service/ProjectMapper.java create mode 100644 src/main/java/software/design/service/ProjectService.java create mode 100644 src/main/java/software/design/service/TaskMapper.java create mode 100644 src/main/java/software/design/service/TaskService.java create mode 100644 src/main/java/software/design/service/TaskStatusMapper.java create mode 100644 src/main/java/software/design/service/TaskStatusService.java create mode 100644 src/main/java/software/design/service/UserMapper.java create mode 100644 src/main/java/software/design/service/UserService.java diff --git a/src/main/java/software/design/entity/ProjectEntity.java b/src/main/java/software/design/entity/ProjectEntity.java index 29d1e1c..e0f270d 100644 --- a/src/main/java/software/design/entity/ProjectEntity.java +++ b/src/main/java/software/design/entity/ProjectEntity.java @@ -38,4 +38,5 @@ public class ProjectEntity { @OneToMany(mappedBy = "project") private List tasks; + } diff --git a/src/main/java/software/design/model/Project.java b/src/main/java/software/design/model/Project.java index 62dfc31..89d3123 100644 --- a/src/main/java/software/design/model/Project.java +++ b/src/main/java/software/design/model/Project.java @@ -1,23 +1,30 @@ package software.design.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; import java.util.UUID; -public class Project { - private UUID id; +@AllArgsConstructor +@RequiredArgsConstructor +public record Project( + UUID id, @NotBlank - private String name; + String name, - private String description; + String description, - private Date dateCreated; + Date dateCreated, - private User user; + User user, @NotNull - private List tasks; -} + List tasks +) +{} diff --git a/src/main/java/software/design/model/Task.java b/src/main/java/software/design/model/Task.java index 874edd7..64b04d5 100644 --- a/src/main/java/software/design/model/Task.java +++ b/src/main/java/software/design/model/Task.java @@ -1,9 +1,16 @@ package software.design.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + import javax.validation.constraints.NotBlank; import java.util.Date; import java.util.UUID; +@Getter +@AllArgsConstructor +@RequiredArgsConstructor public class Task { private UUID id; @@ -13,7 +20,7 @@ public class Task { private String description; - private Date dateCreated; + final private Date dateCreated; private TaskStatus status; diff --git a/src/main/java/software/design/model/TaskStatus.java b/src/main/java/software/design/model/TaskStatus.java index 8ceeddc..463fb9f 100644 --- a/src/main/java/software/design/model/TaskStatus.java +++ b/src/main/java/software/design/model/TaskStatus.java @@ -1,4 +1,20 @@ package software.design.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.UUID; + +@Getter +@AllArgsConstructor public class TaskStatus { + private UUID id; + + @NotBlank + private String name; + + private List tasks; } diff --git a/src/main/java/software/design/model/User.java b/src/main/java/software/design/model/User.java index 13209d0..fe4793d 100644 --- a/src/main/java/software/design/model/User.java +++ b/src/main/java/software/design/model/User.java @@ -1,17 +1,24 @@ package software.design.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + import javax.validation.constraints.NotBlank; import java.util.Date; import java.util.List; import java.util.UUID; +@Getter +@AllArgsConstructor +@RequiredArgsConstructor public class User { private UUID id; @NotBlank private String username; - private Date created; + final private Date created; private List projects; } diff --git a/src/main/java/software/design/service/ProjectMapper.java b/src/main/java/software/design/service/ProjectMapper.java new file mode 100644 index 0000000..763669a --- /dev/null +++ b/src/main/java/software/design/service/ProjectMapper.java @@ -0,0 +1,36 @@ +package software.design.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import software.design.entity.ProjectEntity; +import software.design.model.Project; + +@Component +@RequiredArgsConstructor +public class ProjectMapper { + + private final TaskMapper taskMapper; + private final UserMapper userMapper; + + public ProjectEntity modelToEntity(Project model) { + return new ProjectEntity( + null, + model.name(), + model.description(), + model.dateCreated(), + userMapper.modelToEntity(model.user()), + model.tasks().stream().map(taskMapper::modelToEntity).toList() + ); + } + + public Project entityToModel(ProjectEntity entity) { + return new Project( + entity.getId(), + entity.getName(), + entity.getDescription(), + entity.getDateCreated(), + userMapper.entityToModel(entity.getUser()), + entity.getTasks().stream().map(taskMapper::entityToModel).toList() + ); + } +} diff --git a/src/main/java/software/design/service/ProjectService.java b/src/main/java/software/design/service/ProjectService.java new file mode 100644 index 0000000..830b193 --- /dev/null +++ b/src/main/java/software/design/service/ProjectService.java @@ -0,0 +1,4 @@ +package software.design.service; + +public class ProjectService { +} diff --git a/src/main/java/software/design/service/TaskMapper.java b/src/main/java/software/design/service/TaskMapper.java new file mode 100644 index 0000000..2b478cf --- /dev/null +++ b/src/main/java/software/design/service/TaskMapper.java @@ -0,0 +1,35 @@ +package software.design.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import software.design.entity.TaskEntity; +import software.design.model.Task; + +@Component +@RequiredArgsConstructor +public class TaskMapper { + + private final ProjectMapper projectMapper; + + private final TaskStatusMapper taskStatusMapper; + + public TaskEntity modelToEntity(Task model){ + return new TaskEntity( + model.getId(), + model.getName(), + model.getDescription(), + model.getDateCreated(), + taskStatusMapper.modelToEntity(model.getStatus()), + projectMapper.modelToEntity(model.getProject())); + } + + public Task entityToModel(TaskEntity entity){ + return new Task( + entity.getId(), + entity.getName(), + entity.getDescription(), + entity.getDateCreated(), + taskStatusMapper.entityToModel(entity.getStatus()), + projectMapper.entityToModel(entity.getProject())); + } +} diff --git a/src/main/java/software/design/service/TaskService.java b/src/main/java/software/design/service/TaskService.java new file mode 100644 index 0000000..8205e3d --- /dev/null +++ b/src/main/java/software/design/service/TaskService.java @@ -0,0 +1,4 @@ +package software.design.service; + +public class TaskService { +} diff --git a/src/main/java/software/design/service/TaskStatusMapper.java b/src/main/java/software/design/service/TaskStatusMapper.java new file mode 100644 index 0000000..b73a666 --- /dev/null +++ b/src/main/java/software/design/service/TaskStatusMapper.java @@ -0,0 +1,27 @@ +package software.design.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import software.design.entity.TaskStatusEntity; +import software.design.model.TaskStatus; + +@Component +@RequiredArgsConstructor +public class TaskStatusMapper { + + private final TaskMapper taskMapper; + + public TaskStatusEntity modelToEntity(TaskStatus model){ + return new TaskStatusEntity( + model.getId(), + model.getName(), + model.getTasks().stream().map(taskMapper::modelToEntity).toList()); + } + + public TaskStatus entityToModel(TaskStatusEntity entity){ + return new TaskStatus( + entity.getId(), + entity.getName(), + entity.getTasks().stream().map(taskMapper::entityToModel).toList()); + } +} diff --git a/src/main/java/software/design/service/TaskStatusService.java b/src/main/java/software/design/service/TaskStatusService.java new file mode 100644 index 0000000..cde77ee --- /dev/null +++ b/src/main/java/software/design/service/TaskStatusService.java @@ -0,0 +1,4 @@ +package software.design.service; + +public class TaskStatusService { +} diff --git a/src/main/java/software/design/service/UserMapper.java b/src/main/java/software/design/service/UserMapper.java new file mode 100644 index 0000000..05caac4 --- /dev/null +++ b/src/main/java/software/design/service/UserMapper.java @@ -0,0 +1,29 @@ +package software.design.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import software.design.entity.UserEntity; +import software.design.model.User; + +@Component +@RequiredArgsConstructor +public class UserMapper { + + private final ProjectMapper projectMapper; + + public UserEntity modelToEntity(User model){ + return new UserEntity( + model.getId(), + model.getUsername(), + model.getCreated(), + model.getProjects().stream().map(projectMapper::modelToEntity).toList()); + } + + public User entityToModel(UserEntity entity){ + return new User( + entity.getId(), + entity.getName(), + entity.getDateCreated(), + entity.getProjects().stream().map(projectMapper::entityToModel).toList()); + } +} diff --git a/src/main/java/software/design/service/UserService.java b/src/main/java/software/design/service/UserService.java new file mode 100644 index 0000000..6ab0a8e --- /dev/null +++ b/src/main/java/software/design/service/UserService.java @@ -0,0 +1,4 @@ +package software.design.service; + +public class UserService { +} From ec2074c999536bd958521b361858c37f8b16c919 Mon Sep 17 00:00:00 2001 From: maiia Date: Sun, 13 Nov 2022 03:10:23 +0300 Subject: [PATCH 2/2] creste repos --- .../design/repository/ProjectRepository.java | 14 ++++++++++++++ .../software/design/repository/TaskRepository.java | 14 ++++++++++++++ .../design/repository/TaskStatusRepository.java | 11 +++++++++++ .../software/design/repository/UserRepository.java | 11 +++++++++++ .../software/design/service/ProjectService.java | 3 +++ 5 files changed, 53 insertions(+) create mode 100644 src/main/java/software/design/repository/ProjectRepository.java create mode 100644 src/main/java/software/design/repository/TaskRepository.java create mode 100644 src/main/java/software/design/repository/TaskStatusRepository.java create mode 100644 src/main/java/software/design/repository/UserRepository.java diff --git a/src/main/java/software/design/repository/ProjectRepository.java b/src/main/java/software/design/repository/ProjectRepository.java new file mode 100644 index 0000000..cb8c75a --- /dev/null +++ b/src/main/java/software/design/repository/ProjectRepository.java @@ -0,0 +1,14 @@ +package software.design.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import software.design.entity.GroupEntity; +import software.design.entity.ProjectEntity; +import software.design.entity.StudentEntity; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface ProjectRepository extends JpaRepository { +} diff --git a/src/main/java/software/design/repository/TaskRepository.java b/src/main/java/software/design/repository/TaskRepository.java new file mode 100644 index 0000000..4654f83 --- /dev/null +++ b/src/main/java/software/design/repository/TaskRepository.java @@ -0,0 +1,14 @@ +package software.design.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import software.design.entity.GroupEntity; +import software.design.entity.StudentEntity; +import software.design.entity.TaskEntity; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface TaskRepository extends JpaRepository { +} diff --git a/src/main/java/software/design/repository/TaskStatusRepository.java b/src/main/java/software/design/repository/TaskStatusRepository.java new file mode 100644 index 0000000..3840d11 --- /dev/null +++ b/src/main/java/software/design/repository/TaskStatusRepository.java @@ -0,0 +1,11 @@ +package software.design.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import software.design.entity.StudentEntity; + +import java.util.UUID; + +@Repository +public interface TaskStatusRepository extends JpaRepository { +} diff --git a/src/main/java/software/design/repository/UserRepository.java b/src/main/java/software/design/repository/UserRepository.java new file mode 100644 index 0000000..2a034cd --- /dev/null +++ b/src/main/java/software/design/repository/UserRepository.java @@ -0,0 +1,11 @@ +package software.design.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import software.design.entity.StudentEntity; + +import java.util.UUID; + +@Repository +public interface UserRepository extends JpaRepository { +} diff --git a/src/main/java/software/design/service/ProjectService.java b/src/main/java/software/design/service/ProjectService.java index 830b193..aefb2f4 100644 --- a/src/main/java/software/design/service/ProjectService.java +++ b/src/main/java/software/design/service/ProjectService.java @@ -1,4 +1,7 @@ package software.design.service; +import software.design.model.Project; + public class ProjectService { + }