package org.javamoney.examples.console.functional;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.money.CurrencyUnit;
import javax.money.MonetaryAmount;
import javax.money.Monetary;
import org.javamoney.moneta.Money;
import org.javamoney.moneta.function.GroupMonetarySummaryStatistics;
import org.javamoney.moneta.function.MonetaryFunctions;
import org.javamoney.moneta.function.MonetarySummaryStatistics;
public class MonetaryGroupOperations {
private static CurrencyUnit DOLLAR = Monetary.getCurrency(Locale.US);
private static CurrencyUnit EURO = Monetary.getCurrency("EUR");
public static void main(String[] args) {
Map<CurrencyUnit, List<MonetaryAmount>> groupBy = getCurrencies()
.stream().collect(MonetaryFunctions.groupByCurrencyUnit());
MonetarySummaryStatistics summary = getCurrencies().stream()
.filter(MonetaryFunctions.isCurrency(DOLLAR))
.collect(MonetaryFunctions.summarizingMonetary(DOLLAR));
GroupMonetarySummaryStatistics groupSummary = getCurrencies().stream()
.filter(MonetaryFunctions.isCurrency(DOLLAR))
.collect(MonetaryFunctions.groupBySummarizingMonetary());
System.out.println(groupBy);
System.out.println(summary.getMin());
System.out.println(summary.getMax());
System.out.println(summary.getAverage());
System.out.println(summary.getCount());
System.out.println(groupSummary);
}
public static List<MonetaryAmount> getCurrencies() {
List<MonetaryAmount> moneys = new ArrayList<>();
moneys.add(Money.of(120, DOLLAR));
moneys.add(Money.of(50, DOLLAR));
moneys.add(Money.of(80, DOLLAR));
moneys.add(Money.of(90, DOLLAR));
moneys.add(Money.of(120, DOLLAR));
moneys.add(Money.of(120, EURO));
moneys.add(Money.of(50, EURO));
moneys.add(Money.of(80, EURO));
moneys.add(Money.of(90, EURO));
moneys.add(Money.of(120, EURO));
return moneys;
}
}