View Javadoc

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   * @author Torsten Strasser
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  //            Cart cart = getCart(response.getCart().get(0).getCartId(), response.getCart().get(0).getHMAC());
75  //            
76  //            CartItem cartItem = cart.getCartItems().getCartItem().get(0);
77  //            cartItem.setQuantity("0");
78  //
79  //            cart = modifyCart(cart);
80  
81              return cart;
82          } catch (IOException e) {
83              //TODO: Check error message
84              //response.getOperationRequest().getErrors().getError().get(0).getMessage();
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 }