diff --git a/data.mv.db b/data.mv.db index 89e66bd..39f8290 100644 Binary files a/data.mv.db and b/data.mv.db differ diff --git a/src/main/java/ru/ulstu/is/sbapp/Favourite/model/Favourite.java b/src/main/java/ru/ulstu/is/sbapp/Favourite/model/Favourite.java new file mode 100644 index 0000000..cbbb702 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/Favourite/model/Favourite.java @@ -0,0 +1,73 @@ +package ru.ulstu.is.sbapp.Favourite.model; + +import jakarta.persistence.*; +import ru.ulstu.is.sbapp.FavouriteTiding.FavouriteTiding; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Entity +public class Favourite { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column + Date DateOfAdd; + + @OneToMany(mappedBy = "favourite",fetch = FetchType.EAGER) + private List tidings; + + + public Favourite() + { + + } + + public Favourite(Date DateOfAdd) + { + this.DateOfAdd=DateOfAdd; + } + public List getTidings() { + if (tidings == null) { + tidings = new ArrayList<>(); + } + return tidings; + } + public Long getId() + { + return id; + } + public Date getDateOfAdd() + { + return DateOfAdd; + } + public void setDateOfAdd(Date DateOfAdd) + { + this.DateOfAdd=DateOfAdd; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Favourite favourite = (Favourite) o; + return Objects.equals(id, favourite.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Purchase{" + + "id=" + id + + ", DateOfAdd='" + DateOfAdd + '\'' + + '}'; + } + +} diff --git a/src/main/java/ru/ulstu/is/sbapp/Favourite/service/FavouriteService.java b/src/main/java/ru/ulstu/is/sbapp/Favourite/service/FavouriteService.java new file mode 100644 index 0000000..8394257 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/Favourite/service/FavouriteService.java @@ -0,0 +1,93 @@ +package ru.ulstu.is.sbapp.Favourite.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import ru.ulstu.is.sbapp.FavouriteTiding.FavouriteTiding; +import ru.ulstu.is.sbapp.FavouriteTiding.FavouriteTidingId; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityNotFoundException; +import jakarta.persistence.PersistenceContext; +import ru.ulstu.is.sbapp.Favourite.model.Favourite; +import ru.ulstu.is.sbapp.client.model.Client; +import ru.ulstu.is.sbapp.news.model.Tiding; + +import java.util.Date; +import java.util.List; + +@Service +public class FavouriteService { + @PersistenceContext + private EntityManager em; + + @Transactional + public Favourite addFavourite(Date DateOfAdd) { + if(DateOfAdd==null) + { + throw new IllegalArgumentException("Date is null or empty"); + } + final Favourite favourite = new Favourite(DateOfAdd); + em.persist(favourite); + return favourite; + } + + @Transactional(readOnly = true) + public Favourite findFavourite(Long id) { + final Favourite favourite = em.find(Favourite.class, id); + if (favourite == null) { + throw new EntityNotFoundException(String.format("Favourite with id [%s] is not found", id)); + } + return favourite; + } + + @Transactional(readOnly = true) + public List findAllFavourites() { + return em.createQuery("select f from Favourite f", Favourite.class) + .getResultList(); + } + @Transactional + public Favourite updateFavourite(Long id, Date DateOfAdd) { + if(DateOfAdd==null) + { + throw new IllegalArgumentException("Date is null or empty"); + } + final Favourite currentFavourite = findFavourite(id); + currentFavourite.setDateOfAdd(DateOfAdd); + return em.merge(currentFavourite); + } + @Transactional + public Favourite deleteFavourite(Long id) { + final Favourite currentFavourite = findFavourite(id); + em.createQuery("update Client set favourite = null where favourite.id = " + id).executeUpdate(); + em.createQuery("delete from FavouriteTiding ft where ft.favourite.id = " + id).executeUpdate(); + em.remove(currentFavourite); + return currentFavourite; + } + + @Transactional + public void deleteAllFavourites() { + em.createQuery("update Client set favourite = null").executeUpdate(); + em.createQuery("delete from FavouriteTiding").executeUpdate(); + em.createQuery("delete from Favourite").executeUpdate(); + } + @Transactional + public void addTechniqueInPurchase(Long id, Tiding tiding) { + final Favourite favourite = findFavourite(id); + FavouriteTiding favouriteTiding = em.find(FavouriteTiding.class, new FavouriteTidingId(favourite.getId(), tiding.getId())); + if (favouriteTiding == null) { + favouriteTiding = new FavouriteTiding(favourite, tiding); + } + em.merge(favouriteTiding); + } + + @Transactional + public void removeTechniqueInPurchase(Long id, Tiding tiding, int count) { + final Favourite favourite = findFavourite(id); + FavouriteTiding favouriteTiding = em.find(FavouriteTiding.class, new FavouriteTidingId(favourite.getId(), tiding.getId())); + if (favouriteTiding == null) { + return; + } + em.remove(favouriteTiding); + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTiding.java b/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTiding.java new file mode 100644 index 0000000..736832a --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTiding.java @@ -0,0 +1,77 @@ +package ru.ulstu.is.sbapp.FavouriteTiding; + +import jakarta.persistence.*; +import ru.ulstu.is.sbapp.Favourite.model.Favourite; +import ru.ulstu.is.sbapp.news.model.Tiding; + +import java.io.Serializable; +import java.util.Objects; + +@Entity +@Table(name="purchase_technique") +@IdClass(FavouriteTidingId.class) +public class FavouriteTiding implements Serializable { + @Id + @ManyToOne + @JoinColumn(name="favourite_id",referencedColumnName = "id") + private Favourite favourite; + @Id + @ManyToOne + @JoinColumn(name = "tiding_id",referencedColumnName = "id") + private Tiding tiding; + + + public FavouriteTiding() { + } + + public FavouriteTiding(Favourite favourite, Tiding tiding) { + this.favourite = favourite; + this.tiding = tiding; + } + + // Properties + + public void setFavourite(Favourite favourite) { + this.favourite = favourite; + } + + public Favourite getFavourite() { + return favourite; + } + + public void setTiding(Tiding tiding) { + this.tiding = tiding; + } + + public Tiding getTiding() { + return tiding; + } + + // ![Properties] + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + FavouriteTiding favouriteTiding = (FavouriteTiding) o; + return Objects.equals(favourite.getId(), favouriteTiding.favourite.getId()) && + Objects.equals(tiding.getId(), favouriteTiding.tiding.getId()); + } + + @Override + public int hashCode() { + return Objects.hash(favourite.getId(), tiding.getId()); + } + + @Override + public String toString() { + return "FavouriteTiding{" + + "favouriteId=" + favourite.getId() + + ", tidingId=" + tiding.getId() + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTidingId.java b/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTidingId.java new file mode 100644 index 0000000..387c656 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/FavouriteTiding/FavouriteTidingId.java @@ -0,0 +1,62 @@ +package ru.ulstu.is.sbapp.FavouriteTiding; + +import java.io.Serializable; +import java.util.Objects; + +public class FavouriteTidingId implements Serializable { + private Long favourite; + private Long tiding; + + public FavouriteTidingId() + { + + } + public FavouriteTidingId(Long favouriteId, Long tidingId) + { + this.favourite=favouriteId; + this.tiding=tidingId; + } + public void setFavourite(Long favourite) { + this.favourite = favourite; + } + + public Long getFavourite() { + return favourite; + } + + public void setTiding(Long tiding) { + this.tiding = tiding; + } + + public Long getTiding() { + return tiding; + } + + // ![Properties] + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + FavouriteTidingId favouriteTidingId = (FavouriteTidingId) o; + return Objects.equals(favourite, favouriteTidingId.favourite) && + Objects.equals(tiding, favouriteTidingId.tiding); + } + + @Override + public int hashCode() { + return Objects.hash(favourite, tiding); + } + + @Override + public String toString() { + return "FavouriteTidingId{" + + "favourite=" + favourite + + ", tiding=" + tiding + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/client/model/Client.java b/src/main/java/ru/ulstu/is/sbapp/client/model/Client.java index 1bee8ed..bc6aef4 100644 --- a/src/main/java/ru/ulstu/is/sbapp/client/model/Client.java +++ b/src/main/java/ru/ulstu/is/sbapp/client/model/Client.java @@ -1,7 +1,7 @@ package ru.ulstu.is.sbapp.client.model; import jakarta.persistence.*; -import ru.ulstu.is.sbapp.purchase.model.Purchase; +import ru.ulstu.is.sbapp.Favourite.model.Favourite; import java.util.ArrayList; import java.util.List; @@ -16,25 +16,21 @@ public class Client { private String firstName; private String lastName; - @OneToMany(fetch = FetchType.EAGER,mappedBy = "client",cascade = CascadeType.REMOVE) - private List purchases; + private String email; + + @OneToOne + @JoinColumn(name="favourite_id") + private Favourite favourite; public Client() { } - public Client(String firstName, String lastName) { + public Client(String firstName, String lastName,String email) { this.firstName = firstName; this.lastName = lastName; - this.purchases = new ArrayList<>(); + this.email=email; } - public void setPurchase(Purchase purchase) { - if(purchase==null) - { - throw new IllegalArgumentException("Да"); - } - this.purchases.add(purchase); - } public Long getId() { return id; @@ -56,15 +52,23 @@ public class Client { this.lastName = lastName; } - public List getPurchases() + public String getEmail() { - return purchases; + return email; + } + public void setEmail(String email){ + this.email=email; } - public void setPurchases(List purchases) + public void setFavourite(Favourite favourite) { - this.purchases=purchases; + this.favourite=favourite; } + public Favourite getFavourite() + { + return favourite; + } + @Override public boolean equals(Object o) { @@ -85,6 +89,7 @@ public class Client { "id=" + id + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + + ", email='" + email + '\'' + '}'; } diff --git a/src/main/java/ru/ulstu/is/sbapp/client/service/ClientService.java b/src/main/java/ru/ulstu/is/sbapp/client/service/ClientService.java index e8299ff..61c5225 100644 --- a/src/main/java/ru/ulstu/is/sbapp/client/service/ClientService.java +++ b/src/main/java/ru/ulstu/is/sbapp/client/service/ClientService.java @@ -4,15 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import ru.ulstu.is.sbapp.Favourite.model.Favourite; import ru.ulstu.is.sbapp.client.model.Client; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.PersistenceContext; -import ru.ulstu.is.sbapp.purchase.model.Purchase; -import ru.ulstu.is.sbapp.purchase.service.PurchaseService; +import ru.ulstu.is.sbapp.Favourite.service.FavouriteService; -import java.util.Date; import java.util.List; @Service @@ -21,14 +20,14 @@ public class ClientService { private EntityManager em; @Autowired - PurchaseService purchaseService; + FavouriteService favouriteService; @Transactional - public Client addClient(String firstName, String lastName) { - if (!StringUtils.hasText(firstName) || !StringUtils.hasText(lastName)) { - throw new IllegalArgumentException("Client name is null or empty"); + public Client addClient(String firstName, String lastName,String email) { + if (!StringUtils.hasText(firstName) || !StringUtils.hasText(lastName) ||!StringUtils.hasText(email)) { + throw new IllegalArgumentException("Client info is null or empty"); } - final Client client = new Client(firstName, lastName); + final Client client = new Client(firstName, lastName,email); em.persist(client); return client; } @@ -49,13 +48,14 @@ public class ClientService { } @Transactional - public Client updateClient(Long id, String firstName, String lastName) { - if (!StringUtils.hasText(firstName) || !StringUtils.hasText(lastName)) { - throw new IllegalArgumentException("Client name is null or empty"); + public Client updateClient(Long id, String firstName, String lastName,String email) { + if (!StringUtils.hasText(firstName) || !StringUtils.hasText(lastName) ||!StringUtils.hasText(email)) { + throw new IllegalArgumentException("Client info is null or empty"); } final Client currentClient = findClient(id); currentClient.setFirstName(firstName); currentClient.setLastName(lastName); + currentClient.setEmail(email); return em.merge(currentClient); } @@ -70,4 +70,12 @@ public class ClientService { public void deleteAllClients() { em.createQuery("delete from Client").executeUpdate(); } + @Transactional + public Client setFavourite(Long id, Favourite favourite) + { + final Client client=findClient(id); + client.setFavourite(favourite); + em.merge(client); + return client; + } } diff --git a/src/main/java/ru/ulstu/is/sbapp/news/model/Tiding.java b/src/main/java/ru/ulstu/is/sbapp/news/model/Tiding.java new file mode 100644 index 0000000..6027166 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/news/model/Tiding.java @@ -0,0 +1,79 @@ +package ru.ulstu.is.sbapp.news.model; + +import jakarta.persistence.*; +import ru.ulstu.is.sbapp.FavouriteTiding.FavouriteTiding; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Entity +public class Tiding { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column + String Heading; + + String Content; + + + + @OneToMany(mappedBy = "tiding",fetch = FetchType.EAGER) + private List favourites; + + public Tiding(){} + + public Tiding(String Heading, String Content) + { + this.Heading = Heading; + this.Content = Content; + } + public Long getId() + { + return id; + } + public String getHeading() + { + return Heading; + } + public String getContent() + { + return Content; + } + public void setHeading(String Heading){ + this.Heading =Heading; + } + public void setContent(String Content) + { + this.Content = Content; + } + public List getFavourites() { + if (favourites == null) { + favourites = new ArrayList<>(); + } + return favourites; + } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Tiding tiding = (Tiding) o; + return Objects.equals(id, tiding.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Technique{" + + "id=" + id + + ", Heading='" + Heading + '\'' + + ", Content ='" + Content + '\'' + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/news/service/TidingService.java b/src/main/java/ru/ulstu/is/sbapp/news/service/TidingService.java new file mode 100644 index 0000000..355b615 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/news/service/TidingService.java @@ -0,0 +1,67 @@ +package ru.ulstu.is.sbapp.news.service; + +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 ru.ulstu.is.sbapp.news.model.Tiding; + +import java.util.List; + +@Service +public class TidingService { + @PersistenceContext + private EntityManager em; + + @Transactional + public Tiding addTiding(String Heading, String Content) { + if (!StringUtils.hasText(Heading) || !StringUtils.hasText(Content) ) { + throw new IllegalArgumentException("Tiding info is null or empty"); + } + final Tiding tiding = new Tiding(Heading,Content); + em.persist(tiding); + return tiding; + } + + @Transactional(readOnly = true) + public Tiding findTiding(Long id) { + final Tiding tiding = em.find(Tiding.class, id); + if (tiding == null) { + throw new EntityNotFoundException(String.format("Tiding with id [%s] is not found", id)); + } + return tiding; + } + + @Transactional(readOnly = true) + public List findAllTidings() { + return em.createQuery("select t from Tiding T", Tiding.class) + .getResultList(); + } + + @Transactional + public Tiding updateTiding(Long id, String Heading, String Content) { + if (!StringUtils.hasText(Heading) || !StringUtils.hasText(Content) ) { + throw new IllegalArgumentException("Tiding info is null or empty"); + } + final Tiding currentTiding = findTiding(id); + currentTiding.setHeading(Heading); + currentTiding.setContent(Content); + return em.merge(currentTiding); + } + + @Transactional + public Tiding deleteTiding(Long id) { + final Tiding currentTiding = findTiding(id); + em.createQuery("delete from FavouriteTiding ft where ft.tiding.id = " + id).executeUpdate(); + em.remove(currentTiding); + return currentTiding; + } + + @Transactional + public void deleteAllTechniques() { + em.createQuery("delete from FavouriteTiding"); + em.createQuery("delete from Tiding").executeUpdate(); + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/purchase/model/Purchase.java b/src/main/java/ru/ulstu/is/sbapp/purchase/model/Purchase.java deleted file mode 100644 index 883fd23..0000000 --- a/src/main/java/ru/ulstu/is/sbapp/purchase/model/Purchase.java +++ /dev/null @@ -1,112 +0,0 @@ -package ru.ulstu.is.sbapp.purchase.model; - -import jakarta.persistence.*; -import ru.ulstu.is.sbapp.client.model.Client; -import ru.ulstu.is.sbapp.technique.model.Technique; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -@Entity -public class Purchase { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Long id; - - @Column - Date DateOfPurchase; - - double Price; - - @ManyToOne(fetch = FetchType.EAGER) - @JoinColumn(name ="client_fk") - private Client client; - - @ManyToMany(fetch = FetchType.EAGER) - @JoinTable(name = "purchases_techniques", - joinColumns = @JoinColumn(name = "purchase_fk"), - inverseJoinColumns = @JoinColumn(name = "technique_fk")) - private List techniques; - - - public Purchase() - { - - } - - public Purchase(Date DateOfPurchase,double Price) - { - this.DateOfPurchase=DateOfPurchase; - this.Price = Price; - } - public List getTechnique() { - return techniques; - } - public void addTechnique(Technique technique) { - if (techniques == null){ - techniques = new ArrayList<>(); - } - this.techniques.add(technique); - if (technique.getPurchase()==null) { // warning this may cause performance issues if you have a large data set since this operation is O(n) - technique.setPurchase(this); - } - } - public Long getId() - { - return id; - } - public Date getDateOfPurchase() - { - return DateOfPurchase; - } - public void setDateOfPurchase(Date DateOfPurchase) - { - this.DateOfPurchase=DateOfPurchase; - } - public double getPrice() - { - return Price; - } - public void setPrice(Float Price) - { - this.Price=Price; - } - public Client getClient() - { - return client; - } - public void setClient(Client client) - { - if(this.client != null){ - this.client.getPurchases().remove(this); - } - this.client=client; - if (!client.getPurchases().contains(this)) { - client.getPurchases().add(this); - } - } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Purchase purchase = (Purchase) o; - return Objects.equals(id, purchase.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - - @Override - public String toString() { - return "Purchase{" + - "id=" + id + - ", DateOfPurchase='" + DateOfPurchase + '\'' + - ", Price ='" + Price + '\'' + - '}'; - } - -} diff --git a/src/main/java/ru/ulstu/is/sbapp/purchase/service/PurchaseService.java b/src/main/java/ru/ulstu/is/sbapp/purchase/service/PurchaseService.java deleted file mode 100644 index dcba69a..0000000 --- a/src/main/java/ru/ulstu/is/sbapp/purchase/service/PurchaseService.java +++ /dev/null @@ -1,97 +0,0 @@ -package ru.ulstu.is.sbapp.purchase.service; - -import org.apache.commons.lang3.time.DateUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; -import ru.ulstu.is.sbapp.client.model.Client; - -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityNotFoundException; -import jakarta.persistence.PersistenceContext; -import ru.ulstu.is.sbapp.purchase.model.Purchase; -import ru.ulstu.is.sbapp.technique.model.Technique; - -import java.util.Date; -import java.util.List; - -@Service -public class PurchaseService { - @PersistenceContext - private EntityManager em; - - @Transactional - public Purchase addPurchase(Date DateOfPurchase, double Price, List techniques) { - if (DateOfPurchase==null) { - throw new IllegalArgumentException("Date of purchase is null or empty"); - } - if(Price==0){ - throw new IllegalArgumentException("Price is null or empty"); - } - final Purchase purchase = new Purchase(DateOfPurchase, Price); - for (int i = 0; i < techniques .size(); i++){ - purchase.addTechnique(techniques.get(i)); - } - em.persist(purchase); - return purchase; - } - - @Transactional(readOnly = true) - public Purchase findPurchase(Long id) { - final Purchase purchase = em.find(Purchase.class, id); - if (purchase == null) { - throw new EntityNotFoundException(String.format("Purchase with id [%s] is not found", id)); - } - return purchase; - } - - @Transactional(readOnly = true) - public List findAllPurchases() { - return em.createQuery("select p from Purchase p", Purchase.class) - .getResultList(); - } - @Transactional - public void addTechnique(Technique technique,Long purchaseId) - { - final Purchase purchase=findPurchase(purchaseId); - purchase.getTechnique().add(technique); - technique.getPurchase().add(purchase); - em.merge(purchase); - } - - @Transactional - public void removeTechnique(Technique technique,Long purchaseId) - { - final Purchase curpurchase=findPurchase(purchaseId); - final Technique curtechnique=em.find(Technique.class,technique.getId()); - curpurchase.getTechnique().remove(curtechnique); - curtechnique.getPurchase().remove(curpurchase); - em.merge(curpurchase); - em.merge(curtechnique); -} - @Transactional - public Purchase updatePurchase(Long id, Date DateOfPurchase, Float Price) { - if (DateOfPurchase==null) { - throw new IllegalArgumentException("Date of purchase is null or empty"); - } - if(Price==null){ - throw new IllegalArgumentException("Price is null or empty"); - } - final Purchase currentPurchase = findPurchase(id); - currentPurchase.setDateOfPurchase(DateOfPurchase); - currentPurchase.setPrice(Price); - return em.merge(currentPurchase); - } - - @Transactional - public Purchase deletePurchase(Long id) { - final Purchase currentPurchase = findPurchase(id); - em.remove(currentPurchase); - return currentPurchase; - } - - @Transactional - public void deleteAllPurchases() { - em.createQuery("delete from Purchase").executeUpdate(); - } -} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/is/sbapp/technique/model/Technique.java b/src/main/java/ru/ulstu/is/sbapp/technique/model/Technique.java deleted file mode 100644 index 455e7e7..0000000 --- a/src/main/java/ru/ulstu/is/sbapp/technique/model/Technique.java +++ /dev/null @@ -1,86 +0,0 @@ -package ru.ulstu.is.sbapp.technique.model; - -import jakarta.persistence.*; -import ru.ulstu.is.sbapp.purchase.model.Purchase; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -@Entity -public class Technique { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Long id; - - @Column - String Type; - - double TechPrice; - - - - @ManyToMany(mappedBy = "techniques",fetch = FetchType.EAGER) - private List purchases; - - public Technique(){} - - public Technique(String Type,double TechPrice) - { - this.Type = Type; - this.TechPrice=TechPrice; - } - public Long getId() - { - return id; - } - public String getType() - { - return Type; - } - public double getTechPrice() - { - return TechPrice; - } - public void setType(String Type){ - this.Type=Type; - } - public void setTechPrice(Float TechPrice) - { - this.TechPrice=TechPrice; - } - public List getPurchase() - { - return purchases; - } - public void setPurchase(Purchase purchase) { - if (purchases == null){ - purchases = new ArrayList<>(); - } - this.purchases.add(purchase); - if (!purchase.getTechnique().contains(this)) { // warning this may cause performance issues if you have a large data set since this operation is O(n) - purchase.getTechnique().add(this); - } - } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Technique technique = (Technique) o; - return Objects.equals(id, technique.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - - @Override - public String toString() { - return "Technique{" + - "id=" + id + - ", Type='" + Type + '\'' + - ", TechPrice ='" + TechPrice + '\'' + - '}'; - } -} diff --git a/src/main/java/ru/ulstu/is/sbapp/technique/service/TechniqueService.java b/src/main/java/ru/ulstu/is/sbapp/technique/service/TechniqueService.java deleted file mode 100644 index 33a9c66..0000000 --- a/src/main/java/ru/ulstu/is/sbapp/technique/service/TechniqueService.java +++ /dev/null @@ -1,74 +0,0 @@ -package ru.ulstu.is.sbapp.technique.service; - -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 ru.ulstu.is.sbapp.client.model.Client; -import ru.ulstu.is.sbapp.technique.model.Technique; - -import java.util.List; - -@Service -public class TechniqueService { - @PersistenceContext - private EntityManager em; - - @Transactional - public Technique addTechnique(String Type, double TechPrice) { - if (!StringUtils.hasText(Type)) { - throw new IllegalArgumentException("Technique type is null or empty"); - } - if(TechPrice == 0) - { - throw new IllegalArgumentException("Technique TechPrice is null or empty"); - } - final Technique technique = new Technique(Type, TechPrice); - em.persist(technique); - return technique; - } - - @Transactional(readOnly = true) - public Technique findTechnique(Long id) { - final Technique technique = em.find(Technique.class, id); - if (technique == null) { - throw new EntityNotFoundException(String.format("Technique with id [%s] is not found", id)); - } - return technique; - } - - @Transactional(readOnly = true) - public List findAllTechniques() { - return em.createQuery("select t from Technique T", Technique.class) - .getResultList(); - } - - @Transactional - public Technique updateTechnique(Long id, String Type, Float TechPrice) { - if (!StringUtils.hasText(Type)){ - throw new IllegalArgumentException("Technique type is null or empty"); - } - if(TechPrice == null) - { - throw new IllegalArgumentException("Technique TechPrice is null or empty"); - } - final Technique currentTechnique = findTechnique(id); - currentTechnique.setType(Type); - currentTechnique.setTechPrice(TechPrice); - return em.merge(currentTechnique); - } - - @Transactional - public Technique deleteTechnique(Long id) { - final Technique currentTechnique = findTechnique(id); - em.remove(currentTechnique); - return currentTechnique; - } - - @Transactional - public void deleteAllTechniques() { - em.createQuery("delete from Technique").executeUpdate(); - } -} diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaFavouriteTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaFavouriteTests.java new file mode 100644 index 0000000..f2a3952 --- /dev/null +++ b/src/test/java/ru/ulstu/is/sbapp/JpaFavouriteTests.java @@ -0,0 +1,27 @@ +package ru.ulstu.is.sbapp; + +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import ru.ulstu.is.sbapp.Favourite.model.Favourite; +import ru.ulstu.is.sbapp.Favourite.service.FavouriteService; +import ru.ulstu.is.sbapp.news.model.Tiding; +import ru.ulstu.is.sbapp.news.service.TidingService; + + +@SpringBootTest +public class JpaFavouriteTests { + private static final Logger log = LoggerFactory.getLogger(JpaFavouriteTests.class); + @Autowired + private FavouriteService favouriteService; + @Autowired + private TidingService tidingService; + + @Test + void Test() + { + + } +} diff --git a/src/test/java/ru/ulstu/is/sbapp/TechShopTest.java b/src/test/java/ru/ulstu/is/sbapp/TechShopTest.java deleted file mode 100644 index 0f6ea04..0000000 --- a/src/test/java/ru/ulstu/is/sbapp/TechShopTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package ru.ulstu.is.sbapp; - -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 ru.ulstu.is.sbapp.client.model.Client; -import ru.ulstu.is.sbapp.client.service.ClientService; -import ru.ulstu.is.sbapp.purchase.model.Purchase; -import ru.ulstu.is.sbapp.purchase.service.PurchaseService; -import ru.ulstu.is.sbapp.technique.model.Technique; -import ru.ulstu.is.sbapp.technique.service.TechniqueService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -@SpringBootTest -public class TechShopTest { - private static final Logger log = LoggerFactory.getLogger(TechShopTest.class); - @Autowired - ClientService clientService; - - @Autowired - TechniqueService techniqueService; - - @Autowired - PurchaseService purchaseService; - - @Test - void testClientCreate(){ - clientService.deleteAllClients(); - final Client client = clientService.addClient("Вася","Пупкин"); - log.info(client.toString()); - Assertions.assertNotNull(client.getId()); - } - - - @Test - void testPurchaseCreate() - { - purchaseService.deleteAllPurchases(); - techniqueService.deleteAllTechniques(); - final Technique tech1 = techniqueService.addTechnique("Computer",200000.0); - final Technique tech2 = techniqueService.addTechnique("Mobile phone",10000.0); - final Technique tech3 = techniqueService.addTechnique("Microwave",45000.0); - ArrayList techniques=new ArrayList<>(); - techniques.add(tech1); - techniques.add(tech2); - techniques.add(tech3); - Date date = new Date(1212121212121L); - final Purchase purchase= purchaseService.addPurchase(date,1,techniques); - log.info(purchase.toString()); - final Purchase purchase1 = purchaseService.findPurchase(purchase.getId()); - Assertions.assertEquals(true,purchase1.getTechnique().contains(tech1)); - Assertions.assertEquals(purchase,purchase1); - log.info(purchase.getTechnique().toString()); - - Assertions.assertEquals(purchase1.getTechnique().size(), 3); - - - log.info("Техник = " + purchaseService.findPurchase(purchase.getId()).getTechnique().size()); - techniqueService.deleteAllTechniques(); - log.info("Техник после удаления = " + purchaseService.findPurchase(purchase.getId()).getTechnique().size()); - - } - - /*TODO*/ - @Test - void testPurchases(){} -}