package com.dgex.offspring.application.utils; import java.util.List; import org.apache.log4j.Logger; import com.dgex.offspring.providers.bitcoinaverage.TickerAllProvider; import com.dgex.offspring.providers.dgex.DGEXCurrentRateProvider; import com.dgex.offspring.providers.service.Currencies; import com.dgex.offspring.providers.service.ICurrency; import com.dgex.offspring.providers.service.IRate; import com.dgex.offspring.providers.service.IRateProvider; public class ExchangeRates { private static final Logger logger = Logger.getLogger(ExchangeRates.class); public static Double convertNxtToBtc(double value) { return value * getRate(DGEXCurrentRateProvider.getInstance(), Currencies.BTC, Currencies.NXT); } public static Double convertNxtToEur(double value) { return convertBtcToEur(convertNxtToBtc(value)); } public static Double convertNxtToDollar(double value) { return convertBtcToDollar(convertNxtToBtc(value)); } public static Double convertEurToBtc(double value) { return value / getRate(TickerAllProvider.getInstance(), Currencies.BTC, Currencies.EUR); } public static Double convertBtcToEur(double value) { return value * getRate(TickerAllProvider.getInstance(), Currencies.EUR, Currencies.BTC); } public static Double convertBtcToDollar(double value) { return value * getRate(TickerAllProvider.getInstance(), Currencies.USD, Currencies.BTC); } private static double getRate(IRateProvider provider, ICurrency base, ICurrency quote) { List<IRate> rates = provider.getRates(base, quote); // logger.info("Rates for " + base + "/" + quote + " " + rates); if (rates != null && !rates.isEmpty()) return rates.get(0).getPrice(); return 0; } }