Вроде работает
This commit is contained in:
parent
ba48211be0
commit
ca7afdf94e
@ -15,7 +15,10 @@ repositories {
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||
// implementation 'org.postgresql:postgresql:'
|
||||
implementation 'com.h2database:h2:2.1.210'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
||||
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.5'
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
}
|
||||
|
||||
|
@ -2,15 +2,11 @@ package com.example.demo;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@SpringBootApplication
|
||||
|
||||
public class DemoApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DemoApplication.class, args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
package com.example.demo.method.controller;
|
||||
|
||||
import com.example.demo.method.service.MethodService;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
public class MethodController {
|
||||
private final MethodService methodService;
|
||||
|
||||
public MethodController(MethodService methodService) {
|
||||
this.methodService = methodService;
|
||||
}
|
||||
|
||||
@GetMapping("/summa")
|
||||
public String qw(@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("/min")
|
||||
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.Min(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.Mult(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.Div(first,second,type);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.example.demo.method.domain;
|
||||
|
||||
public interface IMethod<T> {
|
||||
T Sum(T first, T second);
|
||||
|
||||
T Mult(T first, T second);
|
||||
|
||||
T Min(T first, T second);
|
||||
|
||||
T Div(T first, T second);
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package com.example.demo.method.domain;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component(value="int")
|
||||
public class MethodInt implements IMethod<Integer>{
|
||||
public Integer Sum(Integer first, Integer second) {
|
||||
return first + second;
|
||||
}
|
||||
|
||||
public Integer Mult(Integer first, Integer second) {
|
||||
return first * second;
|
||||
}
|
||||
|
||||
public Integer Min(Integer first, Integer second) {
|
||||
return first - second;
|
||||
}
|
||||
|
||||
public Integer Div(Integer first, Integer second) {
|
||||
if (second == 0) second = 1;
|
||||
return first/second;
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package com.example.demo.method.domain;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component(value="str")
|
||||
public class MethodString implements IMethod<String>{
|
||||
@Override
|
||||
public String Sum(String first, String second) {
|
||||
return first + "+" + second;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String Mult(String first, String second) {
|
||||
return first + "*" + second;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String Min(String first, String second) {
|
||||
return first + "-" + second;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String Div(String first, String second) {
|
||||
return first + "/" + second;
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package com.example.demo.method.service;
|
||||
|
||||
import com.example.demo.method.domain.IMethod;
|
||||
import com.example.demo.method.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)
|
||||
return String.format("%s", operation.Sum(first,second));
|
||||
else
|
||||
|
||||
return String.format("%s", operation.Sum(Integer.parseInt(first.toString()),Integer.parseInt(second.toString())));
|
||||
}
|
||||
|
||||
public String Min(Object first, Object second, String type) {
|
||||
final IMethod operation = (IMethod) applicationContext.getBean(type);
|
||||
if (operation instanceof MethodString)
|
||||
return String.format("%s", operation.Min(first,second));
|
||||
else
|
||||
return String.format("%s", operation.Min(Integer.parseInt(first.toString()),Integer.parseInt(second.toString())));
|
||||
}
|
||||
|
||||
public String Mult(Object first, Object second, String type) {
|
||||
final IMethod operation = (IMethod) applicationContext.getBean(type);
|
||||
if (operation instanceof MethodString)
|
||||
return String.format("%s", operation.Mult(first,second));
|
||||
else
|
||||
return String.format("%s", operation.Mult(Integer.parseInt(first.toString()),Integer.parseInt(second.toString())));
|
||||
}
|
||||
|
||||
public String Div(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
|
||||
return String.format("%s", operation.Div(Integer.parseInt(first.toString()),Integer.parseInt(second.toString())));
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package com.example.demo.speaker.configuration;
|
||||
|
||||
import com.example.demo.speaker.domain.Speaker;
|
||||
import com.example.demo.speaker.domain.SpeakerEng;
|
||||
import com.example.demo.speaker.domain.SpeakerRus;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class SpeakerConfiguration {
|
||||
|
||||
@Bean(value = "ru")
|
||||
public SpeakerRus createRusSpeaker(){
|
||||
return new SpeakerRus();
|
||||
}
|
||||
|
||||
@Bean(value = "en")
|
||||
public Speaker createEngSpeaker(){
|
||||
return new SpeakerEng();
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package com.example.demo.speaker.controller;
|
||||
|
||||
import com.example.demo.speaker.service.SpeakerService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class SpeakerController {
|
||||
private final SpeakerService speakerService;
|
||||
public SpeakerController(SpeakerService speakerService){
|
||||
this.speakerService = speakerService;
|
||||
}
|
||||
|
||||
@GetMapping("/hello")
|
||||
public String hello(@RequestParam(defaultValue = "мир") String name,
|
||||
@RequestParam(defaultValue = "ru") String lang){
|
||||
return speakerService.say(name, lang);
|
||||
}
|
||||
|
||||
@GetMapping("/sum")
|
||||
public @ResponseBody Integer sum(@RequestParam(required = false, defaultValue = "0") int val1,
|
||||
@RequestParam(required = false, defaultValue = "0") int val2){
|
||||
return val1 + val2;
|
||||
}
|
||||
|
||||
@GetMapping("/toLowerCase")
|
||||
public @ResponseBody String toLowerCase(@RequestParam(defaultValue = "TO LOW CASE") String value) {
|
||||
return value.toLowerCase();
|
||||
}
|
||||
|
||||
@GetMapping("/minus")
|
||||
public @ResponseBody Integer minus(@RequestParam(required = false, defaultValue = "0") int val1,
|
||||
@RequestParam(required = false, defaultValue = "0") int val2){
|
||||
return val1 - val2;
|
||||
}
|
||||
|
||||
@GetMapping("/join")
|
||||
public @ResponseBody String join(@RequestParam(required = false, defaultValue = "0") String str1,
|
||||
@RequestParam(required = false, defaultValue = "0") String str2){
|
||||
return String.join("", str1, str2);
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package com.example.demo.speaker.domain;
|
||||
|
||||
public interface Speaker {
|
||||
String say();
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.example.demo.speaker.domain;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component(value = "de")
|
||||
public class SpeakerDeu implements Speaker{
|
||||
@Override
|
||||
public String say(){
|
||||
return "Hallo";
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package com.example.demo.speaker.domain;
|
||||
|
||||
public class SpeakerEng implements Speaker{
|
||||
@Override
|
||||
public String say() {
|
||||
return "Hello";
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.example.demo.speaker.domain;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
public class SpeakerRus implements Speaker{
|
||||
@Override
|
||||
public String say(){
|
||||
return "Привет";
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.example.demo.speaker.service;
|
||||
|
||||
import com.example.demo.speaker.domain.Speaker;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class SpeakerService {
|
||||
private final ApplicationContext applicationContext;
|
||||
|
||||
public SpeakerService(ApplicationContext applicationContext){
|
||||
this.applicationContext = applicationContext;
|
||||
}
|
||||
|
||||
public String say(String name, String lang){
|
||||
final Speaker speaker = (Speaker) applicationContext.getBean(lang);
|
||||
return String.format("%s %s!", speaker.say(), name);
|
||||
}
|
||||
}
|
@ -28,7 +28,7 @@ public class ProductController {
|
||||
}
|
||||
|
||||
@PostMapping("/")
|
||||
public Product createStudent(@RequestParam() String name,
|
||||
public Product createProduct(@RequestParam() String name,
|
||||
@RequestParam() float cost) {
|
||||
return productService.addProduct(name, cost);
|
||||
}
|
||||
|
@ -0,0 +1,43 @@
|
||||
package com.example.demo.supply.controllers;
|
||||
|
||||
import com.example.demo.supply.models.Supplier;
|
||||
import com.example.demo.supply.services.SupplierService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SupplierController {
|
||||
private final SupplierService supplierService;
|
||||
|
||||
public SupplierController(SupplierService supplierService) {
|
||||
this.supplierService = supplierService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Supplier getSupplier(@PathVariable Long id) {
|
||||
return supplierService.findSupplier(id);
|
||||
}
|
||||
|
||||
@GetMapping("/")
|
||||
public List<Supplier> getSupplier() {
|
||||
return supplierService.findAllSuppliers();
|
||||
}
|
||||
|
||||
@PostMapping("/")
|
||||
public Supplier createSupplier(@RequestParam() String name,
|
||||
@RequestParam() int license) {
|
||||
return supplierService.addSupplier(name, license);
|
||||
}
|
||||
|
||||
@PatchMapping("/{id}")
|
||||
public Supplier updateSupplier(@PathVariable Long id,
|
||||
@RequestParam() String name,
|
||||
@RequestParam() int license) {
|
||||
return supplierService.updateSupplier(id, name, license);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public Supplier deleteSupplier(@PathVariable Long id) {
|
||||
return supplierService.deleteSupplier(id);
|
||||
}
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package com.example.demo.supply.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
public class Maker {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String name;
|
||||
@Column(nullable = false)
|
||||
private String director;
|
||||
|
||||
private List<Product> products;
|
||||
|
||||
public Maker(){}
|
||||
|
||||
public Maker( String name, String director) {
|
||||
this.name = name;
|
||||
this.director = director;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDirector() {
|
||||
return director;
|
||||
}
|
||||
|
||||
public void setDirector(String director) {
|
||||
this.director = director;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Maker maker = (Maker) o;
|
||||
return Objects.equals(id, maker.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Product{" +
|
||||
"id=" + id +
|
||||
", name='" + name + '\'' +
|
||||
", director='" + director + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package com.example.demo.supply.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
public class Orders {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@Column
|
||||
@Temporal(TemporalType.DATE)
|
||||
private Date dateOfOrder;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "supplier_fk")
|
||||
private Supplier supplier;
|
||||
@ManyToMany(fetch = FetchType.EAGER, cascade = {
|
||||
CascadeType.PERSIST,
|
||||
CascadeType.MERGE
|
||||
})
|
||||
@JoinTable(joinColumns = @JoinColumn(name = "order_fk"),
|
||||
inverseJoinColumns = @JoinColumn(name = "product_fk"))
|
||||
private List<Product> products;
|
||||
|
||||
public Long getId(){
|
||||
return id;
|
||||
}
|
||||
public Orders(Date dateOfOrder) {
|
||||
this.dateOfOrder = dateOfOrder;
|
||||
products = new ArrayList<>();
|
||||
}
|
||||
|
||||
public Orders() {
|
||||
}
|
||||
|
||||
public Date getDateOfOrder() {
|
||||
return dateOfOrder;
|
||||
}
|
||||
public void setDateOfOrder(Date dateOfOrder) {
|
||||
this.dateOfOrder = dateOfOrder;
|
||||
}
|
||||
public Supplier getSupplier() {
|
||||
return supplier;
|
||||
}
|
||||
public void setSupplier(Supplier supplier) {
|
||||
this.supplier = supplier;
|
||||
supplier.getOrders().add(this);
|
||||
}
|
||||
public List<Product> getProducts() {
|
||||
return products;
|
||||
}
|
||||
public void setProducts(List<Product> products) {
|
||||
this.products = products;
|
||||
}
|
||||
public void addProduct(Product product){
|
||||
if(!products.contains(product)){
|
||||
products.add(product);
|
||||
product.getOrders().add(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Orders order = (Orders) o;
|
||||
if(!Objects.equals(id, order.id)) return false;
|
||||
|
||||
if(!Objects.equals(dateOfOrder.toString(), order.dateOfOrder.toString())) return false;
|
||||
if(!Objects.equals(supplier, order.supplier)) return false;
|
||||
// if(!Objects.equals(products.size(), order.products.size())) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Product{" +
|
||||
"id=" + id +
|
||||
", date='" + dateOfOrder + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
package com.example.demo.supply.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.hibernate.annotations.AnyDiscriminatorValue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@ -14,35 +15,42 @@ public class Product {
|
||||
@Column(nullable = false)
|
||||
private String name;
|
||||
@Column(nullable = false)
|
||||
private float cost;
|
||||
private double cost;
|
||||
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "products")
|
||||
private List<Orders> orders;
|
||||
|
||||
public Product(){}
|
||||
|
||||
public Product(String name, float cost){
|
||||
public Product(String name, double cost){
|
||||
this.name = name;
|
||||
this.cost = cost;
|
||||
orders = new ArrayList<>();
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public float getCost() {
|
||||
public double getCost() {
|
||||
return cost;
|
||||
}
|
||||
|
||||
public void setCost(float cost) {
|
||||
this.cost = cost;
|
||||
}
|
||||
|
||||
public List<Orders> getOrders() {
|
||||
return orders;
|
||||
}
|
||||
|
||||
public void setOrders(List<Orders> orders) {
|
||||
this.orders = orders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
@ -2,6 +2,8 @@ package com.example.demo.supply.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@ -15,13 +17,18 @@ public class Supplier {
|
||||
@Column(nullable = false)
|
||||
private int license;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "supplier", cascade = CascadeType.REMOVE)
|
||||
private List<Orders> orders;
|
||||
|
||||
public Supplier(){}
|
||||
|
||||
public Supplier( String name, int license) {
|
||||
this.name = name;
|
||||
this.license = license;
|
||||
orders = new ArrayList<>();
|
||||
}
|
||||
|
||||
public Long getId() { return id; }
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
@ -38,6 +45,13 @@ public class Supplier {
|
||||
this.license = license;
|
||||
}
|
||||
|
||||
public List<Orders> getOrders() {
|
||||
return orders;
|
||||
}
|
||||
|
||||
public void setOrders(List<Orders> orders) {
|
||||
this.orders = orders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
|
@ -0,0 +1,77 @@
|
||||
package com.example.demo.supply.services;
|
||||
|
||||
import com.example.demo.supply.models.Orders;
|
||||
import com.example.demo.supply.models.Product;
|
||||
import com.example.demo.supply.models.Supplier;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class OrderService {
|
||||
@PersistenceContext
|
||||
private EntityManager em;
|
||||
|
||||
@Transactional
|
||||
public Orders addOrder(Supplier supplier){
|
||||
if (supplier == null || em.find(Supplier.class, supplier.getId()) == null) {
|
||||
throw new IllegalArgumentException("invalid supplier");
|
||||
}
|
||||
final Orders order = new Orders(new Date(System.currentTimeMillis()));
|
||||
order.setSupplier(supplier);
|
||||
em.persist(order);
|
||||
em.merge(supplier);
|
||||
return order;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Orders addProduct(Long id, Product product) {
|
||||
if (product == null) {
|
||||
throw new IllegalArgumentException("empty product");
|
||||
}
|
||||
final Orders currentOrder = findOrder(id);
|
||||
currentOrder.addProduct(product);
|
||||
product.getOrders().add(currentOrder);
|
||||
em.merge(product);
|
||||
return em.merge(currentOrder);
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Orders findOrder(Long id) {
|
||||
final Orders order = em.find(Orders.class, id);
|
||||
|
||||
if (order == null) {
|
||||
throw new EntityNotFoundException(String.format("Order with id [%s] is not found", id));
|
||||
}
|
||||
return order;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<Orders> findAllOrders() {
|
||||
return em.createQuery("select o from Orders o", Orders.class).getResultList();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Orders updateOrder(Long id, Date date) {
|
||||
final Orders currentOrder = findOrder(id);
|
||||
currentOrder.setDateOfOrder(date);
|
||||
return em.merge(currentOrder);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Orders deleteOrder(Long id) {
|
||||
final Orders currentOrder = findOrder(id);
|
||||
em.remove(currentOrder);
|
||||
return currentOrder;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAll(){
|
||||
em.createQuery("delete from Orders ").executeUpdate();
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@ public class ProductService {
|
||||
private EntityManager em;
|
||||
|
||||
@Transactional
|
||||
public Product addProduct(String name, float cost){
|
||||
public Product addProduct(String name, double cost){
|
||||
if(!StringUtils.hasText(name) || cost <= 0)
|
||||
throw new IllegalArgumentException("Invalid name and/or cost");
|
||||
|
||||
@ -56,4 +56,9 @@ public class ProductService {
|
||||
em.remove(currentProduct);
|
||||
return currentProduct;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAll(){
|
||||
em.createQuery("delete from Product").executeUpdate();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,64 @@
|
||||
package com.example.demo.supply.services;
|
||||
|
||||
import com.example.demo.supply.models.Supplier;
|
||||
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.List;
|
||||
|
||||
@Service
|
||||
public class SupplierService {
|
||||
@PersistenceContext
|
||||
private EntityManager em;
|
||||
|
||||
@Transactional
|
||||
public Supplier addSupplier(String name, int license){
|
||||
if(!StringUtils.hasText(name) || license < 0)
|
||||
throw new IllegalArgumentException("Invalid name and/or license");
|
||||
|
||||
final Supplier supplier = new Supplier(name, license);
|
||||
em.persist(supplier);
|
||||
return supplier;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Supplier findSupplier(Long id) {
|
||||
final Supplier supplier = em.find(Supplier.class, id);
|
||||
if (supplier == null) {
|
||||
throw new EntityNotFoundException(String.format("Supplier with id [%s] is not found", id));
|
||||
}
|
||||
return supplier;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<Supplier> findAllSuppliers() {
|
||||
return em.createQuery("select s from Supplier s", Supplier.class).getResultList();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Supplier updateSupplier(Long id, String name, int license) {
|
||||
if (!StringUtils.hasText(name) || license < 0)
|
||||
throw new IllegalArgumentException("Invalid name and/or license");
|
||||
|
||||
final Supplier currentSupplier = findSupplier(id);
|
||||
currentSupplier.setName(name);
|
||||
currentSupplier.setLicense(license);
|
||||
return em.merge(currentSupplier);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Supplier deleteSupplier(Long id) {
|
||||
final Supplier currentSupplier = findSupplier(id);
|
||||
em.remove(currentSupplier);
|
||||
return currentSupplier;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAll(){
|
||||
em.createQuery("delete from Supplier ").executeUpdate();
|
||||
}
|
||||
}
|
@ -1 +1,9 @@
|
||||
|
||||
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
|
@ -1,71 +0,0 @@
|
||||
package com.example.demo;
|
||||
|
||||
import com.example.demo.method.service.MethodService;
|
||||
import com.example.demo.speaker.service.SpeakerService;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class DemoApplicationTests {
|
||||
@Autowired
|
||||
MethodService methodService;
|
||||
@Test
|
||||
void testSumInt() {
|
||||
final String res = methodService.Sum(12, 12, "int");
|
||||
Assertions.assertEquals(24, Integer.parseInt(res));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMinInt() {
|
||||
final String res = methodService.Min(12, 12, "int");
|
||||
Assertions.assertEquals(0, Integer.parseInt(res));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMultInt() {
|
||||
final String res = methodService.Mult(2, 3, "int");
|
||||
Assertions.assertEquals(6, Integer.parseInt(res));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDivInt() {
|
||||
final String res = methodService.Div(12, 6, "int");
|
||||
Assertions.assertEquals(2, Integer.parseInt(res));
|
||||
}
|
||||
@Test
|
||||
void testSumStr() {
|
||||
final String res = methodService.Sum("12", "12", "str");
|
||||
Assertions.assertEquals("12+12", res);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMinStr() {
|
||||
final String res = methodService.Min("12", "12", "str");
|
||||
Assertions.assertEquals("12-12", res);
|
||||
}
|
||||
@Test
|
||||
void testMultStr() {
|
||||
final String res = methodService.Mult("12", "12", "str");
|
||||
Assertions.assertEquals("12*12", res);
|
||||
}
|
||||
@Test
|
||||
void testDivStr() {
|
||||
final String res = methodService.Div("12", "12", "str");
|
||||
Assertions.assertEquals("12/12", res);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNoSuchBean() {
|
||||
Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> methodService.Min("12", "12", "string"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNumFormatError() {
|
||||
Assertions.assertThrows(NumberFormatException.class, () -> methodService.Min("12dd", 12, "int"));
|
||||
}
|
||||
|
||||
|
||||
}
|
44
demo/src/test/java/com/example/demo/Tests.java
Normal file
44
demo/src/test/java/com/example/demo/Tests.java
Normal file
@ -0,0 +1,44 @@
|
||||
package com.example.demo;
|
||||
|
||||
import com.example.demo.supply.models.Orders;
|
||||
import com.example.demo.supply.models.Product;
|
||||
import com.example.demo.supply.models.Supplier;
|
||||
import com.example.demo.supply.services.OrderService;
|
||||
import com.example.demo.supply.services.ProductService;
|
||||
import com.example.demo.supply.services.SupplierService;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest
|
||||
public class Tests {
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
@Autowired
|
||||
private SupplierService supplierService;
|
||||
|
||||
@Test
|
||||
public void testOrder(){
|
||||
productService.deleteAll();
|
||||
orderService.deleteAll();
|
||||
supplierService.deleteAll();
|
||||
|
||||
final Product product1 = productService.addProduct("Huawei Band 3", 2000.13);
|
||||
final Product product2 = productService.addProduct("Samsung A2", 22000.56);
|
||||
|
||||
final Supplier supplier = supplierService.addSupplier("SuperSupplier", 325453);
|
||||
Orders order = orderService.addOrder(supplierService.findSupplier(supplier.getId()));
|
||||
order = orderService.addProduct(order.getId(), product1);
|
||||
order = orderService.addProduct(order.getId(), product2);
|
||||
// List<Product> products1 = order.getProducts();
|
||||
|
||||
final Orders order2 = orderService.findOrder(order.getId());
|
||||
// List<Product> products2 = order2.getProducts();
|
||||
Assertions.assertEquals(order, order2);
|
||||
}
|
||||
}
|
56
demo/src/test/java/com/example/demo/TestsProduct.java
Normal file
56
demo/src/test/java/com/example/demo/TestsProduct.java
Normal file
@ -0,0 +1,56 @@
|
||||
package com.example.demo;
|
||||
|
||||
import com.example.demo.supply.models.Product;
|
||||
|
||||
import com.example.demo.supply.services.ProductService;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest
|
||||
public class TestsProduct {
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
|
||||
|
||||
@Test
|
||||
void testProduct(){
|
||||
productService.deleteAll();
|
||||
final Product product = productService.addProduct("Huawei Band 3", 2000.13);
|
||||
Assertions.assertNotNull(product.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProductRead(){
|
||||
productService.deleteAll();
|
||||
final Product product = productService.addProduct("Huawei Band 3", 2000.13);
|
||||
final Product findProduct = productService.findProduct(product.getId());
|
||||
Assertions.assertEquals(product, findProduct);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProductReadNotFound(){
|
||||
productService.deleteAll();
|
||||
Assertions.assertThrows(EntityNotFoundException.class, () -> productService.findProduct(-1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProductReadAll(){
|
||||
productService.deleteAll();
|
||||
productService.addProduct("Samsung A3", 22000.4);
|
||||
productService.addProduct("Huawei Band 3", 2000.13);
|
||||
final List<Product> products = productService.findAllProducts();
|
||||
Assertions.assertEquals(products.size(), 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProductReadAllEmpty(){
|
||||
productService.deleteAll();
|
||||
final List<Product> products = productService.findAllProducts();
|
||||
Assertions.assertEquals(products.size(), 0);
|
||||
}
|
||||
}
|
54
demo/src/test/java/com/example/demo/TestsSupplier.java
Normal file
54
demo/src/test/java/com/example/demo/TestsSupplier.java
Normal file
@ -0,0 +1,54 @@
|
||||
package com.example.demo;
|
||||
|
||||
import com.example.demo.supply.models.Supplier;
|
||||
import com.example.demo.supply.services.SupplierService;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest
|
||||
public class TestsSupplier {
|
||||
@Autowired
|
||||
private SupplierService supplierService;
|
||||
|
||||
@Test
|
||||
void testSupplier(){
|
||||
supplierService.deleteAll();
|
||||
final Supplier supplier = supplierService.addSupplier("SuperSup", 359342);
|
||||
Assertions.assertNotNull(supplier.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupplierRead(){
|
||||
supplierService.deleteAll();
|
||||
final Supplier supplier = supplierService.addSupplier("Huawei", 4357695);
|
||||
final Supplier findSupplier = supplierService.findSupplier(supplier.getId());
|
||||
Assertions.assertEquals(supplier, findSupplier);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupplierReadNotFound(){
|
||||
supplierService.deleteAll();
|
||||
Assertions.assertThrows(EntityNotFoundException.class, () -> supplierService.findSupplier(-1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupplierReadAll(){
|
||||
supplierService.deleteAll();
|
||||
supplierService.addSupplier("Samsung", 3485456);
|
||||
supplierService.addSupplier("Huawei", 45736964);
|
||||
final List<Supplier> suppliers = supplierService.findAllSuppliers();
|
||||
Assertions.assertEquals(suppliers.size(), 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupplierReadAllEmpty(){
|
||||
supplierService.deleteAll();
|
||||
final List<Supplier> suppliers = supplierService.findAllSuppliers();
|
||||
Assertions.assertEquals(suppliers.size(), 0);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user