Skip to content

Commit 07db613

Browse files
Completed coding assignment for JPA Entities
1 parent 67dc233 commit 07db613

File tree

20 files changed

+700
-156
lines changed

20 files changed

+700
-156
lines changed

src/main/java/guru/springframework/bootstrap/SpringJPABootstrap.java

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package guru.springframework.bootstrap;
22

3-
import guru.springframework.domain.Address;
4-
import guru.springframework.domain.Customer;
5-
import guru.springframework.domain.Product;
6-
import guru.springframework.services.CustomerService;
3+
import guru.springframework.domain.*;
4+
import guru.springframework.enums.OrderStatus;
75
import guru.springframework.services.ProductService;
6+
import guru.springframework.services.UserService;
87
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.context.ApplicationListener;
109
import org.springframework.context.event.ContextRefreshedEvent;
1110
import org.springframework.stereotype.Component;
1211

1312
import java.math.BigDecimal;
13+
import java.util.List;
1414

1515
/**
1616
* Created by jt on 12/9/15.
@@ -19,26 +19,64 @@
1919
public class SpringJPABootstrap implements ApplicationListener<ContextRefreshedEvent>{
2020

2121
private ProductService productService;
22-
private CustomerService customerService;
22+
private UserService userService;
2323

2424
@Autowired
2525
public void setProductService(ProductService productService) {
2626
this.productService = productService;
2727
}
2828

2929
@Autowired
30-
public void setCustomerService(CustomerService customerService) {
31-
this.customerService = customerService;
30+
public void setUserService(UserService userService) {
31+
this.userService = userService;
3232
}
3333

3434
@Override
3535
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
3636
loadProducts();
37-
loadCustomers();
37+
loadUsersAndCustomers();
38+
loadCarts();
39+
loadOrderHistory();
3840

3941
}
4042

41-
public void loadCustomers() {
43+
private void loadOrderHistory() {
44+
List<User> users = (List<User>) userService.listAll();
45+
List<Product> products = (List<Product>) productService.listAll();
46+
47+
users.forEach(user ->{
48+
Order order = new Order();
49+
order.setCustomer(user.getCustomer());
50+
order.setOrderStatus(OrderStatus.SHIPPED);
51+
52+
products.forEach(product -> {
53+
OrderDetail orderDetail = new OrderDetail();
54+
orderDetail.setProduct(product);
55+
orderDetail.setQuantity(1);
56+
order.addToOrderDetails(orderDetail);
57+
});
58+
});
59+
}
60+
61+
private void loadCarts() {
62+
List<User> users = (List<User>) userService.listAll();
63+
List<Product> products = (List<Product>) productService.listAll();
64+
65+
users.forEach(user -> {
66+
user.setCart(new Cart());
67+
CartDetail cartDetail = new CartDetail();
68+
cartDetail.setProduct(products.get(0));
69+
cartDetail.setQuantity(2);
70+
user.getCart().addCartDetail(cartDetail);
71+
userService.saveOrUpdate(user);
72+
});
73+
}
74+
75+
public void loadUsersAndCustomers() {
76+
User user1 = new User();
77+
user1.setUsername("mweston");
78+
user1.setPassword("password");
79+
4280
Customer customer1 = new Customer();
4381
customer1.setFirstName("Micheal");
4482
customer1.setLastName("Weston");
@@ -49,7 +87,12 @@ public void loadCustomers() {
4987
customer1.getBillingAddress().setZipCode("33101");
5088
customer1.setEmail("[email protected]");
5189
customer1.setPhoneNumber("305.333.0101");
52-
customerService.saveOrUpdate(customer1);
90+
user1.setCustomer(customer1);
91+
userService.saveOrUpdate(user1);
92+
93+
User user2 = new User();
94+
user2.setUsername("fglenanne");
95+
user2.setPassword("password");
5396

5497
Customer customer2 = new Customer();
5598
customer2.setFirstName("Fiona");
@@ -61,8 +104,12 @@ public void loadCustomers() {
61104
customer2.getBillingAddress().setZipCode("33101");
62105
customer2.setEmail("[email protected]");
63106
customer2.setPhoneNumber("305.323.0233");
64-
customerService.saveOrUpdate(customer2);
107+
user2.setCustomer(customer2);
108+
userService.saveOrUpdate(user2);
65109

110+
User user3 = new User();
111+
user3.setUsername("saxe");
112+
user3.setPassword("password");
66113
Customer customer3 = new Customer();
67114
customer3.setFirstName("Sam");
68115
customer3.setLastName("Axe");
@@ -73,7 +120,9 @@ public void loadCustomers() {
73120
customer3.getBillingAddress().setZipCode("33101");
74121
customer3.setEmail("[email protected]");
75122
customer3.setPhoneNumber("305.426.9832");
76-
customerService.saveOrUpdate(customer3);
123+
124+
user3.setCustomer(customer3);
125+
userService.saveOrUpdate(user3);
77126
}
78127

79128
public void loadProducts(){
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package guru.springframework.controllers;
2+
3+
import guru.springframework.domain.User;
4+
import guru.springframework.services.UserService;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Controller;
7+
import org.springframework.ui.Model;
8+
import org.springframework.web.bind.annotation.PathVariable;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RequestMethod;
11+
12+
/**
13+
* Created by jt on 12/17/15.
14+
*/
15+
@Controller
16+
@RequestMapping("/user")
17+
public class UserController {
18+
19+
private UserService userService;
20+
21+
@Autowired
22+
public void setUserService(UserService userService) {
23+
this.userService = userService;
24+
}
25+
26+
@RequestMapping({"/list", "/"})
27+
public String listUsers(Model model){
28+
model.addAttribute("users", userService.listAll());
29+
return "user/list";
30+
}
31+
32+
@RequestMapping("/show/{id}")
33+
public String getUser(@PathVariable Integer id, Model model){
34+
model.addAttribute("user", userService.getById(id));
35+
return "user/show";
36+
}
37+
38+
@RequestMapping("/edit/{id}")
39+
public String edit(@PathVariable Integer id, Model model){
40+
model.addAttribute("user", userService.getById(id));
41+
return "user/userform";
42+
}
43+
44+
@RequestMapping("/new")
45+
public String newUser(Model model){
46+
model.addAttribute("user", new User());
47+
return "user/userform";
48+
}
49+
50+
@RequestMapping(value = "/", method = RequestMethod.POST)
51+
public String saveOrUpdate(User user){
52+
User savedUser = userService.saveOrUpdate(user);
53+
return "redirect:/user/show/" + savedUser.getId();
54+
}
55+
56+
@RequestMapping("/delete/{id}")
57+
public String delete(@PathVariable Integer id){
58+
userService.delete(id);
59+
return "redirect:/user/list";
60+
}
61+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package guru.springframework.domain;
2+
3+
import javax.persistence.*;
4+
import java.util.Date;
5+
6+
/**
7+
* Created by jt on 12/16/15.
8+
*/
9+
@MappedSuperclass
10+
public class AbstractDomainClass implements DomainObject {
11+
12+
@Id
13+
@GeneratedValue(strategy = GenerationType.AUTO)
14+
Integer id;
15+
16+
@Version
17+
private Integer version;
18+
19+
private Date dateCreated;
20+
private Date lastUpdated;
21+
22+
@Override
23+
public Integer getId() {
24+
return this.id;
25+
}
26+
27+
@Override
28+
public void setId(Integer id) {
29+
this.id = id;
30+
}
31+
32+
public Integer getVersion() {
33+
return version;
34+
}
35+
36+
public void setVersion(Integer version) {
37+
this.version = version;
38+
}
39+
40+
public Date getDateCreated() {
41+
return dateCreated;
42+
}
43+
44+
public Date getLastUpdated() {
45+
return lastUpdated;
46+
}
47+
48+
@PreUpdate
49+
@PrePersist
50+
public void updateTimeStamps() {
51+
lastUpdated = new Date();
52+
if (dateCreated==null) {
53+
dateCreated = new Date();
54+
}
55+
}
56+
}

src/main/java/guru/springframework/domain/Cart.java

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,24 @@
11
package guru.springframework.domain;
22

3-
import javax.persistence.*;
3+
import javax.persistence.CascadeType;
4+
import javax.persistence.Entity;
5+
import javax.persistence.OneToMany;
6+
import javax.persistence.OneToOne;
47
import java.util.ArrayList;
58
import java.util.List;
69

710
/**
811
* Created by jt on 12/15/15.
912
*/
1013
@Entity
11-
public class Cart implements DomainObject{
12-
13-
@Id
14-
@GeneratedValue(strategy = GenerationType.AUTO)
15-
private Integer id;
16-
17-
@Version
18-
private Integer version;
14+
public class Cart extends AbstractDomainClass{
1915

2016
@OneToOne
2117
private User user;
2218

2319
@OneToMany(cascade = CascadeType.ALL, mappedBy = "cart", orphanRemoval = true)
2420
private List<CartDetail> cartDetails = new ArrayList<>();
2521

26-
@Override
27-
public Integer getId() {
28-
return id;
29-
}
30-
31-
@Override
32-
public void setId(Integer id) {
33-
this.id = id;
34-
}
35-
36-
public Integer getVersion() {
37-
return version;
38-
}
39-
40-
public void setVersion(Integer version) {
41-
this.version = version;
42-
}
43-
4422
public User getUser() {
4523
return user;
4624
}
Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,22 @@
11
package guru.springframework.domain;
22

3-
import javax.persistence.*;
3+
import javax.persistence.Entity;
4+
import javax.persistence.ManyToOne;
5+
import javax.persistence.OneToOne;
46

57
/**
68
* Created by jt on 12/15/15.
79
*/
810
@Entity
9-
public class CartDetail implements DomainObject {
10-
11-
@Id
12-
@GeneratedValue(strategy = GenerationType.AUTO)
13-
private Integer id;
14-
15-
@Version
16-
private Integer version;
11+
public class CartDetail extends AbstractDomainClass {
1712

1813
@ManyToOne
1914
private Cart cart;
2015

2116
@OneToOne
2217
private Product product;
2318

24-
@Override
25-
public Integer getId() {
26-
return id;
27-
}
28-
29-
@Override
30-
public void setId(Integer id) {
31-
this.id = id;
32-
}
33-
34-
public Integer getVersion() {
35-
return version;
36-
}
37-
38-
public void setVersion(Integer version) {
39-
this.version = version;
40-
}
19+
private Integer quantity;
4120

4221
public Cart getCart() {
4322
return cart;
@@ -54,4 +33,12 @@ public Product getProduct() {
5433
public void setProduct(Product product) {
5534
this.product = product;
5635
}
36+
37+
public Integer getQuantity() {
38+
return quantity;
39+
}
40+
41+
public void setQuantity(Integer quantity) {
42+
this.quantity = quantity;
43+
}
5744
}

0 commit comments

Comments
 (0)