package org.marketcetera.core.position;
import java.math.BigDecimal;
import java.util.Map;
import org.marketcetera.util.misc.ClassVersion;
import com.google.common.collect.ImmutableMap;
/* $License$ */
/**
* An implementation of IncomingPositionSupport that provides positions from an fixed map.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: ImmutablePositionSupport.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.5.0
*/
@ClassVersion("$Id: ImmutablePositionSupport.java 16154 2012-07-14 16:34:05Z colin $")
public class ImmutablePositionSupport implements IncomingPositionSupport {
private final ImmutableMap<? extends PositionKey<?>, BigDecimal> mPositions;
/**
* Constructor.
*
* @param positions
* a map of positions, cannot be null, cannot have any null keys or values
*/
public ImmutablePositionSupport(Map<? extends PositionKey<?>, BigDecimal> positions) {
mPositions = ImmutableMap.copyOf(positions);
}
@Override
public BigDecimal getIncomingPositionFor(PositionKey<?> key) {
BigDecimal position = mPositions.get(key);
return position != null ? position : BigDecimal.ZERO;
}
@Override
public ImmutableMap<? extends PositionKey<?>, BigDecimal> getIncomingPositions() {
return mPositions;
}
}