1 package com.android.onboarding.bedsteadonboarding.queryable 2 3 import com.android.onboarding.nodes.OnboardingGraphNode 4 import com.android.queryable.Queryable 5 import com.android.queryable.queries.BooleanQuery 6 import com.android.queryable.queries.LongQuery 7 import com.android.queryable.queries.Query 8 import com.android.queryable.queries.StringQuery 9 10 /** 11 * Query for onboarding graph nodes. 12 */ 13 interface NodeQuery<E: Queryable>: Query<OnboardingGraphNode> { 14 /** Query a node based on its [id]. */ idnull15 fun id(): LongQuery<E> 16 17 /** Query a node based on its [name]. */ 18 fun name(): StringQuery<E> 19 20 /** Query a node based on its [component]. */ 21 fun component(): ComponentQuery<E> 22 23 /** 24 * Query for a started node. This query must have an [id], [name], or [component] filter 25 * as well. 26 */ 27 fun isStarted(): BooleanQuery<E> 28 29 /** 30 * Query for a finished node. This query must have an [id], [name], or [component] filter 31 * as well. 32 */ 33 fun isFinished(): BooleanQuery<E> 34 35 /** 36 * Query for a failed node. This query must have an [id], [name], or [component] filter 37 * as well. 38 */ 39 fun isFailed(): BooleanQuery<E> 40 41 /** Query for all nodes that started before the specified [node]. */ 42 fun happenedBefore(node: OnboardingGraphNode): NodeSequenceQuery<E> 43 44 /** Query for all nodes that started after the specified [node]. */ 45 fun happenedAfter(node: OnboardingGraphNode): NodeSequenceQuery<E> 46 } 47