1 package net.pterodactylus.rhynodge.queries
3 import net.pterodactylus.rhynodge.Query
4 import net.pterodactylus.rhynodge.State
5 import net.pterodactylus.rhynodge.states.FailedState
8 * [Query] that can run a number of other [Query]s, returning the first successful [State] that is encountered.
10 * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
12 class FallbackQuery(private vararg val queries: Query) : Query {
15 if (queries.isEmpty()) {
16 throw IllegalArgumentException("queries must not be empty")
20 override fun state(): State {
21 var lastFailedState: State = FailedState()
22 queries.asSequence().map(Query::state).forEach { lastFailedState = it; if (it.success()) return it }
23 return lastFailedState