svnno****@sourc*****
svnno****@sourc*****
2007年 11月 9日 (金) 18:00:17 JST
Revision: 698 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=698 Author: shinsuke Date: 2007-11-09 18:00:16 +0900 (Fri, 09 Nov 2007) Log Message: ----------- supported zone map. Modified Paths: -------------- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/fee/impl/DefaultDeliveryMethodCalculator.java -------------- next part -------------- Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/fee/impl/DefaultDeliveryMethodCalculator.java =================================================================== --- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/fee/impl/DefaultDeliveryMethodCalculator.java 2007-11-09 08:58:41 UTC (rev 697) +++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/fee/impl/DefaultDeliveryMethodCalculator.java 2007-11-09 09:00:16 UTC (rev 698) @@ -1,9 +1,11 @@ package jp.sf.pal.pompei.fee.impl; import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; import java.util.Map; +import jp.sf.pal.pompei.PompeiConstants; import jp.sf.pal.pompei.exentity.AddressBook; import jp.sf.pal.pompei.exentity.CustomerBasket; import jp.sf.pal.pompei.fee.FeeCalculator; @@ -15,10 +17,57 @@ */ private static final long serialVersionUID = 4448477278188463956L; + private Map<String, BigDecimal> zoneMap; + + private BigDecimal defaultFee; + + private BigDecimal focPrice; + + public DefaultDeliveryMethodCalculator() { + this("0"); + } + + public DefaultDeliveryMethodCalculator(String defaultFee) { + // create zone map + this.zoneMap = new HashMap<String, BigDecimal>(); + + // default fee + this.defaultFee = BigDecimal.valueOf(Double.parseDouble(defaultFee)); + + // foc price + this.focPrice = BigDecimal.valueOf(0); + } + + public DefaultDeliveryMethodCalculator(Map<String, String> zoneMap, + String defaultFee, String focPrice) { + // create zone map + this.zoneMap = new HashMap<String, BigDecimal>(); + for (Map.Entry<String, String> entry : zoneMap.entrySet()) { + this.zoneMap.put(entry.getKey(), BigDecimal.valueOf(Double + .parseDouble(entry.getValue()))); + } + + // default fee + this.defaultFee = BigDecimal.valueOf(Double.parseDouble(defaultFee)); + + // foc price + this.focPrice = BigDecimal.valueOf(Double.parseDouble(focPrice)); + } + public BigDecimal calculate(List<CustomerBasket> list, AddressBook deliveryAddressBook, Map<String, Object> informationMap) { - // TODO - return new BigDecimal(1000); + BigDecimal fee = defaultFee; + if (zoneMap.get(deliveryAddressBook.getState()) != null) { + fee = zoneMap.get(deliveryAddressBook.getState()); + } + + BigDecimal subTotalPrice = (BigDecimal) informationMap + .get(PompeiConstants.SUB_TOTAL_PRICE); + if (subTotalPrice != null && subTotalPrice.compareTo(focPrice) >= 0) { + return BigDecimal.valueOf(0); + } + + return fee; } }