updates
This commit is contained in:
@@ -5,7 +5,7 @@ import de.iwomm.propify_api.dto.ProjectDTO;
|
||||
import de.iwomm.propify_api.dto.ProjectDetailsDTO;
|
||||
import de.iwomm.propify_api.dto.ProjectStatsDTO;
|
||||
import de.iwomm.propify_api.entity.Project;
|
||||
import de.iwomm.propify_api.mapper.ProjectMapper;
|
||||
import de.iwomm.propify_api.mapper.ProjectToDtoMapperImpl;
|
||||
import de.iwomm.propify_api.service.ProjectService;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -21,11 +21,11 @@ import java.util.UUID;
|
||||
@RequestMapping("/api/v1/projects")
|
||||
public class ProjectController {
|
||||
private final ProjectService projectService;
|
||||
private final ProjectMapper projectMapper;
|
||||
private final ProjectToDtoMapperImpl projectToDtoMapper;
|
||||
|
||||
public ProjectController(ProjectService projectService, ProjectMapper projectMapper) {
|
||||
public ProjectController(ProjectService projectService, ProjectToDtoMapperImpl projectToDtoMapper) {
|
||||
this.projectService = projectService;
|
||||
this.projectMapper = projectMapper;
|
||||
this.projectToDtoMapper = projectToDtoMapper;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
@@ -42,7 +42,7 @@ public class ProjectController {
|
||||
public ResponseEntity<?> getById(@PathVariable UUID id) {
|
||||
try {
|
||||
Project project = projectService.findById(id).orElseThrow(EntityNotFoundException::new);
|
||||
ProjectDetailsDTO projectDTO = this.projectMapper.projectToProjectDetailsDTO(project);
|
||||
ProjectDetailsDTO projectDTO = this.projectToDtoMapper.projectToProjectDetailsDto(project); // this.projectMapper.projectToProjectDetailsDTO(project);
|
||||
|
||||
return ResponseEntity
|
||||
.ok(projectDTO);
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.util.UUID;
|
||||
|
||||
public record ProjectTimelineEventDTO(
|
||||
UUID id,
|
||||
ProjectTimelineEventTypeDTO projectEventType,
|
||||
ProjectTimelineEventTypeDTO timelineEventType,
|
||||
String title,
|
||||
LocalDateTime date,
|
||||
String description,
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ProjectTimelineEvent {
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "project_timeline_event_type_id")
|
||||
ProjectTimelineEventType projectTimelineEventType;
|
||||
ProjectTimelineEventType timelineEventType;
|
||||
|
||||
@ManyToOne(optional = false, fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "project_id", nullable = false)
|
||||
@@ -43,22 +43,22 @@ public class ProjectTimelineEvent {
|
||||
String title,
|
||||
LocalDateTime date,
|
||||
String description,
|
||||
ProjectTimelineEventType projectTimelineEventType,
|
||||
ProjectTimelineEventType timelineEventType,
|
||||
List<String> documents
|
||||
) {
|
||||
this.title = title;
|
||||
this.date = date;
|
||||
this.description = description;
|
||||
this.projectTimelineEventType = projectTimelineEventType;
|
||||
this.timelineEventType = timelineEventType;
|
||||
this.documents = documents;
|
||||
}
|
||||
|
||||
public ProjectTimelineEventType getProjectTimelineEventType() {
|
||||
return projectTimelineEventType;
|
||||
public ProjectTimelineEventType getTimelineEventType() {
|
||||
return timelineEventType;
|
||||
}
|
||||
|
||||
public void setProjectTimelineEventType(ProjectTimelineEventType projectTimelineEventType) {
|
||||
this.projectTimelineEventType = projectTimelineEventType;
|
||||
public void setTimelineEventType(ProjectTimelineEventType projectTimelineEventType) {
|
||||
this.timelineEventType = projectTimelineEventType;
|
||||
}
|
||||
|
||||
public void setProject(Project project) {
|
||||
|
||||
@@ -12,8 +12,10 @@ public class ProjectType {
|
||||
@Column(nullable = false)
|
||||
private UUID id;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String name;
|
||||
|
||||
@Column(nullable = false)
|
||||
private int sortOrder;
|
||||
|
||||
public ProjectType() {
|
||||
|
||||
@@ -219,4 +219,8 @@ public class Property {
|
||||
public void setFederalState(FederalState federalState) {
|
||||
this.federalState = federalState;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return this.street + " " + this.houseNumber + ", " + this.zipCode + " " + this.city;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectDetailsDTO;
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventDTO;
|
||||
import de.iwomm.propify_api.entity.Project;
|
||||
import de.iwomm.propify_api.entity.Property;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ProjectMapper {
|
||||
|
||||
private final TimelineEventMapper timelineEventMapper;
|
||||
|
||||
public ProjectMapper(TimelineEventMapper timelineEventMapper) {
|
||||
this.timelineEventMapper = timelineEventMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps Project -> ProjectDetailsDTO
|
||||
*/
|
||||
public ProjectDetailsDTO projectToProjectDetailsDTO(Project project) {
|
||||
Property property = project.getProperty();
|
||||
String address = property.getStreet() + " " + property.getHouseNumber() + ", "
|
||||
+ property.getZipCode() + " " + property.getCity();
|
||||
|
||||
List<ProjectTimelineEventDTO> timelineEvents = this.timelineEventMapper.projectTimelineEventToDTO(project.getTimelineEvents());
|
||||
|
||||
ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO(
|
||||
project.getId(),
|
||||
project.getName(),
|
||||
project.getEventNumber(),
|
||||
project.getProjectStatus().getName(),
|
||||
project.getProjectType().getName(),
|
||||
project.getDescription(),
|
||||
project.getAmountRequested(),
|
||||
address,
|
||||
project.getStartDate(),
|
||||
project.getEndDate(),
|
||||
timelineEvents
|
||||
);
|
||||
|
||||
return projectDetailsDTO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventDTO;
|
||||
import de.iwomm.propify_api.entity.ProjectTimelineEvent;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper(componentModel = "spring", uses = { ProjectTimelineEventTypeDtoMapper.class })
|
||||
public interface ProjectTimelineEventToDtoMapper {
|
||||
ProjectTimelineEventDTO toDto(ProjectTimelineEvent entity);
|
||||
|
||||
List<ProjectTimelineEventDTO> toDtoList(List<ProjectTimelineEvent> entities);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventTypeDTO;
|
||||
import de.iwomm.propify_api.entity.ProjectTimelineEventType;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ProjectTimelineEventTypeDtoMapper {
|
||||
ProjectTimelineEventTypeDTO toDto(ProjectTimelineEventType entity);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectDetailsDTO;
|
||||
import de.iwomm.propify_api.entity.Project;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
|
||||
@Mapper(componentModel = "spring", uses = { ProjectTimelineEventToDtoMapper.class })
|
||||
public abstract class ProjectToDtoMapper {
|
||||
|
||||
@Mapping(target = "status", source = "projectStatus.name") // angenommen ProjectStatus hat getName()
|
||||
@Mapping(target = "projectType", source = "projectType.name") // angenommen ProjectType hat getName()
|
||||
@Mapping(target = "address", source = "property.address") // angenommen Property hat getAddress()
|
||||
public abstract ProjectDetailsDTO projectToProjectDetailsDto(Project project);
|
||||
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventDTO;
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventTypeDTO;
|
||||
import de.iwomm.propify_api.entity.ProjectTimelineEvent;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Service
|
||||
public class TimelineEventMapper {
|
||||
|
||||
private final TimelineEventTypeMapper timelineEventTypeMapper;
|
||||
|
||||
public TimelineEventMapper(TimelineEventTypeMapper timelineEventTypeMapper) {
|
||||
this.timelineEventTypeMapper = timelineEventTypeMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps List<ProjectTimelineEvent> -> List<ProjectTimelineEventDTO>
|
||||
*/
|
||||
public List<ProjectTimelineEventDTO> projectTimelineEventToDTO(List<ProjectTimelineEvent> timelineEvents) {
|
||||
List<ProjectTimelineEventDTO> timelineEventDTOs = new ArrayList<>();
|
||||
|
||||
timelineEvents.forEach(timelineEvent -> {
|
||||
timelineEventDTOs.add(this.projectTimelineEventToDTO(timelineEvent));
|
||||
});
|
||||
|
||||
return timelineEventDTOs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps ProjectTimelineEvent -> ProjectTimelineEventDTO
|
||||
*/
|
||||
public ProjectTimelineEventDTO projectTimelineEventToDTO(ProjectTimelineEvent projectTimelineEvent) {
|
||||
return new ProjectTimelineEventDTO(
|
||||
projectTimelineEvent.getId(),
|
||||
this.timelineEventTypeMapper.projectTimelineEventTypeToDTO(projectTimelineEvent.getProjectTimelineEventType()),
|
||||
projectTimelineEvent.getTitle(),
|
||||
projectTimelineEvent.getDate(),
|
||||
projectTimelineEvent.getDescription(),
|
||||
projectTimelineEvent.getDocuments()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package de.iwomm.propify_api.mapper;
|
||||
|
||||
import de.iwomm.propify_api.dto.ProjectTimelineEventTypeDTO;
|
||||
import de.iwomm.propify_api.entity.ProjectTimelineEventType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class TimelineEventTypeMapper {
|
||||
|
||||
/**
|
||||
* Maps ProjectTimelineEventType -> ProjectTimelineEventTypeDTO
|
||||
*/
|
||||
public ProjectTimelineEventTypeDTO projectTimelineEventTypeToDTO(ProjectTimelineEventType projectTimelineEventType) {
|
||||
return new ProjectTimelineEventTypeDTO(
|
||||
projectTimelineEventType.getId(),
|
||||
projectTimelineEventType.getName(),
|
||||
projectTimelineEventType.getColor(),
|
||||
projectTimelineEventType.getIcon()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user