rcdbquery/src/main/kotlin/de/pheerai/rcdbquery/dataMappings/RcdbParamOptionBuilder.kt

39 lines
1.1 KiB
Kotlin

package de.pheerai.rcdbquery.dataMappings
// TODO: Find way to only have one generic parameter
sealed class RcdbParamOptionBuilder<out U : Any, T : RcdbParamOption<U>> {
private val paramList: MutableList<T> = mutableListOf()
open fun add(param: T): RcdbParamOptionBuilder<U, T> {
paramList.add(param)
return this
}
fun build() = paramList.toList()
}
class VendorBuilder : RcdbParamOptionBuilder<Int, Vendor>() {
override fun add(param: Vendor): VendorBuilder {
super.add(param)
return this
}
fun of(vendor: Vendor) = this.add(vendor)
fun vekoma() = this.add(Vendor.VEKOMA)
fun intamin() = this.add(Vendor.INTAMIN)
fun mack() = this.add(Vendor.MACK)
fun bandm() = this.add(Vendor.B_AND_M)
fun gerstlauer() = this.add(Vendor.GERSTLAUER)
}
class OrderBuilder : RcdbParamOptionBuilder<Int, Order>() {
override fun add(param: Order): OrderBuilder {
super.add(param)
return this
}
fun of(order: Order) = this.add(order)
fun manufacturer() = this.add(Order.MANUFACTURER)
fun inversion() = this.add(Order.INVERSIONS)
}