diff --git a/src/de/banananetwork/dsa/currencies/CurrencySet.java b/src/de/banananetwork/dsa/currencies/CurrencySet.java deleted file mode 100644 index d7b6276..0000000 --- a/src/de/banananetwork/dsa/currencies/CurrencySet.java +++ /dev/null @@ -1,40 +0,0 @@ -package de.banananetwork.dsa.currencies; - -import java.util.*; - -public class CurrencySet { - - private final Currency[] currencies; - - private CurrencySet(Currency[] currencies) { - this.currencies = currencies; - } - - public Map transferToSet(int baseValue) { - final Map 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 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)); - } - - } - -} diff --git a/src/de/banananetwork/dsa/currencies/CurrencySet.kt b/src/de/banananetwork/dsa/currencies/CurrencySet.kt new file mode 100644 index 0000000..6298442 --- /dev/null +++ b/src/de/banananetwork/dsa/currencies/CurrencySet.kt @@ -0,0 +1,37 @@ +package de.banananetwork.dsa.currencies + +import java.util.* +import kotlin.collections.ArrayList + +class CurrencySet private constructor(private val currencies: Array) { + + fun transferToSet(baseValue: Int): Map { + var modBaseValue = baseValue + val values = EnumMap(Currency::class.java) + for (currency in currencies) { + val value = currency.transferTo(modBaseValue) + values[currency] = value + modBaseValue -= currency.transferFrom(value) + } + if (modBaseValue != 0) + throw RuntimeException() // TODO Change to ValueNotRepresentableException + return values + } + + class Builder { + + private val currencies = ArrayList() + + fun add(currency: Currency): Builder { + currencies.add(currency) + return this + } + + fun create(): CurrencySet { + currencies.sortBy { it.multiplier } + return CurrencySet(currencies.toTypedArray()) + } + + } + +}