Converted CurrencySet from Java to Kotlin
parent
2973716c78
commit
6438935f36
@ -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<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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package de.banananetwork.dsa.currencies
|
||||
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class CurrencySet private constructor(private val currencies: Array<Currency>) {
|
||||
|
||||
fun transferToSet(baseValue: Int): Map<Currency, Int> {
|
||||
var modBaseValue = baseValue
|
||||
val values = EnumMap<Currency, Int>(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<Currency>()
|
||||
|
||||
fun add(currency: Currency): Builder {
|
||||
currencies.add(currency)
|
||||
return this
|
||||
}
|
||||
|
||||
fun create(): CurrencySet {
|
||||
currencies.sortBy { it.multiplier }
|
||||
return CurrencySet(currencies.toTypedArray())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue