Add more search types:
- Classification - Status - Make some `order` params invisible for `all` params - Solved some order types
This commit is contained in:
parent
d2dc84a17b
commit
d8412c32f2
7 changed files with 115 additions and 15 deletions
|
@ -0,0 +1,27 @@
|
||||||
|
package de.pheerai.rcdbquery.dataMappings
|
||||||
|
|
||||||
|
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
||||||
|
|
||||||
|
enum class Classification(
|
||||||
|
override val prettyName: String,
|
||||||
|
override val fullName: String,
|
||||||
|
override val paramValue: Int
|
||||||
|
) : RcdbParamOption<Int> {
|
||||||
|
ROLLERCOASTER("Roller Coaster", 277),
|
||||||
|
POWERED_COASTER("Powered Coaster", 278),
|
||||||
|
MOUNTAIN_COASTER("Mountain Coaster", 279)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(name: String, paramValue: Int): this(name, name, paramValue)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val staticParamName = "cs";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun RcdbQueryParamsBuilder.classification(body: ClassificationBuilder.() -> ClassificationBuilder): RcdbQueryParamsBuilder {
|
||||||
|
val builder = ClassificationBuilder()
|
||||||
|
builder.body()
|
||||||
|
this[Classification.staticParamName] = builder.build()
|
||||||
|
return this
|
||||||
|
}
|
|
@ -6,11 +6,12 @@ import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
||||||
enum class Order(
|
enum class Order(
|
||||||
override val prettyName: String,
|
override val prettyName: String,
|
||||||
override val fullName: String,
|
override val fullName: String,
|
||||||
override val paramValue: Int
|
override val paramValue: Int,
|
||||||
) : RcdbParamOption<Int> {
|
override val relevantForAll: Boolean = false
|
||||||
|
) : RcdbParamOption<Int>, RelevantForAll {
|
||||||
IMAGES("Images", "Amount of Images", 0),
|
IMAGES("Images", "Amount of Images", 0),
|
||||||
NAME("Name", "Name of the Coaster", 1),
|
NAME("Name", "Name of the Coaster", 1),
|
||||||
ORIGINAL_NAME("Original Name", "Original name of the Coaster, in local charset", 2),
|
AKA("AKA", "Is/was also known as", 2, relevantForAll = false),
|
||||||
LOCATION("Location", 3),
|
LOCATION("Location", 3),
|
||||||
PARK("Park", 4),
|
PARK("Park", 4),
|
||||||
OPENED("Opened", "Opening Date", 8),
|
OPENED("Opened", "Opening Date", 8),
|
||||||
|
@ -21,9 +22,9 @@ enum class Order(
|
||||||
level = DeprecationLevel.WARNING,
|
level = DeprecationLevel.WARNING,
|
||||||
replaceWith = ReplaceWith("Order.STATE")
|
replaceWith = ReplaceWith("Order.STATE")
|
||||||
)
|
)
|
||||||
STATE_2("State", "Operational State (legacy)", 10),
|
STATE_2("State", "Operational State (legacy)", 10, relevantForAll = true),
|
||||||
ENTERED("Entered", 12),
|
ENTERED("Entered", 12),
|
||||||
TYPE("Type", "Constrcution Type (Wood, Steel)", 13),
|
TYPE("Type", "Construction Type (Wood, Steel)", 13),
|
||||||
DESIGN("Design", "Train Design (Sit-Down, Invert,...)", 14),
|
DESIGN("Design", "Train Design (Sit-Down, Invert,...)", 14),
|
||||||
CLASSIFICATION("Classification", "Coaster Classification (Coaster, Powered Coaster, Mountain Coaster)", 15),
|
CLASSIFICATION("Classification", "Coaster Classification (Coaster, Powered Coaster, Mountain Coaster)", 15),
|
||||||
LAYOUT("Layout", 16),
|
LAYOUT("Layout", 16),
|
||||||
|
@ -35,15 +36,15 @@ enum class Order(
|
||||||
LENGTH("Length", 22),
|
LENGTH("Length", 22),
|
||||||
ANGLE("Angle", 23),
|
ANGLE("Angle", 23),
|
||||||
INVERSIONS("Inversions", "Number of inversions", 24),
|
INVERSIONS("Inversions", "Number of inversions", 24),
|
||||||
SERIAL_NO("Serial", "Serial number", 25),
|
SERIAL_NO("Serial", "Serial number", 25, relevantForAll = false),
|
||||||
SCALE("Scale", "Thrill factor", 26),
|
SCALE("Scale", "Thrill factor", 26),
|
||||||
RIDE_TIME("Ride Time", 27),
|
RIDE_TIME("Ride Time", 27),
|
||||||
STATE("State", "Operational state", 29),
|
STATUS("Status", "Operational state", 29),
|
||||||
MANUFACTURER("Manufacturer", 30),
|
MANUFACTURER("Manufacturer", 30),
|
||||||
CLOSING("Closing", "(Future) closign date for temporary installations", 31)
|
CLOSING("Closing", "(Future) closign date for temporary installations", 31)
|
||||||
;
|
;
|
||||||
|
|
||||||
constructor(name: String, paramId: Int) : this(name, name, paramId)
|
constructor(name: String, paramId: Int, deprecated: Boolean = false) : this(name, name, paramId)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val staticParamName = "order"
|
const val staticParamName = "order"
|
||||||
|
|
|
@ -3,10 +3,8 @@ package de.pheerai.rcdbquery.dataMappings
|
||||||
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
||||||
|
|
||||||
class Page(override val paramValue: Int) : RcdbParamOption<Int> {
|
class Page(override val paramValue: Int) : RcdbParamOption<Int> {
|
||||||
override val fullName: String
|
override val fullName = "The page to show"
|
||||||
get() = "The page to show"
|
override val prettyName = "Page"
|
||||||
override val prettyName: String
|
|
||||||
get() = "Page"
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val staticParamName = "page"
|
const val staticParamName = "page"
|
||||||
|
|
|
@ -13,6 +13,10 @@ sealed class RcdbParamOptionBuilder<out U : Any, T : RcdbParamOption<U>> {
|
||||||
paramList.addAll(items)
|
paramList.addAll(items)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
protected open fun addAll(items: Collection<T>): RcdbParamOptionBuilder<U, T> {
|
||||||
|
paramList.addAll(items)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
fun build() = paramList.toList()
|
fun build() = paramList.toList()
|
||||||
}
|
}
|
||||||
|
@ -41,6 +45,10 @@ class OrderBuilder : RcdbParamOptionBuilder<Int, Order>() {
|
||||||
super.addAll(items)
|
super.addAll(items)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
override fun addAll(items: Collection<Order>): OrderBuilder {
|
||||||
|
super.addAll(items)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
fun of(order: Order) = this.add(order)
|
fun of(order: Order) = this.add(order)
|
||||||
fun manufacturer() = this.add(Order.MANUFACTURER)
|
fun manufacturer() = this.add(Order.MANUFACTURER)
|
||||||
|
@ -65,7 +73,30 @@ class OrderBuilder : RcdbParamOptionBuilder<Int, Order>() {
|
||||||
fun serialNo() = this.add(Order.SERIAL_NO)
|
fun serialNo() = this.add(Order.SERIAL_NO)
|
||||||
fun scale() = this.add(Order.SCALE)
|
fun scale() = this.add(Order.SCALE)
|
||||||
fun rideTime() = this.add(Order.RIDE_TIME)
|
fun rideTime() = this.add(Order.RIDE_TIME)
|
||||||
fun state() = this.add(Order.STATE)
|
fun state() = this.add(Order.STATUS)
|
||||||
fun closing() = this.add(Order.CLOSING)
|
fun closing() = this.add(Order.CLOSING)
|
||||||
fun all() = this.addAll(Order.values())
|
fun all() = this.addAll(Order.values().filterNot { it.relevantForAll })
|
||||||
|
}
|
||||||
|
|
||||||
|
class StatusBuilder : RcdbParamOptionBuilder<Int, Status>() {
|
||||||
|
override fun add(param: Status): StatusBuilder {
|
||||||
|
super.add(param)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sbno() = this.add(Status.SBNO)
|
||||||
|
fun operating() = this.add(Status.OPERATING)
|
||||||
|
fun underConstruction() = this.add(Status.UNDER_CONSTRUCTION)
|
||||||
|
fun stored() = this.add(Status.STORED)
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassificationBuilder : RcdbParamOptionBuilder<Int, Classification>() {
|
||||||
|
override fun add(param: Classification): ClassificationBuilder {
|
||||||
|
super.add(param)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun rollerCoaster() = this.add(Classification.ROLLERCOASTER)
|
||||||
|
fun poweredCoaster() = this.add(Classification.POWERED_COASTER)
|
||||||
|
fun mountainCoaster() = this.add(Classification.MOUNTAIN_COASTER)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package de.pheerai.rcdbquery.dataMappings
|
||||||
|
|
||||||
|
interface RelevantForAll {
|
||||||
|
val relevantForAll: Boolean
|
||||||
|
}
|
|
@ -4,9 +4,10 @@ package de.pheerai.rcdbquery.dataMappings
|
||||||
|
|
||||||
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
||||||
|
|
||||||
class StartsWith(override val paramValue: String): RcdbParamOption<String> {
|
class StartsWith(override val paramValue: String) : RcdbParamOption<String> {
|
||||||
override val prettyName = "Starts with"
|
override val prettyName = "Starts with"
|
||||||
override val fullName = "Name starting with term"
|
override val fullName = "Name starting with term"
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val staticParamName = "nl"
|
const val staticParamName = "nl"
|
||||||
}
|
}
|
||||||
|
|
37
src/main/kotlin/de/pheerai/rcdbquery/dataMappings/Status.kt
Normal file
37
src/main/kotlin/de/pheerai/rcdbquery/dataMappings/Status.kt
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
package de.pheerai.rcdbquery.dataMappings
|
||||||
|
|
||||||
|
import de.pheerai.rcdbquery.dsl.RcdbQueryParamsBuilder
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
enum class Status(
|
||||||
|
override val prettyName: String,
|
||||||
|
override val fullName: String,
|
||||||
|
override val paramValue: Int
|
||||||
|
) : RcdbParamOption<Int> {
|
||||||
|
SBNO("SBNO", "Standing, but not operating", 311),
|
||||||
|
OPERATING("Operating", "In operation", 93),
|
||||||
|
UNDER_CONSTRUCTION("Under Construction", 310),
|
||||||
|
STORED("Stored", "In storage", 312)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(name: String, paramId: Int) : this(name, name, paramId)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val staticParamName = "st"
|
||||||
|
|
||||||
|
fun of(input: String) = when(input) {
|
||||||
|
"SBNO" -> SBNO
|
||||||
|
"Operating" -> OPERATING
|
||||||
|
"Under Construction" -> UNDER_CONSTRUCTION
|
||||||
|
"In Storage" -> STORED
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun RcdbQueryParamsBuilder.status(body: StatusBuilder.() -> StatusBuilder): RcdbQueryParamsBuilder {
|
||||||
|
val builder = StatusBuilder()
|
||||||
|
builder.body()
|
||||||
|
this[Status.staticParamName] = builder.build()
|
||||||
|
return this
|
||||||
|
}
|
Loading…
Reference in a new issue