This commit is contained in:
Viktoria committed 2022-08-30 11:20:13 +02:00
1 parent 71358a25dd
commit 44c7887c8f
8 files changed
+85 -18

No files matched your search

@@ -139,7 +139,7 @@ public class ProjectController {
return modelAndView;
}
@PostMapping("/{projectId}/{nameOfPosition}/applay")
@PostMapping("/{projectId}/{nameOfPosition}/apply")
public ModelAndView applyOnProject(@PathVariable("projectId") Long projectId,
@PathVariable("nameOfPosition") String nameOfPosition,
Principal principal) {
@@ -21,10 +21,6 @@ public class Participant {
@JoinColumn(name = "project_id", updatable = false)
private Project project;
@Column(name = "technology")
@NotNull
private String technology;
@Column(name = "name_of_position")
private String nameOfPosition;
@ManyToOne
@@ -9,6 +9,7 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
@Data
@Entity
@@ -35,9 +36,12 @@ public class Project {
@Column(name = "commercial_status") // 1 - commercial, 0 - non-commercial
private int commercialStatus;
@Column(name = "technology")
@NotNull
private String technology;
@ManyToMany
@JoinTable(
joinColumns = @JoinColumn(name = "project_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id")
)
private List<Tag> technology;
@ManyToOne
@JoinColumn(name = "owner_id", updatable = false)
@@ -0,0 +1,22 @@
package site.easystartup.web.project.domain.model;
import lombok.Data;
import javax.persistence.*;
import java.util.Set;
@Data
@Entity
@Table(name = "tag")
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tag_id")
private Long tagId;
@Column(name = "tage_name")
private String tagName;
@ManyToMany(mappedBy = "technology")
private Set<Project> projects;
}
@@ -1,11 +1,13 @@
package site.easystartup.web.project.domain.payload.requst;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
import site.easystartup.web.project.domain.model.Tag;
import site.easystartup.web.project.dto.ParticipantDto;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
@Data
@@ -22,6 +24,6 @@ public class ProjectRequest {
private String description;
private int commercialStatus;
@NotNull
private String technology;
private List<Tag> technology;
private List<ParticipantDto> participants;
}
@@ -0,0 +1,13 @@
package site.easystartup.web.project.repo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import site.easystartup.web.project.domain.model.Tag;
import java.util.Optional;
@Repository
public interface TagRepo extends JpaRepository<Tag, Long> {
Optional<Tag> findTagByTagNameIgnoreCase(String tagName);
}
@@ -7,6 +7,7 @@ import site.easystartup.web.domain.User;
import site.easystartup.web.project.domain.exeption.ProjectNotFoundException;
import site.easystartup.web.project.domain.model.Participant;
import site.easystartup.web.project.domain.model.Project;
import site.easystartup.web.project.domain.model.Tag;
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
import site.easystartup.web.project.repo.ParticipantRepo;
import site.easystartup.web.project.repo.ProjectRepo;
@@ -14,6 +15,7 @@ import site.easystartup.web.service.UserService;
import site.easystartup.web.storage.service.StorageService;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
@@ -27,6 +29,7 @@ public class ProjectService {
private final ModelMapper modelMapper;
private final StorageService storageService;
private final ParticipantRepo participantRepo;
private final TagService tagService;
public Project createProject(ProjectRequest projectRequest, Principal principal) {
@@ -108,13 +111,6 @@ public class ProjectService {
return projectRepo.save(project);
}
private String formatTechnology(String technology) {
StringBuilder result = new StringBuilder();
Arrays.stream(technology.split(",")).forEach(tech -> result.append(tech.trim()).append(" "));
return result.toString();
}
private Project projectRequestToProject(ProjectRequest projectRequest, Principal principal) {
Project project = new Project();
@@ -122,7 +118,7 @@ public class ProjectService {
.stream().map(part -> modelMapper.map(part, Participant.class)).collect(Collectors.toList()));
project.setTitle(projectRequest.getTitle());
project.setDescription(projectRequest.getDescription());
project.setTechnology(formatTechnology(projectRequest.getTechnology()));
project.setTechnology(tagService.convertTechnology(projectRequest.getTechnology()));
project.setCommercialStatus(project.getCommercialStatus());
project.setCoverLink(projectRequest.getCover().getName());
project.setOwner(userService.getUserByPrincipal(principal));
@@ -0,0 +1,34 @@
package site.easystartup.web.project.service;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import site.easystartup.web.project.domain.model.Tag;
import site.easystartup.web.project.repo.TagRepo;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class TagService {
private final TagRepo tagRepo;
public List<Tag> getAllTags() {
return tagRepo.findAll();
}
public List<Tag> convertTechnology(List<Tag> technology) {
List<Tag> tags = new ArrayList<>();
technology.forEach(tag -> {
Optional<Tag> foundTag = tagRepo.findTagByTagNameIgnoreCase(tag.getTagName());
if (foundTag.isPresent()) {
tags.add(foundTag.get());
}
else {
tagRepo.save(tag);
tags.add(tagRepo.findTagByTagNameIgnoreCase(tag.getTagName()).get());
}
});
return tags;
}
}