task2/solution09/src/org/apidesign/apifest08/currency/ConvertorFactory.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 01 Oct 2008 10:43:05 +0200
changeset 29 f6073056b9fe
parent 6 task1/solution09/src/org/apidesign/apifest08/currency/ConvertorFactory.java@97662396c0fd
permissions -rw-r--r--
Getting ready for task2: copying all solutions to new locations
     1 package org.apidesign.apifest08.currency;
     2 
     3 import java.math.BigDecimal;
     4 
     5 
     6 public class ConvertorFactory {
     7 
     8     public static Convertor getConvertor(CurrencyType from, CurrencyType to) {
     9         if (from == CurrencyType.CZK && to == CurrencyType.USD) {
    10              return new BasicConvertor(new BigDecimal(17));
    11         } else if (from == CurrencyType.SKK && to == CurrencyType.CZK) {
    12             double rate = 0.8d;
    13             return new BasicConvertor(new BigDecimal(rate));
    14         }
    15 
    16 
    17         throw new UnsupportedOperationException("Conversion not supported now");
    18     }
    19 
    20     private static class BasicConvertor implements Convertor {
    21 
    22         private final BigDecimal conversionRate;
    23 
    24         BasicConvertor(BigDecimal conversionRate) {
    25             this.conversionRate = conversionRate;
    26         }
    27 
    28         @Override
    29         public long convertTo(long amount) {
    30             return (long) (conversionRate.doubleValue() * amount);
    31         }
    32 
    33         @Override
    34         public long convertFrom(long amount) {
    35             return (long) (amount / conversionRate.doubleValue());
    36         }
    37     }
    38 }