package org.juxtapose.fxtradingsystem.priceengine;
import java.math.BigDecimal;
import java.util.HashMap;
import org.juxtapose.fxtradingsystem.constants.FXDataConstants;
import org.juxtapose.streamline.util.ISTMEntry;
import org.juxtapose.streamline.util.data.DataType;
import org.juxtapose.streamline.util.data.DataTypeLong;
public class PriceEngineUtil
{
public static HashMap<String, String> getSpotPriceQuery( String inCcy1, String inCcy2 )
{
HashMap<String, String> query = new HashMap<String, String>();
query.put( PriceEngineDataConstants.FIELD_TYPE, PriceEngineDataConstants.STATE_TYPE_PRICE );
query.put( PriceEngineDataConstants.FIELD_INSTRUMENT, PriceEngineDataConstants.STATE_INSTRUMENT_SPOT );
query.put( FXDataConstants.FIELD_CCY1, inCcy1 );
query.put( FXDataConstants.FIELD_CCY2, inCcy2 );
return query;
}
public static HashMap<String, String> getFwdPriceQuery( String inCcy1, String inCcy2, String inPeriod )
{
HashMap<String, String> query = new HashMap<String, String>();
query.put( PriceEngineDataConstants.FIELD_TYPE, PriceEngineDataConstants.STATE_TYPE_PRICE );
query.put( PriceEngineDataConstants.FIELD_INSTRUMENT, PriceEngineDataConstants.STATE_INSTRUMENT_FWD );
query.put( FXDataConstants.FIELD_CCY1, inCcy1 );
query.put( FXDataConstants.FIELD_CCY2, inCcy2 );
query.put( FXDataConstants.FIELD_PERIOD, inPeriod );
return query;
}
public static HashMap<String, String> getSwapPriceQuery( String inCcy1, String inCcy2, String inPeriod1, String inPeriod2 )
{
HashMap<String, String> query = new HashMap<String, String>();
query.put( PriceEngineDataConstants.FIELD_TYPE, PriceEngineDataConstants.STATE_TYPE_PRICE );
query.put( PriceEngineDataConstants.FIELD_INSTRUMENT, PriceEngineDataConstants.STATE_INSTRUMENT_SWAP );
query.put( FXDataConstants.FIELD_CCY1, inCcy1 );
query.put( FXDataConstants.FIELD_CCY2, inCcy2 );
return query;
}
/**
* @param inData
* @return
*/
public static BigDecimal[] getBidAskFromData( ISTMEntry inData )
{
if( inData == null )
return null;
DataType<?> bid = inData.getValue( FXDataConstants.FIELD_BID );
DataType<?> ask = inData.getValue( FXDataConstants.FIELD_ASK );
if( bid == null || ask == null )
return null;
BigDecimal bidVal = (BigDecimal)bid.get();
BigDecimal askVal = (BigDecimal)ask.get();
return new BigDecimal[]{bidVal, askVal};
}
/**
* @param inData
* @return
*/
public static Long getDecimals( ISTMEntry inData )
{
if( inData == null )
return null;
DataTypeLong dec = (DataTypeLong)inData.getValue( FXDataConstants.FIELD_DECIMALS );
if( dec == null )
return null;
return dec.get();
}
}