diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/model/Component.java b/src/main/java/ru/ulstu/is/sbapp/repair/model/Component.java index 23f285e..462cbbc 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/model/Component.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/model/Component.java @@ -18,9 +18,8 @@ public class Component { @Column(name = "amount") private Integer amount; - @OneToMany(mappedBy = "component", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JsonIgnore - private List favors; + @ManyToMany(mappedBy = "component",fetch = FetchType.EAGER) + private List favors; public Component() { } @@ -50,26 +49,18 @@ public class Component { this.amount = amount; } - public List getFavors() { + public List getFavors() { return favors; } - public void setFavors(List favors) { - this.favors = favors; - } + public void setFavors(Favor favors) { - public void addFavor(FavorComponents favorComponents) { - if (favors == null) { - favors = new ArrayList<>(); + if(!favors.getComponents().contains(this)){ + favors.getComponents().add(this); } - if (!favors.contains(favorComponents)) - this.favors.add(favorComponents); } - public void removeFavor(FavorComponents favorComponents) { - if (favors.contains(favorComponents)) - this.favors.remove(favorComponents); - } + @Override public boolean equals(Object o) { diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/model/Favor.java b/src/main/java/ru/ulstu/is/sbapp/repair/model/Favor.java index 09c5070..bd92497 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/model/Favor.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/model/Favor.java @@ -18,12 +18,11 @@ public class Favor { @Column(name = "price") private Integer price; - @OneToMany(mappedBy = "favor", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private List components; + @ManyToMany(mappedBy = "favor", fetch = FetchType.EAGER) + private List components; - @OneToMany(mappedBy = "favor", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JsonIgnore - private List orders; + @ManyToMany(mappedBy = "favor", fetch = FetchType.EAGER) + private List orders; public Favor() { @@ -55,12 +54,14 @@ public class Favor { this.price = price; } - public List getComponents() { + public List getComponents() { return components; } - public void setComponents(List components) { - this.components = components; + public void setComponents(Component components) { + if (! components.getFavors().contains(this)){ + components.getFavors().add(this); + } } public void update(Favor favor){ @@ -69,37 +70,16 @@ public class Favor { this.components = favor.getComponents(); } - public void addComponent(FavorComponents favorComponents){ - if (components == null){ - this.components = new ArrayList<>(); - } - if (!components.contains(favorComponents)) - this.components.add(favorComponents); - } - public void removeComponent(FavorComponents favorComponents){ - if (components.contains(favorComponents)) - this.components.remove(favorComponents); - } - public List getOrders() { + public List getOrders() { return orders; } - public void setOrders(List orders) { - this.orders = orders; - } - public void addOrder(OrderFavors orderFavors){ - if (orders == null){ - orders = new ArrayList<>(); + public void setOrders(Order orders) { + if (! orders.getFavors().contains(this)){ + orders.getFavors().add(this); } - if (!orders.contains(orderFavors)) - this.orders.add(orderFavors); } - public void removeOrder(OrderFavors orderFavors){ - if (orders.contains(orderFavors)) - this.orders.remove(orderFavors); - } - @Override public boolean equals(Object o) { diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/model/Order.java b/src/main/java/ru/ulstu/is/sbapp/repair/model/Order.java index 2d95693..32b64a1 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/model/Order.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/model/Order.java @@ -16,8 +16,8 @@ public class Order { private Long id; @Column(name = "date") private Date date; - @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private List favors; + @ManyToMany(fetch = FetchType.EAGER) + private List favors; public Order(){ } @@ -43,26 +43,25 @@ public class Order { } - public List getFavors() { + public List getFavors() { return favors; } - public void setFavors(List favors) { + public void setFavors(List favors) { this.favors = favors; } - public void addFavor(OrderFavors orderFavors){ + public void addFavor(Favor orderFavors){ if (favors == null){ this.favors = new ArrayList<>(); } - if (!favors.contains(orderFavors)) - this.favors.add(orderFavors); - } - public void removeFavors(OrderFavors orderFavors){ - if (favors.contains(orderFavors)) - this.favors.remove(orderFavors); + favors.add(orderFavors); + if (!orderFavors.getOrders().contains(this)){ + orderFavors.setOrders(this); + } } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -74,4 +73,4 @@ public class Order { public int hashCode() { return Objects.hash(getId(), getDate()); } -} +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java b/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java index a9883f3..186d1f7 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java @@ -44,18 +44,6 @@ public class ComponentService { .getResultList(); } - @Transactional(readOnly = true) - public List findFiltredComponents(Long[] arr) { - if (arr.length == 0) { - throw new IllegalArgumentException("Array id is empty"); - } - List componentList = new ArrayList<>(); - for (int i = 0; i < arr.length; i++) { - componentList.add(em.find(Component.class, arr[i])); - } - return componentList; - } - @Transactional public Component updateComponent(Long id, String componentName, Integer amount) { if (!StringUtils.hasText(componentName) || amount == 0) { @@ -71,18 +59,11 @@ public class ComponentService { public Component deleteComponent(Long id) { final Component currentComponent = findComponent(id); int size = currentComponent.getFavors().size(); - for (int i = 0; i < size; i++) { - FavorComponents temp = currentComponent.getFavors().get(0); - temp.getComponent().removeFavor(temp); - temp.getFavor().removeComponent(temp); - em.remove(temp); - } em.remove(currentComponent); return currentComponent; } @Transactional public void deleteAllComponent() { - em.createQuery("delete from FavorComponents").executeUpdate(); em.createQuery("delete from Component").executeUpdate(); } } diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/service/FavorService.java b/src/main/java/ru/ulstu/is/sbapp/repair/service/FavorService.java index a2fc147..5929b50 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/service/FavorService.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/service/FavorService.java @@ -28,12 +28,7 @@ public class FavorService { } final Favor favor = new Favor(favorName, price); em.persist(favor); - for (int i = 0; i < components.size(); i++) { - final FavorComponents favorComponents = new FavorComponents(components.get(i), favor, count[i]); - favor.addComponent(favorComponents); - components.get(i).addFavor(favorComponents); - em.persist(favorComponents); - } + return favor; }