Skip to content

Commit

Permalink
review #0.6 fix error
Browse files Browse the repository at this point in the history
  • Loading branch information
Sidorenkov Anton committed Feb 11, 2024
1 parent fd3ce6d commit d710acc
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 16 deletions.
2 changes: 0 additions & 2 deletions src/main/java/hexlet/code/dto/TaskDTO/TaskCreateDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@ public class TaskCreateDTO {
@JsonProperty("content")
private String description;

@NotNull
@JsonProperty("assignee_id")
private Long assigneeId;

@NotNull
private String status;

@NotNull
@JsonProperty("taskLabelIds")
private Set<Long> labelIds;
}
20 changes: 18 additions & 2 deletions src/main/java/hexlet/code/mapper/TaskMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import hexlet.code.model.Task;
import hexlet.code.repository.LabelRepository;
import hexlet.code.repository.TaskStatusRepository;
import hexlet.code.repository.UserRepository;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
Expand All @@ -34,19 +35,22 @@ public abstract class TaskMapper {
@Autowired
private LabelRepository labelRepository;

@Autowired
private UserRepository userRepository;

private static final String STATUS_NOT_FOUND_MESSAGE = "Status not found";

private static final String LABEL_NOT_FOUND_MESSAGE = "Label not found";

@Mapping(target = "assignee.id", source = "assigneeId")
private static final String USER_NOT_FOUND_MESSAGE = "User not found";

public abstract Task map(TaskCreateDTO dto);

@Mapping(target = "assigneeId", source = "assignee.id")
@Mapping(target = "status", source = "taskStatus.slug")
@Mapping(target = "labelIds", expression = "java(labelsToLabelIds(model.getLabels()))")
public abstract TaskDTO map(Task model);

@Mapping(target = "assignee.id", source = "assigneeId")
public abstract void update(TaskUpdateDTO dto, @MappingTarget Task model);

@AfterMapping
Expand All @@ -57,12 +61,18 @@ public void afterUpdateMapping(TaskUpdateDTO dto, @MappingTarget Task model) {
if (dto.getLabelIds() != null) {
setLabels(dto.getLabelIds().get(), model);
}
if (dto.getAssigneeId() != null) {
setAssignee(dto.getAssigneeId().get(), model);
}
}

@AfterMapping
public void afterCreateMapping(TaskCreateDTO dto, @MappingTarget Task model) {
setStatus(dto.getStatus(), model);
setLabels(dto.getLabelIds(), model);
if (dto.getAssigneeId() != null) {
setAssignee(dto.getAssigneeId(), model);
}
}

private void setStatus(String slug, Task model) {
Expand All @@ -81,6 +91,12 @@ private void setLabels(Set<Long> labelIds, Task model) {
model.setLabels(labels);
}

private void setAssignee(Long id, Task model) {
var assignee = userRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(USER_NOT_FOUND_MESSAGE));
model.setAssignee(assignee);
}

public Set<Long> labelsToLabelIds(Set<Label> labels) {
return labels.stream()
.map(Label::getId)
Expand Down
7 changes: 0 additions & 7 deletions src/main/java/hexlet/code/model/Label.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package hexlet.code.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
Expand All @@ -19,8 +17,6 @@
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;

@Entity
@Getter
Expand All @@ -47,7 +43,4 @@ public class Label implements BaseEntity {
@CreatedDate
private LocalDate createdAt;

@ManyToMany
@JsonIgnore
private Set<Task> tasks = new HashSet<>();
}
8 changes: 4 additions & 4 deletions src/main/java/hexlet/code/model/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

Expand Down Expand Up @@ -48,13 +50,11 @@ public class Task implements BaseEntity {
private String description;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "task_status_id", nullable = false)
@NotNull
@JoinColumn(name = "task_status_id")
private TaskStatus taskStatus;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "assignee_id", nullable = false)
@NotNull
@JoinColumn(name = "assignee_id")
private User assignee;

@CreatedDate
Expand Down
1 change: 0 additions & 1 deletion src/test/java/hexlet/code/util/ModelGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ private void init() {

labelModel = Instancio.of(Label.class)
.ignore(Select.field(Label::getCreatedAt))
.ignore(Select.field(Label::getTasks))
.supply(Select.field(Label::getName), () -> faker.text().text(3, 1000))
.toModel();
}
Expand Down

0 comments on commit d710acc

Please sign in to comment.