/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.server.conversion;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.money.CurrencyAmount;
import com.opengamma.util.money.MultipleCurrencyAmount;
/**
*
*/
public class MultipleCurrencyAmountConverter implements ResultConverter<MultipleCurrencyAmount> {
private DoubleConverter _doubleConverter;
public MultipleCurrencyAmountConverter(DoubleConverter doubleConverter) {
_doubleConverter = doubleConverter;
}
@Override
public Object convertForDisplay(ResultConverterCache context, ValueSpecification valueSpec, MultipleCurrencyAmount value, ConversionMode mode) {
Map<String, Object> result = new HashMap<String, Object>();
int length = value.size();
result.put("summary", length);
if (mode == ConversionMode.FULL) {
Map<Object, Object> labelledValues = new LinkedHashMap<Object, Object>();
Iterator<CurrencyAmount> iter = value.iterator();
while (iter.hasNext()) {
CurrencyAmount ca = iter.next();
String label = ca.getCurrency().getCode();
Object currentLabel = context.convert(label, ConversionMode.SUMMARY);
Object currentValue = _doubleConverter.convertForDisplay(context, valueSpec, ca.getAmount(), ConversionMode.SUMMARY);
labelledValues.put(currentLabel, currentValue);
}
result.put("full", labelledValues);
}
return result;
}
@Override
public Object convertForHistory(ResultConverterCache context, ValueSpecification valueSpec, MultipleCurrencyAmount value) {
return null;
}
@Override
public String getFormatterName() {
return "LABELLED_MATRIX_1D";
}
@Override
public String convertToText(ResultConverterCache context, ValueSpecification valueSpec, MultipleCurrencyAmount value) {
return value.toString();
}
}