Skip to content

Commit 706c7f4

Browse files
Merge branch 'spring-mvc-command-obj-code-assignment-review' into spring-sec-maven-dep
2 parents 4c1e59d + 1d3c6d2 commit 706c7f4

File tree

11 files changed

+122
-94
lines changed

11 files changed

+122
-94
lines changed

src/main/java/guru/springframework/controllers/CustomerController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import guru.springframework.commands.CustomerForm;
44
import guru.springframework.commands.validators.CustomerFormValidator;
5+
import guru.springframework.converters.CustomerToCustomerForm;
56
import guru.springframework.domain.Customer;
67
import guru.springframework.services.CustomerService;
78
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +27,7 @@ public class CustomerController {
2627

2728
private CustomerService customerService;
2829
private Validator customerFormValidator;
30+
private CustomerToCustomerForm customerToCustomerForm;
2931

3032
@Autowired
3133
public void setCustomerService(CustomerService customerService) {
@@ -38,6 +40,11 @@ public void setCustomerFormValidator(CustomerFormValidator customerFormValidator
3840
this.customerFormValidator = customerFormValidator;
3941
}
4042

43+
@Autowired
44+
public void setCustomerToCustomerForm(CustomerToCustomerForm customerToCustomerForm) {
45+
this.customerToCustomerForm = customerToCustomerForm;
46+
}
47+
4148
@RequestMapping({"/list", "/"})
4249
public String listCustomers(Model model){
4350
model.addAttribute("customers", customerService.listAll());
@@ -52,7 +59,10 @@ public String showCustomer(@PathVariable Integer id, Model model){
5259

5360
@RequestMapping("/edit/{id}")
5461
public String edit(@PathVariable Integer id, Model model){
55-
model.addAttribute("customerForm", customerService.getById(id));
62+
63+
Customer customer = customerService.getById(id);
64+
65+
model.addAttribute("customerForm", customerToCustomerForm.convert(customer));
5666
return "customer/customerform";
5767
}
5868

src/main/java/guru/springframework/controllers/ProductController.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package guru.springframework.controllers;
22

33
import guru.springframework.commands.ProductForm;
4+
import guru.springframework.converters.ProductToProductForm;
45
import guru.springframework.domain.Product;
56
import guru.springframework.services.ProductService;
67
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,13 @@ public class ProductController {
2122

2223
private ProductService productService;
2324

25+
private ProductToProductForm productToProductForm;
26+
27+
@Autowired
28+
public void setProductToProductForm(ProductToProductForm productToProductForm) {
29+
this.productToProductForm = productToProductForm;
30+
}
31+
2432
@Autowired
2533
public void setProductService(ProductService productService) {
2634
this.productService = productService;
@@ -40,25 +48,28 @@ public String getProduct(@PathVariable Integer id, Model model){
4048

4149
@RequestMapping("product/edit/{id}")
4250
public String edit(@PathVariable Integer id, Model model){
43-
model.addAttribute("productForm", productService.getById(id));
51+
Product product = productService.getById(id);
52+
ProductForm productForm = productToProductForm.convert(product);
53+
54+
model.addAttribute("productForm", productForm);
4455
return "product/productform";
4556
}
4657

4758
@RequestMapping("/product/new")
4859
public String newProduct(Model model){
49-
model.addAttribute("productForm", new Product());
60+
model.addAttribute("productForm", new ProductForm());
5061
return "product/productform";
5162
}
5263

5364
@RequestMapping(value = "/product", method = RequestMethod.POST)
5465
public String saveOrUpdateProduct(@Valid ProductForm productForm, BindingResult bindingResult){
5566

56-
5767
if(bindingResult.hasErrors()){
5868
return "product/productform";
5969
}
6070

61-
ProductForm savedProduct = productService.saveOrUpdate(productForm);
71+
Product savedProduct = productService.saveOrUpdateProductForm(productForm);
72+
6273
return "redirect:/product/show/" + savedProduct.getId();
6374
}
6475

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package guru.springframework.converters;
2+
3+
import guru.springframework.commands.CustomerForm;
4+
import guru.springframework.domain.Customer;
5+
import org.springframework.core.convert.converter.Converter;
6+
import org.springframework.stereotype.Component;
7+
8+
/**
9+
* Created by jt on 9/26/16.
10+
*/
11+
@Component
12+
public class CustomerToCustomerForm implements Converter<Customer, CustomerForm> {
13+
14+
@Override
15+
public CustomerForm convert(Customer customer) {
16+
CustomerForm customerForm = new CustomerForm();
17+
18+
customerForm.setCustomerId(customer.getId());
19+
customerForm.setCustomerVersion(customer.getVersion());
20+
customerForm.setEmail(customer.getEmail());
21+
customerForm.setFirstName(customer.getFirstName());
22+
customerForm.setLastName(customer.getLastName());
23+
customerForm.setPhoneNumber(customer.getPhoneNumber());
24+
customerForm.setUserId(customer.getUser().getId());
25+
customerForm.setUserName(customer.getUser().getUsername());
26+
customerForm.setUserVersion(customer.getUser().getVersion());
27+
28+
return customerForm;
29+
}
30+
}

src/main/java/guru/springframework/services/ProductService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
*/
99
public interface ProductService extends CRUDService<Product> {
1010

11-
ProductForm saveOrUpdate(ProductForm productForm);
11+
Product saveOrUpdateProductForm(ProductForm productForm);
1212

1313
}

src/main/java/guru/springframework/services/jpaservices/ProductServiceJpaDaoImpl.java

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import guru.springframework.commands.ProductForm;
44
import guru.springframework.converters.ProductFormToProduct;
5-
import guru.springframework.converters.ProductToProductForm;
65
import guru.springframework.domain.Product;
76
import guru.springframework.services.ProductService;
87
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,14 +18,8 @@
1918
@Profile("jpadao")
2019
public class ProductServiceJpaDaoImpl extends AbstractJpaDaoService implements ProductService {
2120

22-
private ProductToProductForm productToProductForm;
2321
private ProductFormToProduct productFormToProduct;
2422

25-
@Autowired
26-
public void setProductToProductForm(ProductToProductForm productToProductForm) {
27-
this.productToProductForm = productToProductForm;
28-
}
29-
3023
@Autowired
3124
public void setProductFormToProduct(ProductFormToProduct productFormToProduct) {
3225
this.productFormToProduct = productFormToProduct;
@@ -58,20 +51,8 @@ public Product saveOrUpdate(Product domainObject) {
5851
}
5952

6053
@Override
61-
public ProductForm saveOrUpdate(ProductForm productForm) {
62-
63-
if (productForm.getId() != null) { //existing product
64-
Product productToUpdate = this.getById(productForm.getId());
65-
66-
productToUpdate.setVersion(productForm.getVersion());
67-
productToUpdate.setDescription(productForm.getDescription());
68-
productToUpdate.setPrice(productForm.getPrice());
69-
productToUpdate.setImageUrl(productForm.getImageUrl());
70-
71-
return productToProductForm.convert(this.saveOrUpdate(productToUpdate));
72-
} else { // new product
73-
return productToProductForm.convert(this.saveOrUpdate(productFormToProduct.convert(productForm)));
74-
}
54+
public Product saveOrUpdateProductForm(ProductForm productForm) {
55+
return saveOrUpdate(productFormToProduct.convert(productForm));
7556
}
7657

7758
@Override

src/main/java/guru/springframework/services/mapservices/ProductServiceImpl.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import guru.springframework.commands.ProductForm;
44
import guru.springframework.converters.ProductFormToProduct;
5-
import guru.springframework.converters.ProductToProductForm;
65
import guru.springframework.domain.DomainObject;
76
import guru.springframework.domain.Product;
87
import guru.springframework.services.ProductService;
@@ -19,19 +18,14 @@
1918
@Profile("map")
2019
public class ProductServiceImpl extends AbstractMapService implements ProductService {
2120

22-
private ProductToProductForm productToProductForm;
2321
private ProductFormToProduct productFormToProduct;
2422

25-
@Autowired
26-
public void setProductToProductForm(ProductToProductForm productToProductForm) {
27-
this.productToProductForm = productToProductForm;
28-
}
29-
3023
@Autowired
3124
public void setProductFormToProduct(ProductFormToProduct productFormToProduct) {
3225
this.productFormToProduct = productFormToProduct;
3326
}
3427

28+
3529
@Override
3630
public List<DomainObject> listAll() {
3731
return super.listAll();
@@ -48,19 +42,8 @@ public Product saveOrUpdate(Product domainObject) {
4842
}
4943

5044
@Override
51-
public ProductForm saveOrUpdate(ProductForm productForm) {
52-
if(productForm.getId() != null){ //existing product
53-
Product productToUpdate = this.getById(productForm.getId());
54-
55-
productToUpdate.setVersion(productForm.getVersion());
56-
productToUpdate.setDescription(productForm.getDescription());
57-
productToUpdate.setPrice(productForm.getPrice());
58-
productToUpdate.setImageUrl(productForm.getImageUrl());
59-
60-
return productToProductForm.convert(this.saveOrUpdate(productToUpdate));
61-
} else { // new product
62-
return productToProductForm.convert(this.saveOrUpdate(productFormToProduct.convert(productForm)));
63-
}
45+
public Product saveOrUpdateProductForm(ProductForm productForm) {
46+
return saveOrUpdate(productFormToProduct.convert(productForm));
6447
}
6548

6649
@Override

src/main/java/guru/springframework/services/reposervices/CustomerServiceRepoImpl.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import guru.springframework.converters.CustomerFormToCustomer;
55
import guru.springframework.domain.Customer;
66
import guru.springframework.repositories.CustomerRepository;
7+
import guru.springframework.repositories.UserRepository;
78
import guru.springframework.services.CustomerService;
89
import org.springframework.beans.factory.annotation.Autowired;
910
import org.springframework.context.annotation.Profile;
1011
import org.springframework.stereotype.Service;
12+
import org.springframework.transaction.annotation.Transactional;
1113

1214
import java.util.ArrayList;
1315
import java.util.List;
@@ -20,13 +22,19 @@
2022
public class CustomerServiceRepoImpl implements CustomerService {
2123

2224
private CustomerRepository customerRepository;
25+
private UserRepository userRepository;
2326
private CustomerFormToCustomer customerFormToCustomer;
2427

2528
@Autowired
2629
public void setCustomerRepository(CustomerRepository customerRepository) {
2730
this.customerRepository = customerRepository;
2831
}
2932

33+
@Autowired
34+
public void setUserRepository(UserRepository userRepository) {
35+
this.userRepository = userRepository;
36+
}
37+
3038
@Autowired
3139
public void setCustomerFormToCustomer(CustomerFormToCustomer customerFormToCustomer) {
3240
this.customerFormToCustomer = customerFormToCustomer;
@@ -63,7 +71,12 @@ public Customer saveOrUpdateCustomerForm(CustomerForm customerForm) {
6371
}
6472

6573
@Override
74+
@Transactional
6675
public void delete(Integer id) {
67-
customerRepository.delete(id);
76+
77+
Customer customer = customerRepository.findOne(id);
78+
79+
userRepository.delete(customer.getUser());
80+
customerRepository.delete(customer);
6881
}
6982
}

src/main/java/guru/springframework/services/reposervices/ProductServiceRepoImpl.java

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import guru.springframework.commands.ProductForm;
44
import guru.springframework.converters.ProductFormToProduct;
5-
import guru.springframework.converters.ProductToProductForm;
65
import guru.springframework.domain.Product;
76
import guru.springframework.repositories.ProductRepository;
87
import guru.springframework.services.ProductService;
@@ -20,26 +19,18 @@
2019
@Profile({"springdatajpa"})
2120
public class ProductServiceRepoImpl implements ProductService {
2221

23-
private ProductToProductForm productToProductForm;
22+
private ProductRepository productRepository;
2423
private ProductFormToProduct productFormToProduct;
2524

2625
@Autowired
27-
public void setProductToProductForm(ProductToProductForm productToProductForm) {
28-
this.productToProductForm = productToProductForm;
26+
public void setProductRepository(ProductRepository productRepository) {
27+
this.productRepository = productRepository;
2928
}
3029

3130
@Autowired
3231
public void setProductFormToProduct(ProductFormToProduct productFormToProduct) {
3332
this.productFormToProduct = productFormToProduct;
3433
}
35-
36-
private ProductRepository productRepository;
37-
38-
@Autowired
39-
public void setProductRepository(ProductRepository productRepository) {
40-
this.productRepository = productRepository;
41-
}
42-
4334
@Override
4435
public List<?> listAll() {
4536
List<Product> products = new ArrayList<>();
@@ -48,25 +39,13 @@ public List<?> listAll() {
4839
}
4940

5041
@Override
51-
public ProductForm saveOrUpdate(ProductForm productForm) {
52-
53-
if (productForm.getId() != null) { //existing product
54-
Product productToUpdate = this.getById(productForm.getId());
55-
56-
productToUpdate.setVersion(productForm.getVersion());
57-
productToUpdate.setDescription(productForm.getDescription());
58-
productToUpdate.setPrice(productForm.getPrice());
59-
productToUpdate.setImageUrl(productForm.getImageUrl());
60-
61-
return productToProductForm.convert(this.saveOrUpdate(productToUpdate));
62-
} else { // new product
63-
return productToProductForm.convert(this.saveOrUpdate(productFormToProduct.convert(productForm)));
64-
}
42+
public Product getById(Integer id) {
43+
return productRepository.findOne(id);
6544
}
6645

6746
@Override
68-
public Product getById(Integer id) {
69-
return productRepository.findOne(id);
47+
public Product saveOrUpdateProductForm(ProductForm productForm) {
48+
return saveOrUpdate(productFormToProduct.convert(productForm));
7049
}
7150

7251
@Override

src/main/java/guru/springframework/services/reposervices/UserServiceRepoImpl.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package guru.springframework.services.reposervices;
22

33
import guru.springframework.domain.User;
4+
import guru.springframework.repositories.CustomerRepository;
45
import guru.springframework.repositories.UserRepository;
56
import guru.springframework.services.UserService;
67
import org.springframework.beans.factory.annotation.Autowired;
78
import org.springframework.context.annotation.Profile;
89
import org.springframework.stereotype.Service;
10+
import org.springframework.transaction.annotation.Transactional;
911

1012
import java.util.ArrayList;
1113
import java.util.List;
@@ -18,12 +20,18 @@
1820
public class UserServiceRepoImpl implements UserService {
1921

2022
private UserRepository userRepository;
23+
private CustomerRepository customerRepository;
2124

2225
@Autowired
2326
public void setUserRepository(UserRepository userRepository) {
2427
this.userRepository = userRepository;
2528
}
2629

30+
@Autowired
31+
public void setCustomerRepository(CustomerRepository customerRepository) {
32+
this.customerRepository = customerRepository;
33+
}
34+
2735
@Override
2836
public List<?> listAll() {
2937
List<User> users = new ArrayList<>();
@@ -42,7 +50,10 @@ public User saveOrUpdate(User domainObject) {
4250
}
4351

4452
@Override
53+
@Transactional
4554
public void delete(Integer id) {
46-
userRepository.delete(id);
55+
User user = userRepository.findOne(id);
56+
customerRepository.delete(user.getCustomer());
57+
userRepository.delete(user);
4758
}
4859
}

0 commit comments

Comments
 (0)