All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.oxerr.okcoin.xchange.service.fix.OKCoinFIXAdapters Maven / Gradle / Ivy

package org.oxerr.okcoin.xchange.service.fix;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.knowm.xchange.currency.Currency;
import org.knowm.xchange.currency.CurrencyPair;
import org.knowm.xchange.dto.account.AccountInfo;
import org.knowm.xchange.dto.account.Balance;
import org.knowm.xchange.dto.account.Wallet;
import org.oxerr.okcoin.fix.fix44.AccountInfoResponse;

import quickfix.FieldNotFound;
import quickfix.Message;

/**
 * Various adapters for converting from {@link Message} to XChange DTOs.
 */
public final class OKCoinFIXAdapters {

	private OKCoinFIXAdapters() {
	}

	public static String adaptSymbol(CurrencyPair currencyPair) {
		return String.format("%s/%s", currencyPair.base.getCurrencyCode(), currencyPair.counter.getCurrencyCode());
	}

	public static CurrencyPair adaptCurrencyPair(String symbol) {
		String[] symbols = symbol.split("/");
		CurrencyPair currencyPair = new CurrencyPair(symbols[0], symbols[1]);
		return currencyPair;
	}

	public static AccountInfo adaptAccountInfo(AccountInfoResponse message)
			throws FieldNotFound {
		final String[] currencies = message.getCurrency().getValue().split("/");
		final String[] balances = message.getBalance().getValue().split("/");

		final int walletCount = currencies.length;
		final List balanceList = new ArrayList<>(walletCount);

		for (int i = 0; i < walletCount; i++) {
			final String currency = currencies[i];
			final BigDecimal available = new BigDecimal(balances[i]);
			final Balance balance = new Balance(Currency.getInstance(currency), available, available);
			balanceList.add(balance);
		}

		final Wallet wallet = new Wallet(balanceList);
		return new AccountInfo(wallet);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy