Skip to content

Commit bf0cdba

Browse files
authored
Merge pull request #48 from ithsjava25/ProjectControllerfixes-usecase
Created ProjectDto
2 parents ebc302e + 87658ec commit bf0cdba

5 files changed

Lines changed: 37 additions & 13 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package demo.codeexample.project;
2+
3+
import demo.codeexample.project.domain.Category;
4+
import demo.codeexample.project.domain.Genre;
5+
import lombok.Data;
6+
7+
import java.time.LocalDate;
8+
9+
@Data
10+
public class ProjectDto {
11+
Long id;
12+
String title;
13+
String description;
14+
LocalDate releaseDate;
15+
Category category;
16+
Genre genre;
17+
String imageURL;
18+
}

src/main/java/demo/codeexample/project/application/in/ProjectUseCase.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package demo.codeexample.project.application.in;
22

3+
import demo.codeexample.project.ProjectDto;
34
import demo.codeexample.project.domain.Category;
45
import demo.codeexample.project.domain.Genre;
56
import demo.codeexample.project.domain.Project;
@@ -21,8 +22,5 @@ public interface ProjectUseCase {
2122
Project createProject(String title, String description, LocalDate releaseDate, Set<Long> employeesId,
2223
Category category, Genre genre, String imageURL);
2324

24-
ProjectDetails getProjectDetails(Long projectId);
25-
26-
record ProjectDetails(Long projectId, String title, String description, LocalDate releaseDate,
27-
Category category, Genre genre, String imageUrl){}
25+
ProjectDto getProjectDetails(Long projectId);
2826
}

src/main/java/demo/codeexample/project/application/usecase/ProjectService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package demo.codeexample.project.application.usecase;
22

3+
import demo.codeexample.project.ProjectDto;
34
import demo.codeexample.project.domain.Category;
45
import demo.codeexample.project.domain.Genre;
56
import demo.codeexample.project.application.in.ProjectUseCase;
67
import demo.codeexample.project.application.out.ProjectRepositoryPort;
78
import demo.codeexample.project.application.out.UserPort;
89
import demo.codeexample.project.domain.Project;
10+
import jakarta.persistence.EntityNotFoundException;
11+
import org.modelmapper.ModelMapper;
912

1013
import java.time.LocalDate;
1114
import java.util.List;
@@ -15,10 +18,12 @@ public class ProjectService implements ProjectUseCase {
1518

1619
private final ProjectRepositoryPort repository;
1720
private final UserPort userPort;
21+
private final ModelMapper mapper;
1822

19-
public ProjectService(ProjectRepositoryPort repository, UserPort userPort){
23+
public ProjectService(ProjectRepositoryPort repository, UserPort userPort, ModelMapper mapper) {
2024
this.repository = repository;
2125
this.userPort = userPort;
26+
this.mapper = mapper;
2227
}
2328

2429
@Override
@@ -52,9 +57,10 @@ public List<Project> findProjectContainingTitle(String title) {
5257
return repository.findProjectContainingTitle(title);
5358
}
5459

55-
@Override
56-
public ProjectDetails getProjectDetails(Long projectId) {
57-
return null;
60+
public ProjectDto getProjectDetails(Long projectId) {
61+
return repository.findById(projectId)
62+
.map(project -> mapper.map(project, ProjectDto.class))
63+
.orElseThrow(() -> new EntityNotFoundException("Project not found: " + projectId));
5864
}
5965

6066
}

src/main/java/demo/codeexample/project/infrastructure/ProjectConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
import demo.codeexample.project.application.out.ProjectRepositoryPort;
44
import demo.codeexample.project.application.out.UserPort;
55
import demo.codeexample.project.application.usecase.ProjectService;
6+
import org.modelmapper.ModelMapper;
67
import org.springframework.context.annotation.Bean;
78
import org.springframework.context.annotation.Configuration;
89

910
@Configuration
1011
public class ProjectConfig {
1112

1213
@Bean
13-
public ProjectService projectService(ProjectRepositoryPort projectRepositoryPort, UserPort userPort){
14-
return new ProjectService(projectRepositoryPort, userPort);
14+
public ProjectService projectService(ProjectRepositoryPort projectRepositoryPort, UserPort userPort, ModelMapper modelMapper) {
15+
return new ProjectService(projectRepositoryPort, userPort, modelMapper);
1516
}
1617

1718
}
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package demo.codeexample.project.infrastructure.adapters.in;
22

3+
import demo.codeexample.project.application.in.ProjectUseCase;
34
import demo.codeexample.project.application.usecase.ProjectService;
45

56
public class ProjectController {
67

7-
ProjectService service;
8+
ProjectUseCase projectUseCase;
89

9-
public ProjectController(ProjectService service){
10-
this.service = service;
10+
public ProjectController(ProjectUseCase projectUseCase) {
11+
this.projectUseCase = projectUseCase;
1112

1213
}
1314
}

0 commit comments

Comments
 (0)