From 3823e8812195e4d58e41b9da043b229331428412 Mon Sep 17 00:00:00 2001 From: "DozorovaA.A" Date: Mon, 6 Mar 2023 15:49:54 +0400 Subject: [PATCH] thirdLabWork --- build.gradle | 3 + front/db.json | 20 ++++ .../speaker/controller/MethodController.java | 43 ------- .../controller/ReportSotrController.java | 66 +++++++++++ .../controller/TypeSotrController.java | 37 ++++++ .../speaker/controller/WorkerController.java | 43 +++++++ .../example/demo/speaker/domain/IMethod.java | 11 -- .../demo/speaker/domain/MethodBoolean.java | 30 ----- .../demo/speaker/domain/MethodInt.java | 27 ----- .../demo/speaker/domain/MethodString.java | 44 ------- .../demo/speaker/model/ReportSort.java | 107 ++++++++++++++++++ .../example/demo/speaker/model/TypeSotr.java | 39 +++++++ .../example/demo/speaker/model/Worker.java | 47 ++++++++ .../demo/speaker/service/MethodService.java | 101 ----------------- .../speaker/service/ReportSotrService.java | 69 +++++++++++ .../demo/speaker/service/TypeSortService.java | 55 +++++++++ .../demo/speaker/service/WorkerService.java | 65 +++++++++++ src/main/resources/application.properties | 12 +- .../example/demo/DemoApplicationTests.java | 103 +---------------- src/test/java/com/example/demo/JPATests.java | 74 ++++++++++++ 20 files changed, 637 insertions(+), 359 deletions(-) create mode 100644 front/db.json delete mode 100644 src/main/java/com/example/demo/speaker/controller/MethodController.java create mode 100644 src/main/java/com/example/demo/speaker/controller/ReportSotrController.java create mode 100644 src/main/java/com/example/demo/speaker/controller/TypeSotrController.java create mode 100644 src/main/java/com/example/demo/speaker/controller/WorkerController.java delete mode 100644 src/main/java/com/example/demo/speaker/domain/IMethod.java delete mode 100644 src/main/java/com/example/demo/speaker/domain/MethodBoolean.java delete mode 100644 src/main/java/com/example/demo/speaker/domain/MethodInt.java delete mode 100644 src/main/java/com/example/demo/speaker/domain/MethodString.java create mode 100644 src/main/java/com/example/demo/speaker/model/ReportSort.java create mode 100644 src/main/java/com/example/demo/speaker/model/TypeSotr.java create mode 100644 src/main/java/com/example/demo/speaker/model/Worker.java delete mode 100644 src/main/java/com/example/demo/speaker/service/MethodService.java create mode 100644 src/main/java/com/example/demo/speaker/service/ReportSotrService.java create mode 100644 src/main/java/com/example/demo/speaker/service/TypeSortService.java create mode 100644 src/main/java/com/example/demo/speaker/service/WorkerService.java create mode 100644 src/test/java/com/example/demo/JPATests.java diff --git a/build.gradle b/build.gradle index bd92341..45c0620 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,9 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/front/db.json b/front/db.json new file mode 100644 index 0000000..76b750a --- /dev/null +++ b/front/db.json @@ -0,0 +1,20 @@ +{ + "ReportSotr": [ + { + "id": 1, + "CompanyName": "json-server", + "Date": "typicode", + "" + } + ], + "comments": [ + { + "id": 1, + "body": "some comment", + "postId": 1 + } + ], + "profile": { + "name": "typicode" + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/controller/MethodController.java b/src/main/java/com/example/demo/speaker/controller/MethodController.java deleted file mode 100644 index b934aa9..0000000 --- a/src/main/java/com/example/demo/speaker/controller/MethodController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.demo.speaker.controller; - -import com.example.demo.speaker.service.MethodService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class MethodController { - private final MethodService methodService; - - public MethodController(MethodService speakerService) { - this.methodService = speakerService; - } - - @GetMapping("/sum") - public String Sum(@RequestParam(value = "first", defaultValue = "1") Object first, - @RequestParam(value = "second", defaultValue = "1") Object second, - @RequestParam(value = "type", defaultValue = "int") String type) { - return methodService.Sum(first,second,type); - } - - @GetMapping("/minus") - public String Ras(@RequestParam(value = "first", defaultValue = "1") Object first, - @RequestParam(value = "second", defaultValue = "1") Object second, - @RequestParam(value = "type", defaultValue = "int") String type) { - return methodService.Ras(first,second,type); - } - - @GetMapping("/multi") - public String Pros(@RequestParam(value = "first", defaultValue = "1") Object first, - @RequestParam(value = "second", defaultValue = "1") Object second, - @RequestParam(value = "type", defaultValue = "int") String type) { - return methodService.Pros(first,second,type); - } - - @GetMapping("/div") - public String Del(@RequestParam(value = "first", defaultValue = "1") Object first, - @RequestParam(value = "second", defaultValue = "1") Object second, - @RequestParam(value = "type", defaultValue = "int") String type) { - return methodService.Del(first,second,type); - } -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/controller/ReportSotrController.java b/src/main/java/com/example/demo/speaker/controller/ReportSotrController.java new file mode 100644 index 0000000..27062f4 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/controller/ReportSotrController.java @@ -0,0 +1,66 @@ +package com.example.demo.speaker.controller; + +import com.example.demo.speaker.model.ReportSort; +import com.example.demo.speaker.service.ReportSotrService; +import com.example.demo.speaker.service.TypeSortService; +import com.example.demo.speaker.service.WorkerService; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/reports") +public class ReportSotrController { + private final ReportSotrService reportService; + + + public ReportSotrController(ReportSotrService reportService) { + this.reportService = reportService; + } + + @GetMapping("/{id}") + public ReportSort getReport(@PathVariable Long id) { + return reportService.findReport(id); + } + + @GetMapping("/") + public List getReports() { + return reportService.findAllReports(); + } + + @PostMapping("/") + public ReportSort createReport(@RequestParam("CompanyName") String CompanyName, + @RequestParam("createDate") Date createDate, + @RequestParam("IdType") Long IdType, + @RequestParam("Text") String Text) { + return reportService.addReport(CompanyName, createDate, IdType, Text); + } + + @PatchMapping("/{id}") + public ReportSort updateStudent(@PathVariable Long id, + @RequestParam("approveDate") Date approveDate, + @RequestParam("isActive") Boolean isActive, + @RequestParam("Worker") Long IdWorker) { + return reportService.updateReport(id, approveDate, isActive, IdWorker); + } + + @DeleteMapping("/{id}") + public ReportSort deleteReport(@PathVariable Long id) { + return reportService.deleteReport(id); + } + + @PostMapping("/list") + public String ListOfReport() { + var List = reportService.findAllReports(); + TypeSortService typeService = new TypeSortService(); + WorkerService workerService = new WorkerService(); + String result = ""; + for (var i : List) { + var Type = typeService.findType(i.GetType()); + var Worker = workerService.findWorker(i.GetWorker()); + result += i.toString() + "Type: " + Type.toString() + "Worker: "+Worker.toString() + "\n\r"; + } + return result; + } +} diff --git a/src/main/java/com/example/demo/speaker/controller/TypeSotrController.java b/src/main/java/com/example/demo/speaker/controller/TypeSotrController.java new file mode 100644 index 0000000..a1c596d --- /dev/null +++ b/src/main/java/com/example/demo/speaker/controller/TypeSotrController.java @@ -0,0 +1,37 @@ +package com.example.demo.speaker.controller; + +import com.example.demo.speaker.model.TypeSotr; +import com.example.demo.speaker.service.TypeSortService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +@RestController +@RequestMapping("/types") +public class TypeSotrController { + private final TypeSortService TypeService; + + + public TypeSotrController(TypeSortService typeService) { + this.TypeService = typeService; + } + + @GetMapping("/{id}") + public TypeSotr getType(@PathVariable Long id) { + return TypeService.findType(id); + } + + @GetMapping("/") + public List getStudents() { + return TypeService.findAllTypes(); + } + + @PostMapping("/") + public TypeSotr createStudent(@RequestParam("Name") String name) { + return TypeService.addType(name); + } + + @DeleteMapping("/{id}") + public TypeSotr deleteStudent(@PathVariable Long id) { + return TypeService.deleteType(id); + } +} diff --git a/src/main/java/com/example/demo/speaker/controller/WorkerController.java b/src/main/java/com/example/demo/speaker/controller/WorkerController.java new file mode 100644 index 0000000..125b70a --- /dev/null +++ b/src/main/java/com/example/demo/speaker/controller/WorkerController.java @@ -0,0 +1,43 @@ +package com.example.demo.speaker.controller; + +import com.example.demo.speaker.model.Worker; +import com.example.demo.speaker.service.WorkerService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +@RestController +@RequestMapping("/workers") +public class WorkerController { + private final WorkerService workerService; + + + public WorkerController(WorkerService workerService) { + this.workerService = workerService; + } + + @GetMapping("/{id}") + public Worker getWorker(@PathVariable Long id) { + return workerService.findWorker(id); + } + + @GetMapping("/") + public List getWorkers() { + return workerService.findAllWorkers(); + } + + @PostMapping("/") + public Worker createStudent(@RequestParam("Name") String Name) { + return workerService.addWorker(Name); + } + + @PatchMapping("/{id}") + public Worker updateWorker(@PathVariable Long id, + @RequestParam("Name") String Name) { + return workerService.updateReportWorker(id, Name); + } + + @DeleteMapping("/{id}") + public Worker deleteWorker(@PathVariable Long id) { + return workerService.deleteWorker(id); + } +} diff --git a/src/main/java/com/example/demo/speaker/domain/IMethod.java b/src/main/java/com/example/demo/speaker/domain/IMethod.java deleted file mode 100644 index 310c34a..0000000 --- a/src/main/java/com/example/demo/speaker/domain/IMethod.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.example.demo.speaker.domain; - -public interface IMethod { - T Sum(T first, T second); - - T Multiply(T first, Integer second); - - T Minus(T first, Integer second); - - T Div(T first, T second); -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/domain/MethodBoolean.java b/src/main/java/com/example/demo/speaker/domain/MethodBoolean.java deleted file mode 100644 index d1836ef..0000000 --- a/src/main/java/com/example/demo/speaker/domain/MethodBoolean.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.example.demo.speaker.domain; - -import org.springframework.stereotype.Component; - -import java.util.Date; - -@Component(value="boolean") -public class MethodBoolean implements IMethod{ - @Override - public Boolean Sum(Boolean first, Boolean second) { - return first || second; - - } - - @Override - public Boolean Multiply(Boolean first, Integer second) { - return first && second%2==0; - } - - @Override - public Boolean Minus(Boolean first, Integer second) { - return (!first && second%2==0) || (first && !(second%2==0)); - } - @Override - public Boolean Div(Boolean first, Boolean second) { - if (!second) return false; - else if(!first) return false; - else return true; - } -} diff --git a/src/main/java/com/example/demo/speaker/domain/MethodInt.java b/src/main/java/com/example/demo/speaker/domain/MethodInt.java deleted file mode 100644 index 5c5f9be..0000000 --- a/src/main/java/com/example/demo/speaker/domain/MethodInt.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.example.demo.speaker.domain; - -import org.springframework.stereotype.Component; - -@Component(value="int") -public class MethodInt implements IMethod{ - public Integer Sum(Integer first, Integer second) { - return Integer.parseInt(first.toString()) + Integer.parseInt(second.toString()); - } - - public Integer Multiply(Integer first, Integer second) { - return Integer.parseInt(first.toString()) * Integer.parseInt(second.toString()); - } - - public Integer Minus(Integer first, Integer second) { - return Integer.parseInt(first.toString()) - Integer.parseInt(second.toString()); - } - - public Integer Div(Integer first, Integer second) { - int num = Integer.parseInt(second.toString()); - if (num == 0){ - return null; - }else{ - return Integer.parseInt(first.toString()) / num; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/domain/MethodString.java b/src/main/java/com/example/demo/speaker/domain/MethodString.java deleted file mode 100644 index fb4cb55..0000000 --- a/src/main/java/com/example/demo/speaker/domain/MethodString.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.demo.speaker.domain; - -import org.springframework.stereotype.Component; - -@Component(value="string") -public class MethodString implements IMethod{ - @Override - public String Sum(String first, String second) { - return first.concat(second); - } - - @Override - public String Multiply(String first, Integer second) { - if (second != 0){ - String temp = ""; - for (int i = 0; i < second; i++){ - temp = temp.concat(first); - } - return temp; - } - else{ - return first; - } - } - - @Override - public String Minus(String first, Integer second) { - String temp = first; - if(temp.length() >= second){ - return temp.substring(0, first.length() - second); - }else{ - return first; - } - } - - @Override - public String Div(String first, String second) { - if (first.contains(second)){ - return "true"; - }else{ - return "false"; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/model/ReportSort.java b/src/main/java/com/example/demo/speaker/model/ReportSort.java new file mode 100644 index 0000000..0415ce1 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/model/ReportSort.java @@ -0,0 +1,107 @@ +package com.example.demo.speaker.model; + +import jakarta.persistence.*; + +import java.util.Date; +import java.util.Objects; + +@Entity +public class ReportSort { + @jakarta.persistence.Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + public ReportSort(String name, Date createDate, Long IdType, String text) { + this.NameCompany = name; + this.CreateDate = createDate; + this.IdType = IdType; + this.Comment = text; + } + @Column() + private String NameCompany; + private String Comment; + private Date CreateDate; + private Date ApproveDate; + private Long IdType; + private Boolean IsActive; + private Long IdSotr; + + public String GetName() + { + return this.NameCompany; + } + + public Date GetCreateDate() + { + return this.CreateDate; + } + + public Date GetApproveDate() + { + return this.ApproveDate; + } + public Long GetType() + { + return this.IdType; + } + + public Long GetWorker() + { + return this.IdSotr; + } + public void SetWorker(Long id) + { + this.IdSotr = id; + } + public Boolean GetActive() + { + return this.IsActive; + } + public ReportSort() { + + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ReportSort report = (ReportSort) o; + return Objects.equals(id, report.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Report{" + + "id=" + id + + ", NameCompany='" + NameCompany + '\'' + + ", IsActive='" + IsActive + '\'' + + '}'; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + public void SetApproveDate(Date date) + { + this.ApproveDate = date; + } + + public void SetUser(Long id) + { + this.IdSotr = id; + } + + public void SetActive(Boolean active) + { + this.IsActive = active; + } +} diff --git a/src/main/java/com/example/demo/speaker/model/TypeSotr.java b/src/main/java/com/example/demo/speaker/model/TypeSotr.java new file mode 100644 index 0000000..200db60 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/model/TypeSotr.java @@ -0,0 +1,39 @@ +package com.example.demo.speaker.model; + +import jakarta.persistence.*; + +@Entity +public class TypeSotr { + @Column() + private String Type; + @jakarta.persistence.Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + public String GetType() + { + return this.Type; + } + + public TypeSotr() { + + } + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + public TypeSotr(String TypeName) + { + this.Type = TypeName; + } + @Override + public String toString() { + return "Type{" + + "id=" + id + + ", Type='" + Type + '\'' + + '}'; + } +} diff --git a/src/main/java/com/example/demo/speaker/model/Worker.java b/src/main/java/com/example/demo/speaker/model/Worker.java new file mode 100644 index 0000000..c1c610f --- /dev/null +++ b/src/main/java/com/example/demo/speaker/model/Worker.java @@ -0,0 +1,47 @@ +package com.example.demo.speaker.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; + +@Entity +public class Worker { + public Worker() + { + + } + public Worker(String FIO) + { + this.FIO = FIO; + } + @jakarta.persistence.Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + @Column() + private String FIO; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + public String GetFio() + { + return this.FIO; + } + public void SetFio(String fio) + { + this.FIO = fio; + } + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", Type='" + FIO + '\'' + + '}'; + } + +} diff --git a/src/main/java/com/example/demo/speaker/service/MethodService.java b/src/main/java/com/example/demo/speaker/service/MethodService.java deleted file mode 100644 index 821d7f2..0000000 --- a/src/main/java/com/example/demo/speaker/service/MethodService.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.example.demo.speaker.service; - -import com.example.demo.speaker.domain.IMethod; -import com.example.demo.speaker.domain.MethodBoolean; -import com.example.demo.speaker.domain.MethodString; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -@Service -public class MethodService { - private final ApplicationContext applicationContext; - - public MethodService(ApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } - - public String Sum(Object first, Object second, String type) { - final IMethod operation = (IMethod) applicationContext.getBean(type); - if (operation instanceof MethodString){ - if(first instanceof String && second instanceof String) - { - return String.format("%s", operation.Sum(first,second)); - } - return "Uncorrect type"; - }else if (operation instanceof MethodBoolean){ - if(first instanceof Boolean && second instanceof Boolean) - { - return operation.Sum(Boolean.parseBoolean(first.toString()),Boolean.parseBoolean(second.toString())).toString(); - } - else return "Uncorrect type"; - } - else{ - if(first instanceof Integer && second instanceof Integer) - { - return String.format("%s", operation.Sum(Integer.parseInt(first.toString()),Integer.parseInt(second.toString()))); - } - else return "Uncorrect type"; - } - } - - public String Ras(Object first, Object second, String type) { - final IMethod operation = (IMethod) applicationContext.getBean(type); - if (operation instanceof MethodString){ - if(first instanceof String && second instanceof Integer) - { - return String.format("%s", operation.Minus(first,Integer.parseInt(second.toString()))); - } - return "Uncorrect type"; - }else if (operation instanceof MethodBoolean){ - if(first instanceof Boolean && second instanceof Integer) - { - return operation.Minus(Boolean.parseBoolean(first.toString()), Integer.parseInt(second.toString())).toString(); - } - else return "Uncorrect type"; - }else{ - if(first instanceof Integer && second instanceof Integer) - { - return String.format("%s", operation.Minus(Integer.parseInt(first.toString()),Integer.parseInt(second.toString()))); - } - else return "Uncorrect type"; - } - } - - public String Pros(Object first, Object second, String type) { - final IMethod operation = (IMethod) applicationContext.getBean(type); - if (operation instanceof MethodString){ - if(first instanceof String && second instanceof Integer) - { - return String.format("%s", operation.Multiply(first,Integer.parseInt(second.toString()))); - } - return "Uncorrect type"; - }else if (operation instanceof MethodBoolean){ - if(first instanceof Boolean && second instanceof Integer) - { - return operation.Multiply(Boolean.parseBoolean(first.toString()), Integer.parseInt(second.toString())).toString(); - } - else return "Uncorrect type"; - }else{ - if(first instanceof Integer && second instanceof Integer) - { - return String.format("%s", operation.Multiply(Integer.parseInt(first.toString()),Integer.parseInt(second.toString()))); - } - else return "Uncorrect type"; - } - } - - public String Del(Object first, Object second, String type) { - final IMethod operation = (IMethod) applicationContext.getBean(type); - if (operation instanceof MethodString){ - return String.format("%s", operation.Div(first,second)); - }else if (operation instanceof MethodBoolean){ - if(first.toString()!="true" && second.toString() != "false") - { - throw new ClassCastException("Uncorrect type"); - } - return String.format("%s", operation.Div(Boolean.parseBoolean(first.toString()), Boolean.parseBoolean(second.toString())).toString()); - }else { - return String.format("%s", operation.Div(Integer.parseInt(first.toString()), Integer.parseInt(second.toString()))); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/speaker/service/ReportSotrService.java b/src/main/java/com/example/demo/speaker/service/ReportSotrService.java new file mode 100644 index 0000000..f55ec40 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/service/ReportSotrService.java @@ -0,0 +1,69 @@ +package com.example.demo.speaker.service; + +import com.example.demo.speaker.model.ReportSort; +import com.example.demo.speaker.model.Worker; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityNotFoundException; +import jakarta.persistence.PersistenceContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import javax.swing.text.html.HTMLDocument; +import java.util.Date; +import java.util.List; +@Service +public class ReportSotrService { + @PersistenceContext + private EntityManager em; + + @Transactional + public ReportSort addReport(String name, Date createDate, Long IdType, String text) { + if (!StringUtils.hasText(name) || ! StringUtils.hasText(createDate.toString()) + || ! StringUtils.hasText(IdType.toString())) { + throw new IllegalArgumentException("Some field of report is null or empty"); + } + final ReportSort report = new ReportSort(name, createDate, IdType, text); + em.persist(report); + return report; + } + + @Transactional(readOnly = true) + public ReportSort findReport(Long id) { + final ReportSort report = em.find(ReportSort.class, id); + if (report == null) { + throw new EntityNotFoundException(String.format("Report with id [%s] is not found", id)); + } + return report; + } + + @Transactional(readOnly = true) + public List findAllReports() { + return em.createQuery("select s from ReportSort s", ReportSort.class) + .getResultList(); + } + + @Transactional + public ReportSort updateReport(Long id, Date approveDate, Boolean isActive, Long IdWorker) { + if (!StringUtils.hasText(approveDate.toString()) || !StringUtils.hasText(isActive.toString())) { + throw new IllegalArgumentException("Some field is null or empty"); + } + final ReportSort currentReport = findReport(id); + currentReport.SetApproveDate(approveDate); + currentReport.SetActive(isActive); + currentReport.SetUser(IdWorker); + return em.merge(currentReport); + } + + @Transactional + public ReportSort deleteReport(Long id) { + final ReportSort currentReport = findReport(id); + em.remove(currentReport); + return currentReport; + } + + @Transactional + public void deleteAllReports() { + em.createQuery("delete from ReportSort").executeUpdate(); + } +} diff --git a/src/main/java/com/example/demo/speaker/service/TypeSortService.java b/src/main/java/com/example/demo/speaker/service/TypeSortService.java new file mode 100644 index 0000000..f8e63f2 --- /dev/null +++ b/src/main/java/com/example/demo/speaker/service/TypeSortService.java @@ -0,0 +1,55 @@ +package com.example.demo.speaker.service; + +import com.example.demo.speaker.model.ReportSort; +import com.example.demo.speaker.model.TypeSotr; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityNotFoundException; +import jakarta.persistence.PersistenceContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; +@Service +public class TypeSortService { + @PersistenceContext + private EntityManager em; + + @Transactional + public TypeSotr addType(String name) { + if (!StringUtils.hasText(name)) { + throw new IllegalArgumentException("Name of Type is null or empty"); + } + final TypeSotr type = new TypeSotr(name); + em.persist(type); + return type; + } + + @Transactional(readOnly = true) + public TypeSotr findType(Long id) { + final TypeSotr type = em.find(TypeSotr.class, id); + if (type == null) { + throw new EntityNotFoundException(String.format("Type with id [%s] is not found", id)); + } + return type; + } + + @Transactional(readOnly = true) + public List findAllTypes() { + return em.createQuery("select s from TypeSotr s", TypeSotr.class) + .getResultList(); + } + + @Transactional + public TypeSotr deleteType(Long id) { + final TypeSotr currentType = findType(id); + em.remove(currentType); + return currentType; + } + + @Transactional + public void deleteAllTypes() { + em.createQuery("delete from TypeSotr").executeUpdate(); + } +} diff --git a/src/main/java/com/example/demo/speaker/service/WorkerService.java b/src/main/java/com/example/demo/speaker/service/WorkerService.java new file mode 100644 index 0000000..3a9771e --- /dev/null +++ b/src/main/java/com/example/demo/speaker/service/WorkerService.java @@ -0,0 +1,65 @@ +package com.example.demo.speaker.service; + +import com.example.demo.speaker.model.ReportSort; +import com.example.demo.speaker.model.Worker; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityNotFoundException; +import jakarta.persistence.PersistenceContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; +@Service +public class WorkerService { + @PersistenceContext + private EntityManager em; + + @Transactional + public Worker addWorker(String name) { + if (!StringUtils.hasText(name) ) { + throw new IllegalArgumentException("Name of worker is null or empty"); + } + final Worker worker = new Worker(name); + em.persist(worker); + return worker; + } + + @Transactional(readOnly = true) + public Worker findWorker(Long id) { + final Worker worker = em.find(Worker.class, id); + if (worker == null) { + throw new EntityNotFoundException(String.format("Report with id [%s] is not found", id)); + } + return worker; + } + + @Transactional(readOnly = true) + public List findAllWorkers() { + return em.createQuery("select s from Worker s", Worker.class) + .getResultList(); + } + + @Transactional + public Worker updateReportWorker(Long id, String Name) { + if (!StringUtils.hasText(Name.toString())) { + throw new IllegalArgumentException("Name is null or empty"); + } + final Worker currentWorker = findWorker(id); + currentWorker.SetFio(Name); + return em.merge(currentWorker); + } + + @Transactional + public Worker deleteWorker(Long id) { + final Worker currentWorker = findWorker(id); + em.remove(currentWorker); + return currentWorker; + } + + @Transactional + public void deleteAllWorkers() { + em.createQuery("delete from Worker").executeUpdate(); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..da7b0b1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,11 @@ - +spring.main.banner-mode=off +#server.port=8080 +spring.datasource.url=jdbc:h2:file:./data +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=password +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=update +spring.h2.console.enabled=true +spring.h2.console.settings.trace=false +spring.h2.console.settings.web-allow-others=false diff --git a/src/test/java/com/example/demo/DemoApplicationTests.java b/src/test/java/com/example/demo/DemoApplicationTests.java index 3afd397..f760530 100644 --- a/src/test/java/com/example/demo/DemoApplicationTests.java +++ b/src/test/java/com/example/demo/DemoApplicationTests.java @@ -1,6 +1,5 @@ package com.example.demo; -import com.example.demo.speaker.service.MethodService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -9,106 +8,6 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; @SpringBootTest class DemoApplicationTests { - @Autowired - private MethodService methodService; - @Test - void testIntType() { - String res = methodService.Sum(2, "2", "int"); - Assertions.assertEquals("Uncorrect type", res); - } - @Test - void testStringType() { - String res = methodService.Sum(2, 2, "string"); - Assertions.assertEquals("Uncorrect type", res); - } - @Test - void testBooleanType() { - String res = methodService.Sum("3", "2", "boolean"); - Assertions.assertEquals("Uncorrect type", res); - } - - @Test - void testIntSum() { - Integer res = Integer.valueOf(methodService.Sum(2, 2, "int")); - Assertions.assertEquals(4, res); - } - @Test - void testStringSum() { - String res = methodService.Sum("hello, ", "2", "string"); - Assertions.assertEquals("hello, 2", res); - } - @Test - void testBooleanSum() { - String res = methodService.Sum(true, true, "boolean"); - Assertions.assertEquals("true", res); - } - - @Test - void testIntDiff() { - Integer res = Integer.valueOf(methodService.Ras(4, 2, "int")); - Assertions.assertEquals(2, res); - } - @Test - void testStringDiff() { - String res = methodService.Ras("hello2", 2, "string"); - Assertions.assertEquals("hell", res); - } - @Test - void testBooleanDiff() { - String res = methodService.Ras(true, 2, "boolean"); - Assertions.assertEquals("false", res); - } - - @Test - void testIntMultiple() { - Integer res = Integer.valueOf(methodService.Pros(2, 3, "int")); - Assertions.assertEquals(6, res); - } - @Test - void testStringMultiple() { - String res = methodService.Pros("test", 2, "string"); - Assertions.assertEquals("testtest", res); - } - @Test - void testBooleanMultiple() { - String res = methodService.Pros(true, 2, "boolean"); - Assertions.assertEquals("true", res); - } - - @Test - void testIntDivide() { - Integer res = Integer.valueOf(methodService.Del(10, 2, "int")); - Assertions.assertEquals(5, res); - } - @Test - void testStringDivide() { - String res = methodService.Del("test", "2", "string"); - Assertions.assertEquals("false", res); - } - @Test - void testBooleanDivide() { - String res = methodService.Del(true, 2, "boolean"); - Assertions.assertEquals("false", res); - } - - @Test - void testErrorErrorWired() { - Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> methodService.Sum(1, 2, "date")); - } - - @Test - void testErrorTypeString() { - Assertions.assertThrows(ClassCastException.class, () -> methodService.Del(1, 2, "string")); - } - - @Test - void testErrorTypeBoolean() { - Assertions.assertThrows(ClassCastException.class, () -> methodService.Del("jjj15", 3, "boolean")); - } - - @Test - void testErrorTypeInt() { - Assertions.assertThrows(NumberFormatException.class, () -> methodService.Del(true, 2, "int")); - } + } diff --git a/src/test/java/com/example/demo/JPATests.java b/src/test/java/com/example/demo/JPATests.java new file mode 100644 index 0000000..3d05337 --- /dev/null +++ b/src/test/java/com/example/demo/JPATests.java @@ -0,0 +1,74 @@ +package com.example.demo; + + +import com.example.demo.speaker.model.ReportSort; +import com.example.demo.speaker.service.ReportSotrService; +import jakarta.persistence.EntityNotFoundException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +public class JPATests { + private static final Logger log = LoggerFactory.getLogger(JPATests.class); + private static final SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); + + @Autowired + private ReportSotrService reportService; + + @Test + void testReportCreate() throws ParseException { + + reportService.deleteAllReports(); + final ReportSort report = reportService.addReport("Mars", formatter.parse("2018-05-05"), + 0L, "Хотим сотрудничать"); + log.info(report.toString()); + Assertions.assertNotNull(report.getId()); + } + + @Test + void testReportRead() throws ParseException { + reportService.deleteAllReports(); + final ReportSort report = reportService.addReport("Mars", formatter.parse("2018-05-05"), + 0L, "Хотим сотрудничать"); + log.info(report.toString()); + final ReportSort findStudent = reportService.findReport(report.getId()); + log.info(findStudent.toString()); + Assertions.assertEquals(report, findStudent); + } + + @Test + void testReportsReadNotFound() { + reportService.deleteAllReports(); + Assertions.assertThrows(EntityNotFoundException.class, () -> reportService.findReport(-1L)); + } + + @Test + void testReportsReadAll() throws ParseException { + reportService.deleteAllReports(); + reportService.addReport("Mars", formatter.parse("2018-05-05"), + 0L, "Хотим сотрудничать"); + reportService.addReport("AIST", formatter.parse("2019-05-05"), + 1L, "Хотим сотрудничать"); + final List reports = reportService.findAllReports(); + log.info(reports.toString()); + Assertions.assertEquals(reports.size(), 2); + } + + @Test + void testStudentReadAllEmpty() { + reportService.deleteAllReports(); + final List reports = reportService.findAllReports(); + log.info(reports.toString()); + Assertions.assertEquals(reports.size(), 0); + } +}