private List<Portfolio> buildPorfoliosFromRangeSlices(List<KeySlice> kslices) throws Exception
{
List<Portfolio> portfolios = new ArrayList<Portfolio>();
for (KeySlice ks : kslices)
{
Portfolio p = new Portfolio();
p.setName(new String(ks.getKey()));
Map<ByteBuffer, Long> tickerLookup = new HashMap<ByteBuffer, Long>();
List<ByteBuffer> tickers = new ArrayList<ByteBuffer>();
for (ColumnOrSuperColumn cosc : ks.getColumns())
{
tickers.add(cosc.getColumn().name);
tickerLookup.put(cosc.getColumn().name, ByteBufferUtil.toLong(cosc.getColumn().value));
}
Map<ByteBuffer, List<ColumnOrSuperColumn>> prices = getClient().multiget_slice(tickers, scp, sp,
ConsistencyLevel.ONE);
double total = 0;
double basis = 0;
Random r = new Random(Long.valueOf(new String(ks.getKey())));
for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> entry : prices.entrySet())
{
if (!entry.getValue().isEmpty())
{
Double price = Double.valueOf(ByteBufferUtil.string(entry.getValue().get(0).column.value));
Position s = new Position(ByteBufferUtil.string(entry.getKey()), price, tickerLookup.get(entry.getKey()));
p.addToConstituents(s);
total += price * tickerLookup.get(entry.getKey());
basis += r.nextDouble() * 100 * tickerLookup.get(entry.getKey());
}
}
p.setPrice(total);
p.setBasis(basis);
portfolios.add(p);
}
return portfolios;