/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.aggregation;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.impl.SimplePositionComparator;
import com.opengamma.financial.security.FinancialSecurityUtils;
import com.opengamma.util.money.Currency;
/**
* Function to classify positions by Currency.
*
*/
public class CurrencyAggregationFunction implements AggregationFunction<String> {
private static final String NAME = "Currency";
private static final String NO_CURRENCY = "No or multiple currencies";
private final Comparator<Position> _comparator = new SimplePositionComparator();
@Override
public String classifyPosition(final Position position) {
try {
final Currency currency = FinancialSecurityUtils.getCurrency(position.getSecurity());
if (currency == null) {
return NO_CURRENCY;
}
return currency.toString();
} catch (final UnsupportedOperationException ex) {
return NO_CURRENCY;
}
}
@Override
public String getName() {
return NAME;
}
@Override
public Collection<String> getRequiredEntries() {
return Collections.emptyList();
}
@Override
public int compare(final String currency1, final String currency2) {
return currency1.compareTo(currency2);
}
@Override
public Comparator<Position> getPositionComparator() {
return _comparator;
}
}