From 7021f82f561ed19e5c1a8d23eb5d103640f09ea1 Mon Sep 17 00:00:00 2001 From: "DozorovaA.A" Date: Sat, 15 Apr 2023 10:30:54 +0400 Subject: [PATCH] add connection one-to-many --- .../speaker/controller/CompanyController.java | 6 ++- .../example/demo/speaker/model/Company.java | 12 ++++++ .../demo/speaker/service/CompanyService.java | 12 ++++++ .../service/RequestForCooperationService.java | 3 ++ src/test/java/com/example/demo/JPATests.java | 38 +++++++++++++++++++ 5 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/speaker/controller/CompanyController.java b/src/main/java/com/example/demo/speaker/controller/CompanyController.java index 55a7281..b1d4b25 100644 --- a/src/main/java/com/example/demo/speaker/controller/CompanyController.java +++ b/src/main/java/com/example/demo/speaker/controller/CompanyController.java @@ -51,6 +51,10 @@ public class CompanyController { public Company deleteCompany(@PathVariable Long id) { return companyService.deleteCompany(id); } - + @GetMapping("/list={id}") + public List getRequestsOfCompany(@PathVariable Long id) + { + return companyService.findCompany(id).getList(); + } } diff --git a/src/main/java/com/example/demo/speaker/model/Company.java b/src/main/java/com/example/demo/speaker/model/Company.java index 21b218b..8631def 100644 --- a/src/main/java/com/example/demo/speaker/model/Company.java +++ b/src/main/java/com/example/demo/speaker/model/Company.java @@ -2,6 +2,8 @@ package com.example.demo.speaker.model; import jakarta.persistence.*; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Entity @@ -14,6 +16,8 @@ public class Company { private String adressCompany; @Column(nullable = false) private String contactEmail; + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + private List requests = new ArrayList<>(); @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -64,6 +68,14 @@ public class Company { { this.contactEmail = contactEmail; } + + public void setList(RequestForCooperation req) { + this.requests.add(req); + } + public List getList() + { + return requests; + } @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/com/example/demo/speaker/service/CompanyService.java b/src/main/java/com/example/demo/speaker/service/CompanyService.java index ebac847..fd1c44f 100644 --- a/src/main/java/com/example/demo/speaker/service/CompanyService.java +++ b/src/main/java/com/example/demo/speaker/service/CompanyService.java @@ -1,6 +1,8 @@ package com.example.demo.speaker.service; import com.example.demo.speaker.model.Company; +import com.example.demo.speaker.model.RequestForCooperation; +import com.example.demo.speaker.model.TypeOfRequestEnum; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.PersistenceContext; @@ -53,4 +55,14 @@ public class CompanyService { public void deleteAllCompanies() { em.createQuery("delete from Company").executeUpdate(); } + + @Transactional + public List getTypesRequests(Long id, TypeOfRequestEnum type) + { + final Company comp = findCompany(id); + var list = comp.getList(); + List res = list.stream(). + filter(r -> r.getType() == type).toList(); + return res; + } } diff --git a/src/main/java/com/example/demo/speaker/service/RequestForCooperationService.java b/src/main/java/com/example/demo/speaker/service/RequestForCooperationService.java index c9055a1..ec6f88d 100644 --- a/src/main/java/com/example/demo/speaker/service/RequestForCooperationService.java +++ b/src/main/java/com/example/demo/speaker/service/RequestForCooperationService.java @@ -13,6 +13,8 @@ import org.springframework.util.StringUtils; import java.util.Date; import java.util.List; +import java.util.stream.Stream; + @Service public class RequestForCooperationService { @PersistenceContext @@ -26,6 +28,7 @@ public class RequestForCooperationService { } final RequestForCooperation report = new RequestForCooperation(name, createDate, type, text); em.persist(report); + name.setList(report); return report; } diff --git a/src/test/java/com/example/demo/JPATests.java b/src/test/java/com/example/demo/JPATests.java index 8b58030..2cd93b5 100644 --- a/src/test/java/com/example/demo/JPATests.java +++ b/src/test/java/com/example/demo/JPATests.java @@ -19,6 +19,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; +import java.util.stream.Stream; @SpringBootTest public class JPATests { @@ -57,7 +58,43 @@ public class JPATests { log.info(addCompany.toString()); Assertions.assertEquals(comp, addCompany); } + @Test + void checkConnectionCompanyAndRequest() throws ParseException { + requestService.deleteAllRequests(); + companyService.deleteAllCompanies(); + final Company comp = companyService.addCompany("Mars", "Ульяновск, Солнечная 19", + "Солнечная 19", "mars@mail.ru"); + final TypeOfRequestEnum type = TypeOfRequestEnum.TRACKING; + RequestForCooperation report = requestService.addRequest(comp, + formatter.parse("05-Jun-2018"), + type, "Хотим сотрудничать"); + report = requestService.addRequest(comp, + formatter.parse("18-Jun-2018"), + type, "Хотим сотрудничать"); + var listRequest = comp.getList(); + Assertions.assertEquals(2, listRequest.size()); + + } + @Test + void checkConnectionRequestAndCompany() throws ParseException { + requestService.deleteAllRequests(); + companyService.deleteAllCompanies(); + + final Company comp = companyService.addCompany("Mars", "Ульяновск, Солнечная 19", + "Солнечная 19", "mars@mail.ru"); + final TypeOfRequestEnum type = TypeOfRequestEnum.TRACKING; + RequestForCooperation report = requestService.addRequest(comp, + formatter.parse("05-Jun-2018"), + type, "Хотим сотрудничать"); + report = requestService.addRequest(comp, + formatter.parse("18-Jun-2018"), + type, "Хотим сотрудничать"); + List listCompany = requestService.findAllRequests(). + stream().map(p -> p.getName()).toList(); + Assertions.assertEquals(1, listCompany.size()); + + } @Test void testReportCreate() throws ParseException { requestService.deleteAllRequests(); @@ -157,4 +194,5 @@ public class JPATests { log.info(reports.toString()); Assertions.assertEquals(0, reports.size()); } + }