1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.ibatis.jpetstore.service;
18
19 import com.ibatis.dao.client.DaoManager;
20 import com.ibatis.jpetstore.domain.LineItem;
21 import com.ibatis.jpetstore.domain.Order;
22 import com.ibatis.jpetstore.persistence.DaoConfig;
23 import com.ibatis.jpetstore.persistence.iface.ItemDao;
24 import com.ibatis.jpetstore.persistence.iface.OrderDao;
25 import com.ibatis.jpetstore.persistence.iface.SequenceDao;
26 import com.ibatis.common.util.PaginatedList;
27
28 /***
29 * <p/>
30 * Date: Mar 6, 2004 11:22:36 PM
31 *
32 * @author Clinton Begin
33 */
34 public class OrderService {
35
36
37
38 private static final OrderService instance = new OrderService();
39
40
41
42 private DaoManager daoManager = DaoConfig.getDaomanager();
43
44 private ItemDao itemDao;
45 private OrderDao orderDao;
46 private SequenceDao sequenceDao;
47
48
49
50 public OrderService() {
51 itemDao = (ItemDao) daoManager.getDao(ItemDao.class);
52 sequenceDao = (SequenceDao) daoManager.getDao(SequenceDao.class);
53 orderDao = (OrderDao) daoManager.getDao(OrderDao.class);
54 }
55
56
57
58 public static OrderService getInstance() {
59 return instance;
60 }
61
62
63
64 public void insertOrder(Order order) {
65 try {
66
67 order.setOrderId(getNextId("ordernum"));
68
69 daoManager.startTransaction();
70
71 itemDao.updateQuantity(order);
72 orderDao.insertOrder(order);
73
74 daoManager.commitTransaction();
75 } finally {
76 daoManager.endTransaction();
77 }
78 }
79
80 public Order getOrder(int orderId) {
81 Order order = null;
82
83 try {
84 daoManager.startTransaction();
85
86 order = orderDao.getOrder(orderId);
87
88 for (int i = 0; i < order.getLineItems().size(); i++) {
89 LineItem lineItem = (LineItem) order.getLineItems().get(i);
90 lineItem.setItem(itemDao.getItem(lineItem.getItemId()));
91 }
92
93 daoManager.commitTransaction();
94 } finally {
95 daoManager.endTransaction();
96 }
97
98 return order;
99 }
100
101 public PaginatedList getOrdersByUsername(String username) {
102 return orderDao.getOrdersByUsername(username);
103 }
104
105
106
107 public synchronized int getNextId(String key) {
108 return sequenceDao.getNextId(key);
109 }
110
111
112 }