1 package de.orangecafe.amazonrcp.service.impl;
2
3 import java.util.List;
4 import java.io.IOException;
5 import java.math.BigInteger;
6
7 import de.orangecafe.amazonrcp.service.IAmazonService;
8 import de.orangecafe.amazonrcp.service.ServiceException;
9
10 import com.amazon.webservices.awsecommerceservice._2007_04_04.*;
11 import org.springframework.ws.client.core.WebServiceTemplate;
12 import org.springframework.context.ApplicationContextAware;
13 import org.springframework.context.ApplicationContext;
14
15
16
17
18 public class AmazonWebServiceImpl implements IAmazonService, ApplicationContextAware {
19 private final static String DUMMY_ASIN = "3836409291";
20
21 private WebServiceTemplate _service;
22 private ApplicationContext _context;
23
24 public void setService(final WebServiceTemplate service) {
25 _service = service;
26 }
27
28 public void setApplicationContext(final ApplicationContext context) {
29 _context = context;
30 }
31
32 public Items search(final ItemSearchRequest itemSearchRequest) throws ServiceException {
33 itemSearchRequest.getResponseGroup().add("ItemAttributes");
34 itemSearchRequest.getResponseGroup().add("Large");
35 itemSearchRequest.getResponseGroup().add("Small");
36 itemSearchRequest.getResponseGroup().add("OfferSummary");
37 itemSearchRequest.getResponseGroup().add("Images");
38
39 ItemSearch itemSearch = (ItemSearch) _context.getBean("itemSearch");
40 itemSearch.getRequest().add(itemSearchRequest);
41
42 try {
43 ItemSearchResponse response = (ItemSearchResponse) _service.marshalSendAndReceive(itemSearch);
44 List<Items> itemsList = response.getItems();
45
46 return itemsList.get(0);
47 } catch (IOException e) {
48 throw new ServiceException(e.getMessage());
49 }
50 }
51
52 public Cart createCart() throws ServiceException {
53 CartCreateRequest request = (CartCreateRequest) _context.getBean("cartCreateRequest");
54 request.getResponseGroup().add("Cart");
55
56 CartCreateRequest.Items items = (CartCreateRequest.Items) _context.getBean("cartCreateRequestItems");
57 CartCreateRequest.Items.Item cartRequestItem = (CartCreateRequest.Items.Item) _context.getBean("cartCreateRequestItemsItem");
58
59 cartRequestItem.setASIN(DUMMY_ASIN);
60 cartRequestItem.setQuantity(BigInteger.ONE);
61
62 items.getItem().add(cartRequestItem);
63
64 request.setItems(items);
65
66 CartCreate cartCreate = (CartCreate) _context.getBean("cartCreate");
67 cartCreate.getRequest().add(request);
68
69 try {
70 CartCreateResponse response = (CartCreateResponse) _service.marshalSendAndReceive(cartCreate);
71
72 Cart cart = response.getCart().get(0);
73
74
75
76
77
78
79
80
81 return cart;
82 } catch (IOException e) {
83
84
85 throw new ServiceException(e.getMessage());
86 }
87 }
88
89 public Cart getCart(final String cartId, final String hmac) throws ServiceException {
90 CartGetRequest request = (CartGetRequest) _context.getBean("cartGetRequest");
91 request.setCartId(cartId);
92 request.setHMAC(hmac);
93 request.getResponseGroup().add("Cart");
94
95 CartGet cartGet = (CartGet) _context.getBean("cartGet");
96 cartGet.getRequest().add(request);
97
98 try {
99 CartGetResponse response = (CartGetResponse) _service.marshalSendAndReceive(cartGet);
100 List<Cart> cartList = response.getCart();
101
102 return cartList.get(0);
103 } catch (IOException e) {
104 throw new ServiceException(e.getMessage());
105 }
106 }
107
108 public Cart modifyCart(final Cart cart) throws ServiceException {
109 CartModifyRequest request = (CartModifyRequest) _context.getBean("cartModifyRequest");
110 request.getResponseGroup().add("Cart");
111 request.setCartId(cart.getCartId());
112 request.setHMAC(cart.getHMAC());
113
114 CartModifyRequest.Items cartModifyRequestItems = (CartModifyRequest.Items) _context.getBean("cartModifyRequestItems");
115
116 List<CartItem> cartItemList = cart.getCartItems().getCartItem();
117 List<CartModifyRequest.Items.Item> cartModifyRequestItemList = cartModifyRequestItems.getItem();
118 for (CartItem cartItem : cartItemList) {
119 CartModifyRequest.Items.Item item = (CartModifyRequest.Items.Item) _context.getBean("createCartModifyRequestItemsItem");
120
121 item.setCartItemId(cartItem.getCartItemId());
122 item.setQuantity(new BigInteger(cartItem.getQuantity()));
123
124 cartModifyRequestItemList.add(item);
125 }
126
127 request.setItems(cartModifyRequestItems);
128
129 CartModify cartModify = (CartModify) _context.getBean("cartModify");
130 cartModify.getRequest().add(request);
131
132 try {
133 CartModifyResponse response = (CartModifyResponse) _service.marshalSendAndReceive(cartModify);
134 List<Cart> cartList = response.getCart();
135
136 return cartList.get(0);
137 } catch (IOException e) {
138 throw new ServiceException(e.getMessage());
139 }
140 }
141
142 public void addToCart(final String cartId, final String hmac, final List<Item> items) throws ServiceException {
143 CartAddRequest request = (CartAddRequest) _context.getBean("cartAddRequest");
144 request.getResponseGroup().add("Cart");
145 request.setCartId(cartId);
146 request.setHMAC(hmac);
147
148 CartAddRequest.Items cartAddRequestItems = (CartAddRequest.Items) _context.getBean("cartAddRequestItems");
149
150 for (Item item : items) {
151 CartAddRequest.Items.Item cartAddRequestItem = (CartAddRequest.Items.Item) _context.getBean("cartAddRequestItemsItem");
152 cartAddRequestItem.setASIN(item.getASIN());
153 cartAddRequestItem.setQuantity(BigInteger.ONE);
154
155 cartAddRequestItems.getItem().add(cartAddRequestItem);
156 }
157
158 request.setItems(cartAddRequestItems);
159
160 CartAdd cartAdd = (CartAdd) _context.getBean("cartAdd");
161 cartAdd.getRequest().add(request);
162
163 try {
164 CartAddResponse response = (CartAddResponse) _service.marshalSendAndReceive(cartAdd);
165 List<Cart> cartList = response.getCart();
166 } catch (IOException e) {
167 throw new ServiceException(e.getMessage());
168 }
169 }
170
171 public void clearCart(final String cartId, final String hmac) throws ServiceException {
172 CartClearRequest request = (CartClearRequest) _context.getBean("cartClearRequest");
173 request.getResponseGroup().add("Cart");
174 request.setCartId(cartId);
175 request.setHMAC(hmac);
176
177 CartClear cartClear = (CartClear) _context.getBean("cartClear");
178 cartClear.getRequest().add(request);
179
180 try {
181 CartClearResponse response = (CartClearResponse) _service.marshalSendAndReceive(cartClear);
182 } catch (IOException e) {
183 throw new ServiceException(e.getMessage());
184 }
185 }
186 }