View Javadoc

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   * @author Torsten Strasser
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          //Not very sophisticated implementation. works only for euro & dollar (likely)
26          //But as this conversion is usually not used it is no problem.
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  }