From 49896de60687679f1d781fef8d83e02fb045dbb9 Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Thu, 30 Jan 2020 20:02:26 +1000 Subject: [PATCH 1/9] added a share button to user lists page --- button/src/main/resources/templates/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/button/src/main/resources/templates/index.html b/button/src/main/resources/templates/index.html index 8dd23ea..f46f8d3 100644 --- a/button/src/main/resources/templates/index.html +++ b/button/src/main/resources/templates/index.html @@ -35,6 +35,7 @@ + From bb4339e3b0711d6e37217b825f2e70ae5e9ffeab Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Tue, 4 Feb 2020 08:24:08 +1000 Subject: [PATCH 2/9] work on sharing product list --- button/pom.xml | 10 ++-- .../java/com/button/WebSecurityConfig.java | 1 + .../com/button/model/entity/ProductList.java | 7 +++ .../java/com/button/model/entity/User.java | 2 + .../model/entity/Users_ProductList.java | 28 +++++++++- .../controller/ProductListPageController.java | 37 +++++++++++++ .../src/main/resources/templates/share.html | 53 +++++++++++++++++++ 7 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 button/src/main/resources/templates/share.html diff --git a/button/pom.xml b/button/pom.xml index 8a6218c..b39b374 100644 --- a/button/pom.xml +++ b/button/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 war @@ -72,11 +72,11 @@ spring-security-test test - - - + + org.springframework.boot + spring-boot-starter-tomcat - + javax.servlet javax.servlet-api diff --git a/button/src/main/java/com/button/WebSecurityConfig.java b/button/src/main/java/com/button/WebSecurityConfig.java index b77a8f7..996ad1e 100644 --- a/button/src/main/java/com/button/WebSecurityConfig.java +++ b/button/src/main/java/com/button/WebSecurityConfig.java @@ -38,6 +38,7 @@ protected void configure(HttpSecurity http) throws Exception { .authorizeRequests() .antMatchers("/", "/index").permitAll() .antMatchers("/list_products/**").hasAnyRole("USER", "ADMIN") + .antMatchers("/product_list/**").hasAnyRole("USER", "ADMIN") .and() .formLogin() .loginPage("/login") diff --git a/button/src/main/java/com/button/model/entity/ProductList.java b/button/src/main/java/com/button/model/entity/ProductList.java index 61704cb..451a3ca 100644 --- a/button/src/main/java/com/button/model/entity/ProductList.java +++ b/button/src/main/java/com/button/model/entity/ProductList.java @@ -47,8 +47,15 @@ public String getName() { public void addUser(User user) { Users_ProductList users_productList = new Users_ProductList(user, this); + users_productList.setProductListId(this.id); + users_productList.setUserId(user.getId()); productListUsers.add(users_productList); user.getProductLists().add(users_productList); + + for( Users_ProductList usr : productListUsers) { + User usr1 = usr.getUser(); + System.out.println(usr1.getId() + " " + usr1.getLogin() + " " + usr1.getName() + " " + usr1.getSurname()); + } } public void removeUser(User user) { diff --git a/button/src/main/java/com/button/model/entity/User.java b/button/src/main/java/com/button/model/entity/User.java index 69bc3aa..2fac38b 100644 --- a/button/src/main/java/com/button/model/entity/User.java +++ b/button/src/main/java/com/button/model/entity/User.java @@ -85,6 +85,8 @@ public List getProductLists() { public void addProductList(ProductList productList) { Users_ProductList users_productList = new Users_ProductList(this, productList); + users_productList.setProductListId(productList.getId()); + users_productList.setUserId(this.getId()); productLists.add(users_productList); productList.getProductListUsers().add(users_productList); } diff --git a/button/src/main/java/com/button/model/entity/Users_ProductList.java b/button/src/main/java/com/button/model/entity/Users_ProductList.java index e22c512..72d064d 100644 --- a/button/src/main/java/com/button/model/entity/Users_ProductList.java +++ b/button/src/main/java/com/button/model/entity/Users_ProductList.java @@ -8,14 +8,22 @@ @Table(name = "users_product_list") public class Users_ProductList implements Serializable { +// @Id +// @Column(name = "user_id") + private Integer userId; + @Id @ManyToOne - @JoinColumn(name = "user_id") + @JoinColumn(name = "user_id", referencedColumnName = "id") private User user; +// @Id +// @Column(name = "product_list_id") + private Integer productListId; + @Id @ManyToOne - @JoinColumn(name = "product_list_id") + @JoinColumn(name = "product_list_id", referencedColumnName = "id") private ProductList productList; public Users_ProductList() {} @@ -25,6 +33,14 @@ public Users_ProductList(User _user, ProductList _productList) { productList = _productList; } + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + public User getUser() { return user; } @@ -33,6 +49,14 @@ public void setUser(User user) { this.user = user; } + public Integer getProductListId() { + return productListId; + } + + public void setProductListId(Integer productListId) { + this.productListId = productListId; + } + public ProductList getProductList() { return productList; } diff --git a/button/src/main/java/com/button/web/controller/ProductListPageController.java b/button/src/main/java/com/button/web/controller/ProductListPageController.java index 9278c62..2ed766e 100644 --- a/button/src/main/java/com/button/web/controller/ProductListPageController.java +++ b/button/src/main/java/com/button/web/controller/ProductListPageController.java @@ -2,6 +2,7 @@ import com.button.model.entity.ProductList; import com.button.model.entity.User; +import com.button.model.entity.Users_ProductList; import com.button.model.repo.ProductListRepository; import com.button.model.repo.UserRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -12,6 +13,9 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; @Controller @RequestMapping("/product_list") @@ -46,4 +50,37 @@ public String deleteProductListPage(@PathVariable Integer id) { productListRepository.deleteById(id); return "redirect:/index"; } + + @GetMapping("/share/{productListId}") + public String shareProductListPage(Model model, @PathVariable Integer productListId) { + ProductList productList = productListRepository.findById(productListId).get(); + List users_productListList = productList.getProductListUsers(); + List userList = new ArrayList<>(); + for (Users_ProductList upl: users_productListList) { + userList.add(upl.getUser()); + } + + model.addAttribute("userList", userList); + model.addAttribute("productList", productList); + + User user = new User(); + model.addAttribute("user", user); + + return "share"; + } + + @PostMapping("/share/{productListId}") + public String shareProductList(@ModelAttribute("user") User user, @PathVariable Integer productListId) { + ProductList productList = productListRepository.findById(productListId).get(); + + user = userRepository.findUserByLogin(user.getLogin()); + if (user != null) { + User user2 = userRepository.findUserByLogin(user.getLogin()); + productList.addUser(user2); + System.out.println(user2.getId()); + productListRepository.save(productList); + } + + return "redirect:/product_list/share/" + productListId; + } } diff --git a/button/src/main/resources/templates/share.html b/button/src/main/resources/templates/share.html new file mode 100644 index 0000000..99a1e1c --- /dev/null +++ b/button/src/main/resources/templates/share.html @@ -0,0 +1,53 @@ + + + + + +
+ +
+
+ + +
+
+ +
+ + + +
+
+
+ +
+ + + + + + + + + + + + + + + +
IdПользовательДействия
+ + + +
+
+
+
+ + + \ No newline at end of file From ff6472d9a06108116b0e06aa9a6779b67b8d2a23 Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Tue, 4 Feb 2020 20:28:02 +1000 Subject: [PATCH 3/9] - --- button/pom.xml | 2 +- .../com/button/model/entity/ProductList.java | 4 +-- .../java/com/button/model/entity/User.java | 4 +-- .../model/entity/Users_ProductList.java | 32 +++++++++---------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/button/pom.xml b/button/pom.xml index b39b374..ccd5f54 100644 --- a/button/pom.xml +++ b/button/pom.xml @@ -80,7 +80,7 @@ javax.servlet javax.servlet-api - provided + diff --git a/button/src/main/java/com/button/model/entity/ProductList.java b/button/src/main/java/com/button/model/entity/ProductList.java index 451a3ca..f09ffc7 100644 --- a/button/src/main/java/com/button/model/entity/ProductList.java +++ b/button/src/main/java/com/button/model/entity/ProductList.java @@ -47,8 +47,8 @@ public String getName() { public void addUser(User user) { Users_ProductList users_productList = new Users_ProductList(user, this); - users_productList.setProductListId(this.id); - users_productList.setUserId(user.getId()); +// users_productList.setProductListId(this.id); +// users_productList.setUserId(user.getId()); productListUsers.add(users_productList); user.getProductLists().add(users_productList); diff --git a/button/src/main/java/com/button/model/entity/User.java b/button/src/main/java/com/button/model/entity/User.java index 2fac38b..589e763 100644 --- a/button/src/main/java/com/button/model/entity/User.java +++ b/button/src/main/java/com/button/model/entity/User.java @@ -85,8 +85,8 @@ public List getProductLists() { public void addProductList(ProductList productList) { Users_ProductList users_productList = new Users_ProductList(this, productList); - users_productList.setProductListId(productList.getId()); - users_productList.setUserId(this.getId()); +// users_productList.setProductListId(productList.getId()); +// users_productList.setUserId(this.getId()); productLists.add(users_productList); productList.getProductListUsers().add(users_productList); } diff --git a/button/src/main/java/com/button/model/entity/Users_ProductList.java b/button/src/main/java/com/button/model/entity/Users_ProductList.java index 72d064d..9538827 100644 --- a/button/src/main/java/com/button/model/entity/Users_ProductList.java +++ b/button/src/main/java/com/button/model/entity/Users_ProductList.java @@ -10,7 +10,7 @@ public class Users_ProductList implements Serializable { // @Id // @Column(name = "user_id") - private Integer userId; +// private Integer userId; @Id @ManyToOne @@ -19,7 +19,7 @@ public class Users_ProductList implements Serializable { // @Id // @Column(name = "product_list_id") - private Integer productListId; +// private Integer productListId; @Id @ManyToOne @@ -33,13 +33,13 @@ public Users_ProductList(User _user, ProductList _productList) { productList = _productList; } - public Integer getUserId() { - return userId; - } - - public void setUserId(Integer userId) { - this.userId = userId; - } +// public Integer getUserId() { +// return userId; +// } +// +// public void setUserId(Integer userId) { +// this.userId = userId; +// } public User getUser() { return user; @@ -49,13 +49,13 @@ public void setUser(User user) { this.user = user; } - public Integer getProductListId() { - return productListId; - } - - public void setProductListId(Integer productListId) { - this.productListId = productListId; - } +// public Integer getProductListId() { +// return productListId; +// } +// +// public void setProductListId(Integer productListId) { +// this.productListId = productListId; +// } public ProductList getProductList() { return productList; From 581c6b41dd3e78e586922d7132d158f5eed76f39 Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Tue, 4 Feb 2020 22:29:52 +1000 Subject: [PATCH 4/9] - added sharing product list - added deleting user from list share --- .../com/button/model/entity/ProductList.java | 44 +++++----- .../java/com/button/model/entity/User.java | 31 +++---- .../model/entity/Users_ProductList.java | 85 ------------------- .../controller/ProductListPageController.java | 38 +++++---- 4 files changed, 57 insertions(+), 141 deletions(-) delete mode 100644 button/src/main/java/com/button/model/entity/Users_ProductList.java diff --git a/button/src/main/java/com/button/model/entity/ProductList.java b/button/src/main/java/com/button/model/entity/ProductList.java index f09ffc7..50936e2 100644 --- a/button/src/main/java/com/button/model/entity/ProductList.java +++ b/button/src/main/java/com/button/model/entity/ProductList.java @@ -4,7 +4,9 @@ import javax.persistence.*; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; @Entity @Table(name = "product_list") @@ -15,12 +17,17 @@ public class ProductList { private String name; - @OneToMany( - mappedBy = "productList", - cascade = CascadeType.ALL, - orphanRemoval = true + + @ManyToMany( + fetch = FetchType.EAGER, + cascade = CascadeType.PERSIST ) - private List productListUsers = new ArrayList<>(); + @JoinTable( + name = "users_product_list", + joinColumns = {@JoinColumn(name = "product_list_id")}, + inverseJoinColumns = {@JoinColumn(name = "user_id")} + ) + private Set users = new HashSet<>(); @OneToMany( mappedBy = "productList", @@ -45,29 +52,16 @@ public String getName() { return name; } - public void addUser(User user) { - Users_ProductList users_productList = new Users_ProductList(user, this); -// users_productList.setProductListId(this.id); -// users_productList.setUserId(user.getId()); - productListUsers.add(users_productList); - user.getProductLists().add(users_productList); - - for( Users_ProductList usr : productListUsers) { - User usr1 = usr.getUser(); - System.out.println(usr1.getId() + " " + usr1.getLogin() + " " + usr1.getName() + " " + usr1.getSurname()); - } + public Set getUsers() { + return users; } - public void removeUser(User user) { - Users_ProductList users_productList = new Users_ProductList(user, this); - productListUsers.remove(users_productList); - user.getProductLists().remove(users_productList); - - users_productList.setUser(null); - users_productList.setProductList(null); + public void addUser(User user) { + users.add(user); + user.getProductLists().add(this); } - public List getProductListUsers() { - return productListUsers; + public void removeUser(User user) { + users.remove(user); } } diff --git a/button/src/main/java/com/button/model/entity/User.java b/button/src/main/java/com/button/model/entity/User.java index 589e763..0dd0b6a 100644 --- a/button/src/main/java/com/button/model/entity/User.java +++ b/button/src/main/java/com/button/model/entity/User.java @@ -2,7 +2,9 @@ import javax.persistence.*; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; @Entity @Table(name="users") @@ -22,12 +24,12 @@ public class User { private boolean disabled; - @OneToMany( - mappedBy = "user", - cascade = CascadeType.ALL, - orphanRemoval = true + @ManyToMany( + mappedBy = "users", + cascade = CascadeType.PERSIST, + fetch = FetchType.EAGER ) - private List productLists = new ArrayList<>(); + private Set productLists = new HashSet<>(); public User() {} @@ -79,24 +81,23 @@ public void setDisabled(boolean disabled) { this.disabled = disabled; } - public List getProductLists() { + public Set getProductLists() { return productLists; } public void addProductList(ProductList productList) { - Users_ProductList users_productList = new Users_ProductList(this, productList); -// users_productList.setProductListId(productList.getId()); -// users_productList.setUserId(this.getId()); - productLists.add(users_productList); - productList.getProductListUsers().add(users_productList); + productLists.add(productList); + productList.getUsers().add(this); } public void removeProductList(ProductList productList) { - Users_ProductList users_productList = new Users_ProductList(this, productList); - productList.getProductListUsers().remove(this); productLists.remove(productList); - users_productList.setUser(null); - users_productList.setProductList(null); +// Users_ProductList users_productList = new Users_ProductList(this, productList); +// productList.getProductListUsers().remove(this); +// productLists.remove(productList); +// +// users_productList.setUser(null); +// users_productList.setProductList(null); } } diff --git a/button/src/main/java/com/button/model/entity/Users_ProductList.java b/button/src/main/java/com/button/model/entity/Users_ProductList.java deleted file mode 100644 index 9538827..0000000 --- a/button/src/main/java/com/button/model/entity/Users_ProductList.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.button.model.entity; - -import javax.persistence.*; -import java.io.Serializable; -import java.util.Objects; - -@Entity -@Table(name = "users_product_list") -public class Users_ProductList implements Serializable { - -// @Id -// @Column(name = "user_id") -// private Integer userId; - - @Id - @ManyToOne - @JoinColumn(name = "user_id", referencedColumnName = "id") - private User user; - -// @Id -// @Column(name = "product_list_id") -// private Integer productListId; - - @Id - @ManyToOne - @JoinColumn(name = "product_list_id", referencedColumnName = "id") - private ProductList productList; - - public Users_ProductList() {} - - public Users_ProductList(User _user, ProductList _productList) { - user = _user; - productList = _productList; - } - -// public Integer getUserId() { -// return userId; -// } -// -// public void setUserId(Integer userId) { -// this.userId = userId; -// } - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - -// public Integer getProductListId() { -// return productListId; -// } -// -// public void setProductListId(Integer productListId) { -// this.productListId = productListId; -// } - - public ProductList getProductList() { - return productList; - } - - public void setProductList(ProductList productList) { - this.productList = productList; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - Users_ProductList that = (Users_ProductList) o; - return Objects.equals(user, that.user) && Objects.equals(productList, that.productList); - } - - @Override - public int hashCode() { - return Objects.hash(user, productList); - } -} diff --git a/button/src/main/java/com/button/web/controller/ProductListPageController.java b/button/src/main/java/com/button/web/controller/ProductListPageController.java index 2ed766e..77b58ab 100644 --- a/button/src/main/java/com/button/web/controller/ProductListPageController.java +++ b/button/src/main/java/com/button/web/controller/ProductListPageController.java @@ -1,8 +1,8 @@ package com.button.web.controller; +import com.button.model.entity.Product; import com.button.model.entity.ProductList; import com.button.model.entity.User; -import com.button.model.entity.Users_ProductList; import com.button.model.repo.ProductListRepository; import com.button.model.repo.UserRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -13,9 +13,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.Set; @Controller @RequestMapping("/product_list") @@ -38,7 +36,7 @@ public String addNewProductList(@ModelAttribute("product_list") @Valid ProductLi if (!auth.getName().equals("anonymousUser")) { User user = userRepository.findUserByLogin(auth.getName()); - productList.addUser(user); + user.addProductList(productList); productListRepository.save(productList); } @@ -47,20 +45,18 @@ public String addNewProductList(@ModelAttribute("product_list") @Valid ProductLi @GetMapping("/delete/{id}") public String deleteProductListPage(@PathVariable Integer id) { - productListRepository.deleteById(id); +// productListRepository.deleteById(id); + ProductList productList = productListRepository.findById(id).get(); + productListRepository.delete(productList); return "redirect:/index"; } @GetMapping("/share/{productListId}") public String shareProductListPage(Model model, @PathVariable Integer productListId) { ProductList productList = productListRepository.findById(productListId).get(); - List users_productListList = productList.getProductListUsers(); - List userList = new ArrayList<>(); - for (Users_ProductList upl: users_productListList) { - userList.add(upl.getUser()); - } + Set users = productList.getUsers(); - model.addAttribute("userList", userList); + model.addAttribute("userList", users); model.addAttribute("productList", productList); User user = new User(); @@ -75,12 +71,22 @@ public String shareProductList(@ModelAttribute("user") User user, @PathVariable user = userRepository.findUserByLogin(user.getLogin()); if (user != null) { - User user2 = userRepository.findUserByLogin(user.getLogin()); - productList.addUser(user2); - System.out.println(user2.getId()); - productListRepository.save(productList); +// user.addProductList(productList); + productList.addUser(user); + userRepository.save(user); } return "redirect:/product_list/share/" + productListId; } + + @GetMapping("/share/{productListId}/delete/{userId}") + public String unshareProductListForUser(@PathVariable Integer productListId, @PathVariable Integer userId) { + ProductList productList = productListRepository.findById(productListId).get(); + User user = userRepository.findById(userId).get(); + + productList.removeUser(user); + productListRepository.save(productList); + + return "redirect:/product_list/share/" + productListId; + } } From 4d3d7a4e708a85098fdcf3e67d459beb0aa5843f Mon Sep 17 00:00:00 2001 From: max Date: Wed, 5 Feb 2020 13:59:11 +1000 Subject: [PATCH 5/9] off autocompletion for input fields --- button/src/main/resources/templates/login.html | 2 +- button/src/main/resources/templates/new_product_list.html | 2 +- button/src/main/resources/templates/share.html | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/button/src/main/resources/templates/login.html b/button/src/main/resources/templates/login.html index 5899556..27c3de6 100644 --- a/button/src/main/resources/templates/login.html +++ b/button/src/main/resources/templates/login.html @@ -16,7 +16,7 @@
- +
diff --git a/button/src/main/resources/templates/new_product_list.html b/button/src/main/resources/templates/new_product_list.html index 3323561..a505db5 100644 --- a/button/src/main/resources/templates/new_product_list.html +++ b/button/src/main/resources/templates/new_product_list.html @@ -17,7 +17,7 @@
- +
diff --git a/button/src/main/resources/templates/share.html b/button/src/main/resources/templates/share.html index 99a1e1c..b643d35 100644 --- a/button/src/main/resources/templates/share.html +++ b/button/src/main/resources/templates/share.html @@ -15,10 +15,9 @@
-
- +
From f108c2c15f018f99ffdafb951e306b4ba2d13438 Mon Sep 17 00:00:00 2001 From: max Date: Wed, 5 Feb 2020 17:03:23 +1000 Subject: [PATCH 6/9] added favicon.ico --- .../controller/ProductListPageController.java | 2 -- button/src/main/resources/static/favicon.ico | Bin 0 -> 38078 bytes 2 files changed, 2 deletions(-) create mode 100644 button/src/main/resources/static/favicon.ico diff --git a/button/src/main/java/com/button/web/controller/ProductListPageController.java b/button/src/main/java/com/button/web/controller/ProductListPageController.java index 77b58ab..8f2ff7b 100644 --- a/button/src/main/java/com/button/web/controller/ProductListPageController.java +++ b/button/src/main/java/com/button/web/controller/ProductListPageController.java @@ -1,6 +1,5 @@ package com.button.web.controller; -import com.button.model.entity.Product; import com.button.model.entity.ProductList; import com.button.model.entity.User; import com.button.model.repo.ProductListRepository; @@ -71,7 +70,6 @@ public String shareProductList(@ModelAttribute("user") User user, @PathVariable user = userRepository.findUserByLogin(user.getLogin()); if (user != null) { -// user.addProductList(productList); productList.addUser(user); userRepository.save(user); } diff --git a/button/src/main/resources/static/favicon.ico b/button/src/main/resources/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..130638e22db6bf743f6ed446d7f2ab07a2566b74 GIT binary patch literal 38078 zcmeI5d2AGQ6vwC5b}6BS0wP6QkC-R~xgsEPnJCZ$N;wMrA<7^64<0clLSmvIF`z~{ zjFM>l!z*Gm8WN3$aCF(CTq;oki${Q7hzC(jISlmq-fVy6w{K_m*V*puZ)f+n=GS>| zW@p~_eSX&*IBQvX_}{W+7XH1_`ruW|8e&=2ZCG%X6~;pA?a#*O!u&M^3;{#H5HJJ` z0YktLFa!(%L%`)j!3hjngESIoAzzgNj+9v`Zh9XeYJ39XDUAzMZ zq0VgqXRU545%|LT3I_T|GKnKMzyRcaH0#-4>B~o~?a)67QoihB_suKX)NLpWzS}1Z zTYQ1(@t{SGFwtwfA9?_wvJGJIUjR$aWOgBqvrsE(W_flNG{7Amai#q0I45mpy1335 zf5?7-MFHT>+XZPR?JQTk+pqV7=Q>SH6W18yPd|~_?VWR%{b{J3<$6>veak{U|1wQn zV~juV_u%p;?JU=`8Ni=wO6be&DTp@X4~Bnw`;+0HUf#Tq8vcgAJm&HCpz?Wp3YyRJ zlUeAnxgM1tG~Qe<&rb()IVRVm@_9Z%^Lc(U3mrDsqw<5so9pHI>0mC$3fE0M=~*crpTT-zmN4lbo;YFKtJSc&~gd zYPEHvcAlTiLWj-usQg!61CYyltc&H}WnLXTjGCyO$Xdzf`RQOT$K-lcKF`PYH}|d% zs`vj0Gbktaw`rcMg^+00|jWt}K@OgeZn9DJ_9+fZha9YxQAdkOpc70n1l-DkFWbRZK z6?KcCzWrQ}j=ciMdnavT9nVi@p~L2SRKCc=X-V^(8*{OK!O4GM@WjbIW-sdFnn_b( zVe?t#@t=P`clpzNCpfz;E9NbZW1p9w55s2G;Ml*~F2iP21FaM6#j;}l66Ns|jXl(6 zc>B`P=H-}NkIHvy_hKF8?#5lL&oAm5!?kquIH=xtG;TjyN81E@TGGDaIBv^a=D!a6 zz8e>@zUFotc11`hJ24w8+>^OITVu(=+UFEf|z>uc)b*o!)# zejtB06?U@mcz!yV%Q3kgmG8#x>VCzp{0mC@r<{MX@pyhR3mrDsqw-b!tE#G?rKJU$ zo13AsveK>-nh)IeOLo2B?=>FJPX}{3CfB3#-FTJHSzxm!_ToczfU)d3*=@gM*C!i~ z=O?q!VRJny-;EcYixid)wA;SSpXOxR=C)t5>ywSg^V7jxj>+|?{6xHn$pg=>h1Rw< zXlZSQrK{HT>N$F%ShOvfcsxIug$|qRQTZw+nZBLpr-Qj1lj~9Wna)?GkLM?|&|z~u zDqodfrf=u@>0mC$ZH%Fkm|yi&cLa*%VhjzD4B zxpxIDXn--Y7L{GPH~9Q12RYBe2#nIjzi>CaEo)KPHy;W7gBJerU- zJ}>3li@yY@J{A17FY2Zmp9@n?JWph^+|N3|Iv#;BFT};g=jd+hiud6Ab6T^9y{H4q ziE?9kpD%0xdiA_7AB^=Gi^t=~`2A2Hy}L+g&bB4x){mW!VjuX_5BNCd4@dT$UieS? zHGA2MwnRBHCY_-@aBHgTfaZ7>hsTZa%W%FG8nb=L=VL$SVr0L|3;zi}=MI0$m9g2G z>h_PvZ)Y)h%ox8Wi_Ujc{g=+|7@Ia9_+Ml(c+41o;h(wF{ulfa$Nz#4{LgvezbJ?J z*WZRniYPsw~vj#wSfI#zliB&NzYEl9m9Wj z7O;7t4&VDc@fUzH98VMEy8*}OJm2|KfPGMcI(8(`l1Qh$jh=^%I08WZxC)nR~!&dIqu++un?HvrZTfe~$)# z6XhZ7iw&snzko4KG``Tb%Qyxd#QF6pT;7zBLnds*`2qW79k!7dsXkEinSj;DY1F+P z%L{nlWq!u}-c&MmjQyja5k_M@)MC9nhGjjrr+3lcie(4-hcMrhm@m~8%_--x&^_ Date: Sun, 9 Feb 2020 01:08:46 +1000 Subject: [PATCH 7/9] No way to add blank product names. Identical product names are not duplicated in the same list; instead, the quantity of this product is added (+1). --- .../web/controller/ListProductsPageController.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/button/src/main/java/com/button/web/controller/ListProductsPageController.java b/button/src/main/java/com/button/web/controller/ListProductsPageController.java index e42808b..4d42c28 100644 --- a/button/src/main/java/com/button/web/controller/ListProductsPageController.java +++ b/button/src/main/java/com/button/web/controller/ListProductsPageController.java @@ -42,11 +42,14 @@ public String addProductPage(Model model, @PathVariable("list_id") Integer listI public String addProductToList(@PathVariable("list_id") Integer listId, @ModelAttribute("new_product") Product newProduct) { - Product product = productRepository.findProductByName(newProduct.getName()); - if (product == null) { - product = productRepository.save(newProduct); - } + boolean isNewProductEqualsNothing = newProduct.getName() == null || newProduct.getName().trim().length() == 0; + + if ( ! isNewProductEqualsNothing) { + if (product == null) { + newProduct.setName(newProduct.getName().trim()); + product = productRepository.save(newProduct); + } ProductProperty productProperty = new ProductProperty(); productProperty.setProductId(product.getId()); From 8b90a3be2ed45eb8f521a338404cccbdfae3a31b Mon Sep 17 00:00:00 2001 From: EugenyCh Date: Sun, 9 Feb 2020 01:09:26 +1000 Subject: [PATCH 8/9] No way to add blank product names. Identical product names are not duplicated in the same list; instead, the quantity of this product is added (+1). --- .../main/java/com/button/model/entity/ProductProperty.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/button/src/main/java/com/button/model/entity/ProductProperty.java b/button/src/main/java/com/button/model/entity/ProductProperty.java index c432b24..a5719a3 100644 --- a/button/src/main/java/com/button/model/entity/ProductProperty.java +++ b/button/src/main/java/com/button/model/entity/ProductProperty.java @@ -19,11 +19,11 @@ public class ProductProperty { @JoinColumn(name = "product_list_id", referencedColumnName = "id") private ProductList productList; - private Float quantity; + private Float quantity = 1.0f; - private Boolean state; + private Boolean state = false; - private String units; + private String units = "шт"; public ProductProperty() {} From cdfedca86d7b2ef58906f963b2191bd19e29eeec Mon Sep 17 00:00:00 2001 From: Eugeny2019 <48202781+Eugeny2019@users.noreply.github.com> Date: Sun, 9 Feb 2020 08:21:02 +1000 Subject: [PATCH 9/9] Update ListProductsPageController.java idea uncorrectly commited class, updated --- .../ListProductsPageController.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/button/src/main/java/com/button/web/controller/ListProductsPageController.java b/button/src/main/java/com/button/web/controller/ListProductsPageController.java index 4d42c28..3f155bb 100644 --- a/button/src/main/java/com/button/web/controller/ListProductsPageController.java +++ b/button/src/main/java/com/button/web/controller/ListProductsPageController.java @@ -51,11 +51,23 @@ public String addProductToList(@PathVariable("list_id") Integer listId, product = productRepository.save(newProduct); } - ProductProperty productProperty = new ProductProperty(); - productProperty.setProductId(product.getId()); - productProperty.setProductListId(listId); - productPropertyRepository.save(productProperty); + ProductProperty productProperty = new ProductProperty(); + productProperty.setProductId(product.getId()); + productProperty.setProductListId(listId); + //наличие продукта в ProductList увеличивает его количество на 1, копирует остальные данные + Iterable listProducts = productPropertyRepository.findProductsByProductListId(listId); + for (ProductProperty productProperty1: listProducts) { + if (productProperty1.getProduct().getId().intValue() == product.getId().intValue()) { + productProperty.setId(productProperty1.getId()); + productProperty.setQuantity(productProperty1.getQuantity()); + productProperty.setUnits(productProperty1.getUnits()); + productProperty.setState(false); + } + } + + productPropertyRepository.save(productProperty); + } return "redirect:/list_products/" + listId; } }