1 package de.orangecafe.amazonrcp.converter;
2
3 import org.springframework.binding.convert.support.AbstractConverter;
4 import org.springframework.binding.convert.ConversionContext;
5 import org.springframework.binding.convert.ConversionException;
6 import org.springframework.richclient.application.Application;
7 import com.amazon.webservices.awsecommerceservice._2007_04_04.Price;
8
9 import java.math.BigInteger;
10
11
12
13
14 public class StringToPriceConverter extends AbstractConverter {
15 protected Object doConvert(final Object source, final Class targetClass, final ConversionContext conversionContext) throws Exception {
16 String priceString = (String) source;
17
18 Price price = (Price) Application.instance().getApplicationContext().getBean("price");
19 String[] parts = priceString.split(" ");
20
21 long amount = Long.parseLong(parts[0]);
22
23 price.setAmount(BigInteger.valueOf(amount * 100));
24
25
26
27 if (parts[1].equals("€")) {
28 price.setCurrencyCode("EUR");
29 } else if (parts[1].equals("$")) {
30 price.setCurrencyCode("USD");
31 } else {
32 throw new ConversionException("Unsupported currency symbol: " + parts[1], null);
33 }
34
35 return price;
36 }
37
38 public Class[] getSourceClasses() {
39 return new Class[] { String.class };
40 }
41
42 public Class[] getTargetClasses() {
43 return new Class[] { Price.class };
44 }
45 }