Implemented CurrencySet

jimFirstDesign
Felix Stupp 6 years ago
parent 764d8dcd74
commit 2973716c78

@ -0,0 +1,40 @@
package de.banananetwork.dsa.currencies;
import java.util.*;
public class CurrencySet {
private final Currency[] currencies;
private CurrencySet(Currency[] currencies) {
this.currencies = currencies;
}
public Map<Currency, Integer> transferToSet(int baseValue) {
final Map<Currency, Integer> values = new EnumMap<>(Currency.class);
for (Currency currency : currencies) {
int value = currency.transferTo(baseValue);
values.put(currency, value);
baseValue -= currency.transferFrom(value);
}
if (baseValue != 0)
throw new RuntimeException(); // TODO Change to ValueNotRepresentableException
return values;
}
public static class Builder {
private List<Currency> currencies = new LinkedList<>();
public Builder add(Currency currency) {
this.currencies.add(currency);
return this;
}
public CurrencySet create() {
return new CurrencySet(currencies.stream().sorted(Comparator.comparing(Currency::getMultiplier).reversed()).toArray(Currency[]::new));
}
}
}
Loading…
Cancel
Save